@datagrok/peptides 1.9.2 → 1.11.3
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/CHANGELOG.md +81 -0
- package/dist/209.js +2 -0
- package/dist/521.js +2 -0
- package/dist/535.js +2 -0
- package/dist/729.js +2 -0
- package/dist/959.js +2 -0
- package/dist/package-test.js +2 -2
- package/dist/package.js +2 -2
- package/package.json +13 -11
- package/setup-unlink-clean.sh +0 -0
- package/src/model.ts +302 -232
- package/src/package-test.ts +2 -1
- package/src/package.ts +14 -16
- package/src/tests/algorithms.ts +4 -1
- package/src/tests/core.ts +100 -14
- package/src/tests/model.ts +16 -14
- package/src/tests/peptide-space-test.ts +7 -7
- package/src/tests/table-view.ts +63 -54
- package/src/tests/utils.ts +1 -1
- package/src/tests/viewers.ts +40 -6
- package/src/tests/widgets.ts +100 -18
- package/src/utils/cell-renderer.ts +38 -20
- package/src/utils/constants.ts +3 -0
- package/src/utils/misc.ts +44 -12
- package/src/utils/peptide-similarity-space.ts +3 -4
- package/src/utils/statistics.ts +2 -2
- package/src/utils/types.ts +3 -1
- package/src/viewers/logo-summary.ts +132 -140
- package/src/viewers/peptide-space-viewer.ts +2 -1
- package/src/viewers/sar-viewer.ts +46 -39
- package/src/widgets/distribution.ts +17 -17
- package/src/widgets/mutation-cliffs.ts +91 -19
- package/src/widgets/peptides.ts +12 -13
- package/src/widgets/settings.ts +47 -25
- package/src/widgets/similarity.ts +39 -0
- package/dist/168.js +0 -2
- package/dist/478.js +0 -2
- package/dist/802.js +0 -2
- package/dist/951.js +0 -2
package/dist/729.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var peptides;(()=>{"use strict";var t,e,r={1040:(t,e,r)=>{var n,s,i,o,a;r.d(e,{CF:()=>s,Qe:()=>o,W:()=>n,Yc:()=>a,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",t.Number="Number"}(o||(o={})),function(t){t.NumericDistance="NumericDistance"}(a||(a={}))},1729:(t,e,r)=>{var n=r(4221),s=r(7659),i=r(3659);function o(t){return Math.random()*t}function a(t){return Math.floor(o(t))}function h(t=!1,e="Assertion error."){if(!t)throw new Error(e)}function l(t,e,r=1){const n=t.length;h(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 u(t,e,r=1){const n=function(t,e,r=0){return new Array(t).fill(r).map((()=>new i.OW(e).fill(r)))}(t,e);for(let s=0;s<t;++s)for(let t=0;t<e;++t)n[s][t]=o(r);return n}function c(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}(l(t,e,-1)));return Math.sqrt(r)}function f(t){return(e,r)=>t*e+r-Math.floor((e+2)*(e+1)/2)}class g{constructor(t=!0,e=!0){const n=navigator.hardwareConcurrency;this._workerCount=t?Math.max(n-2,1):1,this._workers=new Array(this._workerCount).fill(null).map((()=>new Worker(new URL(r.p+r.u(959),r.b)))),this._terminateOnComplete=e}async calc(t,e,r=!0){return new Promise((async(n,s)=>{try{const s=t.length,i=new Array(this._workerCount),o=s*(s-1)/2;this._workerCount=Math.min(this._workerCount,o);const a=o/this._workerCount,h=new Float32Array(o);let l=0,u=1,c=0,f=Number.MIN_VALUE;for(let r=0;r<this._workerCount;r++){const n=Math.floor(r*a),g=r===this._workerCount-1?o:Math.floor((r+1)*a),m=l,d=u;r!==this._workerCount-1&&(l=s-2-Math.floor(Math.sqrt(-8*g+4*s*(s-1)-7)/2-.5),u=g-s*l+Math.floor((l+1)*(l+2)/2)),this._workers[r].postMessage({values:t,fnName:e,startRow:m,startCol:d,chunckSize:g-n}),i[r]=new Promise(((t,e)=>{this._workers[r].onmessage=({data:{error:s,distanceMatrixData:i,min:o,max:a}})=>{this._terminateOnComplete&&this._workers[r].terminate(),s?e(s):(h.set(i,n),o<c&&(c=o),a>f&&(f=a),t())}}))}await Promise.all(i),r&&h.forEach(((t,e)=>{h[e]=(t-c)/(f-c)})),n(h)}catch(t){s(t)}}))}terminate(){this._workers.forEach((t=>t.terminate()))}}class m{constructor(t){this.steps=t?.steps??0,this.cycles=t?.cycles??1e6,this.cutoff=t?.cutoff??0,this.lambda=t?.lambda??2,this.dlambda=t?.dlambda??.01,this.lambda2=this.lambda/2,this.dlambda2=this.dlambda/2,this.epsilon=t?.epsilon??1e-10,this.distanceFunction=t?.distance??c,this.distance=new Float32Array,this.distanceFunctionName=t?.distanceFunctionName}async initDistance(t){this.dmIndexFunct=f(t.length);const e=new g(!0,!1);this.distance=await e.calc(t,this.distanceFunctionName),e.terminate()}calcDistance(t,e,r){return this.distance[this.dmIndexFunct(e,r)]}async embed(t){const e=t.length,r=u(e,m.dimension,40);let n=this.lambda2;0===this.steps&&(this.steps=t.length-1),await this.initDistance(t);for(let s=0;s<this.cycles;++s){for(let s=0;s<this.steps;++s){const s=a(e);let i=a(e);for(;s==i;)i=a(e);const o=r[s],h=r[i],u=this.calcDistance(t,s,i),f=c(o,h);if(0==this.cutoff||u<=this.cutoff||f<u){const t=n*(u-f)/(f+this.epsilon),e=l(o,h,-1);r[s]=l(o,e,t),r[i]=l(h,e,-t)}}if(n-=this.dlambda2,n<=0)break}return r}}m.dimension=2;class d extends m{async embed(t){const e=t.length,r=u(e,d.dimension,40);let n=this.lambda;await this.initDistance(t);for(let s=0;s<this.cycles;++s){const s=a(e),i=r[s];for(let o=0;o<e;++o){if(s==o)continue;const e=r[o],a=this.calcDistance(t,s,o),h=c(i,e);if(0==this.cutoff||a<=this.cutoff||h<a){const t=n*(a-h)/(h+this.epsilon),s=l(i,e,-1);r[o]=l(e,s,-t)}}if(n-=this.dlambda,n<=0)break}return r}}class p extends m{constructor(t){super(t),this.cycles=t?.cycles??1e3,this.steps=t?.steps??1e5,this.radiusPercent=t?.radiusPercent??1,this.maxDistance=t?.maxDistance??null,this.maxDistanceSteps=t?.maxDistanceSteps??null}async embed(t){const e=t.length,r=u(e,p.dimension,40);if(await 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=a(e);let n=a(e);for(;r==n;)n=a(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=a(e);let o=a(e);for(;i==o;)o=a(e);const h=r[i],u=r[o],f=this.calcDistance(t,i,o),g=c(h,u);if(f<=s||g<f){const t=.5*n*(f-g)/(g+this.epsilon),e=l(h,u,-1);r[i]=l(h,e,t),r[o]=l(u,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 _={[M.CF.Euclidean]:c},x={[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}}},S={[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.Yc.NumericDistance]:v.bX},k={[M.Qe.Vector]:{[M.CF.Euclidean]:_[M.CF.Euclidean]},[M.Qe.String]:{[M.W.Levenshtein]:x[M.W.Levenshtein],[M.W.JaroWinkler]:x[M.W.JaroWinkler],[M.W.Manhattan]:x[M.W.Manhattan]},[M.Qe.BitArray]:{[M.gk.Tanimoto]:S[M.gk.Tanimoto],[M.gk.Dice]:S[M.gk.Dice],[M.gk.Asymmetric]:S[M.gk.Asymmetric],[M.gk.BraunBlanquet]:S[M.gk.BraunBlanquet],[M.gk.Cosine]:S[M.gk.Cosine],[M.gk.Kulczynski]:S[M.gk.Kulczynski],[M.gk.McConnaughey]:S[M.gk.McConnaughey],[M.gk.RogotGoldberg]:S[M.gk.RogotGoldberg],[M.gk.Russel]:S[M.gk.Russel],[M.gk.Sokal]:S[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]},[M.Qe.Number]:{[M.Yc.NumericDistance]:E[M.Yc.NumericDistance]}},N=Object.keys(k).reduce(((t,e)=>{for(const r of Object.keys(k[e]))t[r]=e;return t}),{});class R{constructor(t){this.method=t,this.dataType=N[t]}getMeasure(t){const e=k;if(!e.hasOwnProperty(this.dataType)||!e[this.dataType].hasOwnProperty(this.method))throw new Error(`Unknown measure ${this.method} for data type ${this.dataType}`);return r=this.method,N[r]==M.Qe.MacroMolecule.toString()?e[this.dataType][this.method](t):e[this.dataType][this.method];var r}static getMetricByDataType(t){return Object.keys(k[t])}static get availableMeasures(){return Object.keys(k)}}class I{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=I._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 I(t._length);r._length=t._length,r._data=I._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 I(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 I(t);for(let n=0;n<t;++n)r.setBit(n,e(n));return r._version=0,r}static fromString(t){return I.fromSeq(t.length,(e=>"1"==t.charAt(e)))}static fromUint32Array(t,e){const r=new I(t);return r._data=e,r}static fromBytes(t){const e=t.length,r=new I(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 I(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 I.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+=I._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+=I._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+=I._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+=I._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=I._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=I._lastOnBit[t>>>24];if(r>=0)return r+32*n+e}}return-1}}I._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]),I._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]),I._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]);var z,A=r(6814);class F{get data(){return this._data}get size(){return this._size}constructor(t,e){if(null==e){if(null==t)throw new Error("Arguments error: data or size is required.");if(this._data=t,this._size=(1+Math.sqrt(1+8*this._data.length))/2,this._size!=Math.floor(this._size))throw new Error(`Invalid data length ${this._data.length} leads to non integer size ${this._size}`)}else{this._size=e;const r=e*(e-1)/2;if(t){if(t.length!=r)throw new Error(`Invalid data length. Observations size ${e} requires data length ${r}.`);this._data=t}else this._data=new Float32Array(r)}}_linearizeIJ(t,e){if(!(t<e))throw new Error("i must be less than j");return this._size*t+e-Math.floor((t+2)*(t+1)/2)}get(t,e){return t==e?0:t<e?this._data[this._linearizeIJ(t,e)]:this._data[this._linearizeIJ(e,t)]}set(t,e,r){this._data[this._linearizeIJ(t,e)]=r}static calc(t,e){const r=t.length,n=new F(void 0,r);for(let s=0;s<r;s++)for(let i=s+1;i<r;i++)n.set(s,i,(0,A.k)(t[s])||(0,A.k)(t[i])?1:e(t[s],t[i]));return n}square(){for(let t=0;t<this._data.length;t++)this._data[t]=this._data[t]**2}add(t){if(this._size!==t._size)throw new Error(`Matrices must have the same size. This size: ${this._size}, other size: ${t._size}`);for(let e=0;e<this._data.length;e++)this._data[e]+=t._data[e]}sqrt(){for(let t=0;t<this._data.length;t++)this._data[t]=Math.sqrt(this._data[t])}normalize(){let t=0,e=this._data[0];for(let r=0;r<this._data.length;r++)this._data[r]<t&&(t=this._data[r]),this._data[r]>e&&(e=this._data[r]);const r=e-t;for(let n=0;n<this._data.length;n++)this._data[n]=0===r?this._data[n]-t:(this._data[n]-t)/(e-t)}}!function(t){t.UMAP="UMAP",t.T_SNE="t-SNE"}(z||(z={}));class C{constructor(t){this.data=t.data}}const T={UMAP:class extends C{constructor(t){super(t),h("distanceFname"in t),h("distanceFn"in t),this.distanceFn=t.distanceFn,this.distanceFname=t.distanceFname,this.dmIndexFunc=f(this.data.length),this.vectors=new Array(this.data.length).fill(0).map(((t,e)=>[e])),this.usingDistanceMatrix=!(!t.preCalculateDistanceMatrix&&this.data.length>2e4),this.usingDistanceMatrix?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 t[0]===e[0]?0:t[0]>e[0]?this.distanceMatrix[this.dmIndexFunc(e[0],t[0])]:this.distanceMatrix[this.dmIndexFunc(t[0],e[0])]}_encodedDistance(t,e){return this.distanceFn(this.data[t[0]],this.data[e[0]])}async transform(t){this.usingDistanceMatrix&&(this.distanceMatrix=t?await(async()=>{const t=new g(!0,!1);try{const e=await t.calc(this.data,this.distanceFname);return t.terminate(),e}catch(e){throw t.terminate(),e}})():(()=>F.calc(this.data,((t,e)=>this.distanceFn(t,e))).data)());const e=this.reducer.fit(this.vectors);return{embedding:(r=e,new Array(r.length).fill(0).map(((t,e)=>i.OW.from(r[e])))),...this.distanceMatrix?{distance:this.distanceMatrix}:{}};var r}},"t-SNE":class extends C{constructor(t){super(t),this.reducer=new s.Z(t),this.iterations=t?.iterations??100,this.distanceFname=t.distanceFname,this.distanceFn=t.distanceFn}async transform(t){const e=t?await(async()=>{const t=new g(!0,!1);try{const e=await t.calc(this.data,this.distanceFname);return t.terminate(),e}catch(e){throw t.terminate(),e}})():(()=>{const t=F.calc(this.data,((t,e)=>this.distanceFn(t,e)));return t.normalize(),t.data})(),r=function(t,e){const r=f(e);function n(t,e){const n=Number(t),s=Number(e);return r(n,s)}const s={get:(t,r,s)=>"length"===r?e:new Proxy(t,function(t){return{get:(e,r,s)=>t===r?0:e[Number(t)>Number(r)?n(r,t):n(t,r)]}}(r))};return new Proxy(t,s)}(e,this.data.length);this.reducer.initDataDist(r);for(let t=0;t<this.iterations;++t)this.reducer.step();return{distance:e,embedding:this.reducer.getSolution()}}},SPE:class extends C{constructor(t){super(t),this.reducer=new m(t)}async transform(){const t=await this.reducer.embed(this.data);return{distance:this.reducer.distance,embedding:t}}},pSPE:class extends C{constructor(t){super(t),this.reducer=new d(t)}async transform(){const t=await this.reducer.embed(this.data);return{distance:this.reducer.distance,embedding:t}}},OriginalSPE:class extends C{constructor(t){super(t),this.reducer=new p(t)}async transform(){const t=await this.reducer.embed(this.data);return{distance:this.reducer.distance,embedding:t}}}};class P{constructor(t,e,r,n){const s=new R(r).getMeasure();let i={};if("BitArray"==N[r])for(let e=0;e<t.length;++e)t[e]=new I(t[e]._data,t[e]._length);i="UMAP"==e?{data:t,distanceFn:s,distanceFname:r,nEpochs:n?.cycles,...n}:"t-SNE"==e?{data:t,distanceFn:s,distanceFname:r,iterations:n?.cycles??void 0,...n}:{data:t,distance:s,distanceFunctionName:r,...n},this.reducer=new T[e](i)}async transform(t=!1,e){if(void 0===this.reducer)throw new Error("Reducer was not defined.");let{embedding:r,distance:n}=await this.reducer.transform(e);var s;return t&&(s=r,r=new Array(s[0].length).fill(0).map(((t,e)=>new i.OW(s.length).fill(0).map(((t,r)=>s[r][e]))))),{distance:n,embedding:r}}static availableMetricsByType(t){return Object.keys(k[t])}static get availableMethods(){return Object.keys(T)}static get availableMetrics(){let t=[];return Object.values(k).forEach((e=>{const r=Object.values(e);t=[...t,...r]})),t}}self.onmessage=async({data:{columnData:t,method:e,measure:r,options:n,parallelDistanceWorkers:s}})=>{let i;try{i=await async function(t,e,r,n,s){const i=new P(t,e,r,n);return await i.transform(!0,s)}(t,e,r,n,s)}catch(t){i={error:t}}self.postMessage({error:i.error,distance:i.distance,embedding:i.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),a=this.zeros(s);for(let e=0;e<s;e++){let n=-1/0,h=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),a[r]=n,o+=n}let g=0;for(let t=0;t<s;t++){let e;e=0===o?0:a[t]/o,a[t]=e,e>1e-7&&(g-=e*Math.log(e))}g>i?(n=l,h===1/0?l*=2:l=(l+h)/2):(h=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]=a[t]}const h=this.zeros(s*s),l=2*s;for(let t=0;t<s;t++)for(let e=0;e<s;e++)h[t*s+e]=Math.max((o[t*s+e]+o[e*s+t])/l,1e-100);return h}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 a=this.sign(r)===this.sign(i)?.8*o:o+.2;a<.01&&(a=.01),this.gains[e][t]=a;const h=(this.iter<250?.5:.8)*i-this.epsilon*a*n[e][t];this.ystep[e][t]=h,this.Y[e][t]+=h,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),a=r[e][t],h=(i.cost-o.cost)/(2*n);console.log(e+","+t+": gradcheck analytic: "+a+" vs. numerical: "+h),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 a=0;for(let e=0;e<r;e++){const r=t[n][e]-t[s][e];a+=r*r}const h=1/(1+a);i[n*e+s]=h,i[s*e+n]=h,o+=2*h}const a=e*e,h=this.zeros(a);for(let t=0;t<a;t++)h[t]=Math.max(i[t]/o,1e-100);let l=0;const u=[];for(let o=0;o<e;o++){const a=new Array(r);for(let t=0;t<r;t++)a[t]=0;for(let u=0;u<e;u++){l+=-n[o*e+u]*Math.log(h[o*e+u]);const c=4*(s*n[o*e+u]-h[o*e+u])*i[o*e+u];for(let e=0;e<r;e++)a[e]+=c*(t[o][e]-t[u][e])}u.push(a)}return{cost:l,grad:u}}}},9251:(t,e,r)=>{r.r(e),r.d(e,{default:()=>P});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 a(t){const e=o.call(t);return e.endsWith("Array]")&&!e.includes("Big")}const h=Object.prototype.toString;function l(t){const e=h.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],a=n+1;a<i;a++)t[a]<o&&(o=t[a]);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],a=n+1;a<i;a++)t[a]>o&&(o=t[a]);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,a=r.max,h=void 0===a?r.autoMinMax?s:1:a;if(o>=h)throw new RangeError("min option must be smaller than max option");for(var f=(h-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 d(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,a=Math.min(i,e),h=Math.min(o,r),l=[];if("auto"===s){s=!1;t:for(let e=0;e<a;e++)for(let r=0;r<h;r++)if(t.get(e,r)<0){s=!0;break t}}for(let e=0;e<a;e++){let r=[];for(let i=0;i<h;i++)r.push(p(t.get(e,i),n,s));l.push(`${r.join(" ")}`)}return h!==o&&(l[l.length-1]+=` ... ${o-r} more columns`),a!==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 p(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 _(t,e,r,n,s){if(5!==arguments.length)throw new RangeError("expected 4 arguments");if(S("startRow",e),S("endRow",r),S("startColumn",n),S("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 x(t,e=0){let r=[];for(let n=0;n<t;n++)r.push(e);return r}function S(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,a=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);a.set(r,t,e)}return a}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),a=t.get(1,0),h=this.get(1,1),l=t.get(1,1),u=(r+h)*(n+l),c=(o+h)*n,f=r*(i-l),g=h*(a-n),m=(r+s)*l,d=u+g-m+(s-h)*(a+l),p=f+m,w=c+g,y=u-c+f+(o-r)*(n+i);return e.set(0,0,d),e.set(0,1,p),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),a=this.get(1,2),h=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),d=t.get(1,1),p=t.get(1,2),w=t.get(2,0),y=t.get(2,1),v=t.get(2,2),b=(r-i)*(-f+d),M=(-r+i+o)*(c-f+d),_=(i+o)*(-c+f),x=r*c,S=(-r+h+l)*(c-g+p),E=(-r+h)*(g-p),k=(h+l)*(-c+g),N=(-s+l+u)*(d+w-y),I=(s-u)*(d-y),z=s*w,A=(l+u)*(-w+y),F=(-s+o+a)*(p+w-v),C=(s-a)*(p-v),T=(o+a)*(-w+v),P=x+z+n*m,D=(r+n+s-i-o-l-u)*d+M+_+x+N+z+A,V=x+S+k+(r+n+s-o-a-h-l)*p+z+F+T,O=b+o*(-c+f+m-d-p-w+v)+M+x+z+F+C,j=b+M+_+x+a*y,B=z+F+C+T+i*g,q=x+S+E+l*(-c+g+m-d-p-w+y)+N+I+z,L=N+I+z+A+h*f,$=x+S+E+k+u*v;return e.set(0,0,P),e.set(0,1,D),e.set(0,2,V),e.set(1,0,O),e.set(1,1,j),e.set(1,2,B),e.set(2,0,q),e.set(2,1,L),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 a=Math.max(r,s),h=Math.max(n,i);return e=o(e,a,h),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),a=parseInt(e.columns/2,10),h=e.subMatrix(0,i-1,0,a-1),l=r.subMatrix(0,i-1,0,a-1),u=e.subMatrix(0,i-1,a,e.columns-1),c=r.subMatrix(0,i-1,a,r.columns-1),f=e.subMatrix(i,e.rows-1,0,a-1),g=r.subMatrix(i,r.rows-1,0,a-1),m=e.subMatrix(i,e.rows-1,a,e.columns-1),d=r.subMatrix(i,r.rows-1,a,r.columns-1),p=t(k.add(h,m),k.add(l,d),i,a),w=t(k.add(f,m),l,i,a),y=t(h,k.sub(c,d),i,a),v=t(m,k.sub(g,l),i,a),b=t(k.add(h,u),d,i,a),M=t(k.sub(f,h),k.add(l,c),i,a),_=t(k.sub(u,m),k.add(g,d),i,a),x=k.add(p,v);x.sub(b),x.add(_);let S=k.add(y,b),E=k.add(w,v),N=k.sub(p,w);N.add(y),N.add(M);let R=k.zeros(2*x.rows,2*x.columns);return R=R.setSubMatrix(x,0,0),R=R.setSubMatrix(S,x.rows,0),R=R.setSubMatrix(E,0,x.columns),R=R.setSubMatrix(N,x.rows,x.columns),R.subMatrix(0,n-1,0,s-1)}(e,t=o(t,a,h),a,h)}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 a=0;a<s;a++)i.set(n*o+r,s*e+a,this.get(o,e)*t.get(r,a));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){_(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;_(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(!a(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(!a(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=x(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=x(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=x(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=x(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(!a(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,a=0,h=0;for(let e=0;e<s;e++)h=t.get(o,e)-r[o],n+=h,a+=h*h;e?i.push((a-n*n/s)/(s-1)):i.push((a-n*n/s)/s)}return i}(this,r,n);case"column":if(!a(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,a=0,h=0;for(let e=0;e<n;e++)h=t.get(e,o)-r[o],s+=h,a+=h*h;e?i.push((a-s*s/n)/(n-1)):i.push((a-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,a=0,h=0;for(let e=0;e<n;e++)for(let n=0;n<s;n++)h=t.get(e,n)-r,o+=h,a+=h*h;return e?(a-o*o/i)/(i-1):(a-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(!a(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(!a(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(!a(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(!a(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 d(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 d(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(!a(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 z{constructor(t){let e,r,n,s,i,o,a,h,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(h=new Float64Array(c),r=0;r<f;r++){for(e=0;e<c;e++)h[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)*h[n];h[e]-=i,u.set(e,r,h[e])}for(s=r,e=r+1;e<c;e++)Math.abs(h[e])>Math.abs(h[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);a=g[s],g[s]=g[r],g[r]=a,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),a=e.columns;for(s=0;s<a;s++)for(r=s+1;r<a;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=a-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 A(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 F{constructor(t){let e,r,n,s,i=(t=I.checkMatrix(t)).clone(),o=t.rows,a=t.columns,h=new Float64Array(a);for(n=0;n<a;n++){let t=0;for(e=n;e<o;e++)t=A(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<a;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))}}h[n]=-t}this.QR=i,this.Rdiag=h}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,a=t.columns,h=t.clone(),l=e.columns;for(i=0;i<l;i++)for(s=0;s<a;s++){for(o=0,n=i;n<r;n++)o+=e.get(n,i)*h.get(n,s);for(o=-o/e.get(i,i),n=i;n<r;n++)h.set(n,s,h.get(n,s)+o*e.get(n,i))}for(i=l-1;i>=0;i--){for(s=0;s<a;s++)h.set(i,s,h.get(i,s)/this.Rdiag[i]);for(n=0;n<i;n++)for(s=0;s<a;s++)h.set(n,s,h.get(n,s)-h.get(i,s)*e.get(n,i))}return h.subMatrix(0,l-1,0,a-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,a=new R(i,o);for(r=o-1;r>=0;r--){for(t=0;t<i;t++)a.set(t,r,0);for(a.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)*a.get(t,e);for(n=-n/s.get(r,r),t=r;t<i;t++)a.set(t,e,a.get(t,e)+n*s.get(t,r))}}return a}}class C{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 a,h=Boolean(s),l=Boolean(i),u=!1;if(r<n)if(o){a=t.transpose(),r=a.rows,n=a.columns,u=!0;let e=h;h=l,l=e}else a=t.clone(),console.warn("Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose");else a=t.clone();let c=Math.min(r,n),f=Math.min(r+1,n),g=new Float64Array(f),m=new R(r,c),d=new R(n,n),p=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]=A(g[t],a.get(e,t));if(0!==g[t]){a.get(t,t)<0&&(g[t]=-g[t]);for(let e=t;e<r;e++)a.set(e,t,a.get(e,t)/g[t]);a.set(t,t,a.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+=a.get(s,t)*a.get(s,e);n=-n/a.get(t,t);for(let s=t;s<r;s++)a.set(s,e,a.get(s,e)+n*a.get(s,t))}p[e]=a.get(t,e)}if(h&&t<v)for(let e=t;e<r;e++)m.set(e,t,a.get(e,t));if(t<b){p[t]=0;for(let e=t+1;e<n;e++)p[t]=A(p[t],p[e]);if(0!==p[t]){p[t+1]<0&&(p[t]=0-p[t]);for(let e=t+1;e<n;e++)p[e]/=p[t];p[t+1]+=1}if(p[t]=-p[t],t+1<r&&0!==p[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]+=p[r]*a.get(e,r);for(let e=t+1;e<n;e++){let n=-p[e]/p[t+1];for(let s=t+1;s<r;s++)a.set(s,e,a.get(s,e)+n*w[s])}}if(l)for(let e=t+1;e<n;e++)d.set(e,t,p[e])}}let _=Math.min(n,r+1);if(v<n&&(g[v]=a.get(v,v)),r<_&&(g[_-1]=0),b+1<_&&(p[b]=a.get(b,_-1)),p[_-1]=0,h){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!==p[t])for(let e=t+1;e<n;e++){let r=0;for(let s=t+1;s<n;s++)r+=d.get(s,t)*d.get(s,e);r=-r/d.get(t+1,t);for(let s=t+1;s<n;s++)d.set(s,e,d.get(s,e)+r*d.get(s,t))}for(let e=0;e<n;e++)d.set(e,t,0);d.set(t,t,1)}let x=_-1,S=0,E=Number.EPSILON;for(;_>0;){let t,e;for(t=_-2;t>=-1&&-1!==t;t--){const e=Number.MIN_VALUE+E*Math.abs(g[t]+Math.abs(g[t+1]));if(Math.abs(p[t])<=e||Number.isNaN(p[t])){p[t]=0;break}}if(t===_-2)e=4;else{let r;for(r=_-1;r>=t&&r!==t;r--){let e=(r!==_?Math.abs(p[r]):0)+(r!==t+1?Math.abs(p[r-1]):0);if(Math.abs(g[r])<=E*e){g[r]=0;break}}r===t?e=3:r===_-1?e=1:(e=2,t=r)}switch(t++,e){case 1:{let e=p[_-2];p[_-2]=0;for(let r=_-2;r>=t;r--){let s=A(g[r],e),i=g[r]/s,o=e/s;if(g[r]=s,r!==t&&(e=-o*p[r-1],p[r-1]=i*p[r-1]),l)for(let t=0;t<n;t++)s=i*d.get(t,r)+o*d.get(t,_-1),d.set(t,_-1,-o*d.get(t,r)+i*d.get(t,_-1)),d.set(t,r,s)}break}case 2:{let e=p[t-1];p[t-1]=0;for(let n=t;n<_;n++){let s=A(g[n],e),i=g[n]/s,o=e/s;if(g[n]=s,e=-o*p[n],p[n]=i*p[n],h)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[_-1]),Math.abs(g[_-2]),Math.abs(p[_-2]),Math.abs(g[t]),Math.abs(p[t])),s=g[_-1]/e,i=g[_-2]/e,o=p[_-2]/e,a=g[t]/e,u=p[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=(a+s)*(a-s)+w,v=a*u;for(let e=t;e<_-1;e++){let s=A(y,v);0===s&&(s=Number.MIN_VALUE);let i=y/s,o=v/s;if(e!==t&&(p[e-1]=s),y=i*g[e]+o*p[e],p[e]=i*p[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*d.get(t,e)+o*d.get(t,e+1),d.set(t,e+1,-o*d.get(t,e)+i*d.get(t,e+1)),d.set(t,e,s);if(s=A(y,v),0===s&&(s=Number.MIN_VALUE),i=y/s,o=v/s,g[e]=s,y=i*p[e]+o*g[e+1],g[e+1]=-o*p[e]+i*g[e+1],v=o*p[e+1],p[e+1]=i*p[e+1],h&&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)}p[_-2]=y,S+=1;break}case 4:if(g[t]<=0&&(g[t]=g[t]<0?-g[t]:0,l))for(let e=0;e<=x;e++)d.set(e,t,-d.get(e,t));for(;t<x&&!(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=d.get(r,t+1),d.set(r,t+1,d.get(r,t)),d.set(r,t,e);if(h&&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++}S=0,_--}}if(u){let t=d;d=m,m=t}this.m=r,this.n=n,this.s=g,this.U=m,this.V=d}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,a=o.mmul(s),h=o.rows,l=i.rows,u=R.zeros(h,l);for(let t=0;t<h;t++)for(let e=0;e<l;e++){let r=0;for(let s=0;s<n;s++)r+=a.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,a=i.columns,h=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<a;n++)r+=s.get(t,n)*i.get(e,n);h.set(t,e,r)}return h}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 a=s(e);let h=new Float64Array(t.x.length);for(let e=0;e<t.x.length;e++)h[e]=a(t.x[e]);let l=function(t,e,r,n,s){const i=r.length,o=t.x.length;let a=new Array(i);for(let h=0;h<i;h++){a[h]=new Array(o);let i=r.slice();i[h]+=n;let l=s(i);for(let r=0;r<o;r++)a[h][r]=e[r]-l(t.x[r])}return new R(a)}(t,h,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,h),c=function(t,e=!1){return t=I.checkMatrix(t),e?new C(t).inverse():function(t,e,r=!1){return t=I.checkMatrix(t),e=I.checkMatrix(e),r?new C(t).solve(e):t.isSquare()?new z(t).solve(e):new F(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 P(t,e,r={}){let{maxIterations:n=100,gradientDifference:o=.1,damping:a=0,errorTolerance:h=.01,minValues:l,maxValues:u,initialValues:c}=r;if(a<=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,d=i(t,f,e),p=d<=h;for(m=0;m<n&&!p;m++){f=T(t,f,a,o,e);for(let t=0;t<g;t++)f[t]=Math.min(Math.max(l[t],f[t]),u[t]);if(d=i(t,f,e),isNaN(d))break;p=d<=h}return{parameterValues:f,parameterError:d,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 h=0;h<i.length;h++)if(n===i[h])return 0;return a(t,e,r,n,s)}function a(t,e,r,n,s){var i=t[0][e],o=t[1][e],a=t[2][e];if(r>=o[0])return 0;o[0]=r,i[0]=n,a[0]=s;for(var h=0,l=0;;){var u=2*h+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[h]=o[l],i[h]=i[l],a[h]=a[l],h=l}return o[h]=r,i[h]=n,a[h]=s,1}function h(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 a=t[n];t[n]=t[o],t[o]=a;var h=e[n];e[n]=e[o],e[o]=h,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,a=0;o;){a=s.tauRandInt(e,r);for(var h=!1,l=0;l<i;l++)if(a===n[l]){h=!0;break}h||(o=!1)}n[i]=a}return n},e.heapPush=o,e.uncheckedHeapPush=a,e.buildCandidates=function(t,e,r,n,a){for(var h=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(a);o(h,l,g,c,f),o(h,c,g,l,f),t[2][l][u]=0}return h},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 a=s.length-o-1,l=i.length-o-1,u=s[0];s[0]=s[a],s[a]=u;var c=i[0];i[0]=i[l],i[l]=c,h(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,a=0;a>r.length;a++)1===s[a]&&n[a]<i&&(i=n[a],o=a);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 a=o(r(4517)),h=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 a=this.makeKey(i,o);this.entries.set(a,{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=a.empty(this.nRows).map((function(){return a.zeros(t.nCols)}));return this.entries.forEach((function(t){e[t.row][t.col]=t.value})),e},t}();e.SparseMatrix=h,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 h(r,e,n,s)},e.identity=function(t){for(var e=s(t,1)[0],r=new h([],[],[],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)},a=r.filter(o),l=n.filter(o),u=s.filter(o);return new h(l,u,a,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 a=new h([],[],[],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),h=0;h<i.length;h++)a.set(e,r[h],i[h])};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 a};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=[],a=function(n,a){s.push(n),i.push(a);var h=r(t.get(n,a),e.get(n,a));o.push(h)},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),a(w,y)}var m=e.getValues(),d=e.getRows(),p=e.getCols();for(f=0;f<m.length;f++){var w,y;g=(w=d[f])+":"+(y=p[f]),n.has(g)||a(w,y)}var v=[t.nRows,t.nCols];return new h(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 a=e[o],h=a.row,l=a.col,u=a.value;h!==i&&(i=h,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)),a=s(r(2320)),h=s(r(4517));e.makeNNDescent=function(t,e){return function(r,n,s,o,a,l,u,c){void 0===o&&(o=10),void 0===a&&(a=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 d=i.rejectionSample(s,r.length,e),p=0;p<d.length;p++){var w=t(r[m],r[d[p]]);i.heapPush(g,m,w,d[p],1),i.heapPush(g,d[p],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(p=m+1;p<n[y].length&&!(n[y][p]<0);p++)w=t(r[n[y][m]],r[n[y][p]]),i.heapPush(g,n[y][m],w,n[y][p],1),i.heapPush(g,n[y][p],w,n[y][m],1);for(y=0;y<o;y++){var v=i.buildCandidates(g,f,s,a,e),b=0;for(m=0;m<f;m++)for(p=0;p<a;p++){var M=Math.floor(v[0][m][p]);if(!(M<0||h.tauRand(e)<u))for(var _=0;_<a;_++){var x=Math.floor(v[0][m][_]),S=v[2][m][p],E=v[2][m][_];x<0||!S&&!E||(w=t(r[M],r[x]),b+=i.heapPush(g,M,w,x,1),b+=i.heapPush(g,x,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 a=0;a<n.length;a++)for(var l=h.rejectionSample(e,r.length,o),u=0;u<l.length;u++)if(!(l[u]<0)){var c=t(r[l[u]],n[a]);i.heapPush(s,a,c,l[u],1)}},initFromTree:function(e,r,n,s,o){for(var h=0;h<n.length;h++)for(var l=a.searchFlatTree(n[h],e,o),u=0;u<l.length;u++){if(l[u]<0)return;var c=t(r[l[u]],n[h]);i.heapPush(s,h,c,l[u],1)}}}},e.makeInitializedNNSearch=function(t){return function(e,r,s,a){for(var h,l,u=o.getCSR(r),c=u.indices,f=u.indptr,g=0;g<a.length;g++)for(var m=new Set(s[0][g]);;){var d=i.smallestFlagged(s,g);if(-1===d)break;var p=c.slice(f[d],f[d+1]);try{for(var w=n(p),y=w.next();!y.done;y=w.next()){var v=y.value;if(v!==d&&-1!==v&&!m.has(v)){var b=t(e[v],a[g]);i.uncheckedHeapPush(s,g,b,v,1),m.add(v)}}}catch(t){h={error:t}}finally{try{y&&!y.done&&(l=w.return)&&l.call(w)}finally{if(h)throw h.error}}}return s}},e.initializeSearch=function(t,e,r,s,o,a,h){var l,u,c=i.makeHeap(r.length,s);if(o(s,e,r,c,h),t)try{for(var f=n(t),g=f.next();!g.done;g=f.next())a(g.value,e,r,c,h)}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 a=o(r(4517)),h=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=a.tauRandInt(e.length,r),i=a.tauRandInt(e.length,r);i=(i+=s===i?1:0)%e.length;for(var o=e[s],h=e[i],l=0,u=a.zeros(n),c=0;c<u.length;c++)u[c]=t[o][c]-t[h][c],l-=u[c]*(t[o][c]+t[h][c])/2;var f=0,g=0,m=a.zeros(e.length);for(c=0;c<e.length;c++){for(var d=l,p=0;p<n;p++)d+=u[p]*t[e[c]][p];0===d?(m[c]=a.tauRandInt(2,r),0===m[c]?f+=1:g+=1):d>0?(m[c]=0,f+=1):(m[c]=1,g+=1)}var w=a.zeros(f),y=a.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,h=i.indicesRight,u=i.hyperplane,c=i.offset;return{leftChild:l(t,o,r,n+1,s),rightChild:l(t,h,r,n+1,s),isLeaf:!1,hyperplane:u,offset:c}}return{indices:e,isLeaf:!0}}function u(t,e,r,n,i,o,a){var h;if(t.isLeaf)return n[o][0]=-a,(h=i[a]).splice.apply(h,s([0,t.indices.length],t.indices)),{nodeNum:o,leafNum:a+=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,a);return o=c.nodeNum,a=c.leafNum,n[l][1]=o+1,{nodeNum:(c=u(t.rightChild,e,r,n,i,o+1,a)).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?a.tauRandInt(2,n):s>0?0:1}e.FlatTree=h,e.makeForest=function(t,e,r,n){var s=Math.max(10,e);return a.range(r).map((function(e,r){return function(t,e,r,n){return void 0===e&&(e=30),l(t,a.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=a.range(r).map((function(){return a.zeros(t.hyperplane?t.hyperplane.length:0)})),i=a.zeros(r),o=a.range(r).map((function(){return[-1,-1]})),l=a.range(n).map((function(){return a.range(e).map((function(){return-1}))}));return u(t,s,i,o,l,0,0),new h(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),a=o.next();!a.done;a=o.next()){var h=a.value;n.push.apply(n,s(h.indices))}}catch(t){e={error:t}}finally{try{a&&!a.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{h(n.next(t))}catch(t){i(t)}}function a(t){try{h(n.throw(t))}catch(t){i(t)}}function h(t){t.done?s(t.value):new r((function(e){e(t.value)})).then(o,a)}h((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:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){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,a])}}},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},a=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},h=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var l=a(r(9378)),u=a(r(5686)),c=a(r(760)),f=a(r(2320)),g=a(r(4517)),m=h(r(9251)),d=1e-5,p=.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],a=r[i],h=0;h<o.length;h++){var l=o[h],c=a[h];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),a=o.indices,h=o.weights;a=a.map((function(t){return t.slice(0,e.nNeighbors)})),h=h.map((function(t){return t.slice(0,e.nNeighbors)}));var f=Math.max(0,this.localConnectivity-1),m=this.smoothKNNDistance(h,this.nNeighbors,f),d=m.sigmas,p=m.rhos,w=this.computeMembershipStrengths(a,h,d,p),y=w.rows,v=w.cols,b=w.vals,M=[t.length,r.length],_=new u.SparseMatrix(y,v,b,M),x=u.normalize(_,"l1"),S=u.getCSR(x),k=t.length,N=E(g.reshape2d(S.indices,k,this.nNeighbors),g.reshape2d(S.values,k,this.nNeighbors),this.embedding),R=this.nEpochs?this.nEpochs/3:_.nRows<=1e4?100:30,I=_.getValues().reduce((function(t,e){return e>t?e:t}),0);_=_.map((function(t){return t<I/R?0:t})),_=u.eliminateZeros(_);var z=this.makeEpochsPerSample(_.getValues(),R),A=_.getRows(),F=_.getCols();return this.assignOptimizationStateParameters({headEmbedding:N,tailEmbedding:this.embedding,head:A,tail:F,currentEpoch:0,nEpochs:R,nVertices:_.getDims()[1],epochsPerSample:z}),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 a=s(t,f.makeLeafArray(this.rpForest),n,o);return{knnIndices:a.indices,knnDistances:a.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,a=void 0===o?[]:o,h=n.localConnectivity,l=this.smoothKNNDistance(a,e,h),c=l.sigmas,f=l.rhos,g=this.computeMembershipStrengths(i,a,c,f),m=g.rows,d=g.cols,p=g.vals,w=[t.length,t.length],y=new u.SparseMatrix(m,d,p,w),v=u.transpose(y),b=u.pairwiseMultiply(y,v),M=u.subtract(u.add(y,v),b),_=u.multiplyScalar(M,r),x=u.multiplyScalar(b,1-r);return u.add(_,x)},t.prototype.categoricalSimplicialSetIntersection=function(t,e,r,n){void 0===n&&(n=1);var s=x(t,e,n,r);return S(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),a=g.zeros(t.length),h=0;h<t.length;h++){var l=0,u=1/0,c=1,f=t[h],m=f.filter((function(t){return t>0}));if(m.length>=r){var w=Math.floor(r),y=r-w;w>0?(o[h]=m[w-1],y>d&&(o[h]+=y*(m[w]-m[w-1]))):o[h]=y*m[0]}else m.length>0&&(o[h]=g.max(m));for(var v=0;v<n;v++){for(var b=0,M=1;M<t[h].length;M++){var _=t[h][M]-o[h];b+=_>0?Math.exp(-_/c):1}if(Math.abs(b-i)<d)break;b>i?c=(l+(u=c))/2:(l=c,u===1/0?c*=2:c=(l+u)/2)}if(a[h]=c,o[h]>0){var x=g.mean(f);a[h]<p*x&&(a[h]=p*x)}else{var S=g.mean(t.map(g.mean));a[h]<p*S&&(a[h]=p*S)}}return{sigmas:a,rhos:o}},t.prototype.computeMembershipStrengths=function(t,e,r,n){for(var s=t.length,i=t[0].length,o=g.zeros(s*i),a=g.zeros(s*i),h=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,a[l*i+u]=t[l][u],h[l*i+u]=c)}return{rows:o,cols:a,vals:h}},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 a=this.graph.map((function(t){return t<s/e?0:t}));this.embedding=g.zeros(a.nRows).map((function(){return g.zeros(r).map((function(){return 20*g.tauRand(t.random)-10}))}));var h=[],l=[],u=[],c=a.getAll();for(i=0;i<c.length;i++){var f=c[i];f.value&&(h.push(f.value),u.push(f.row),l.push(f.col))}return{head:l,tail:u,epochsPerSample:this.makeEpochsPerSample(h,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,a=s.headEmbedding,h=s.tailEmbedding,l=a[0].length,u=a.length===h.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(),a=this.graph.nCols,h=_(this.spread,this.minDist),l=h.a,u=h.b;this.assignOptimizationStateParameters({headEmbedding:t,tailEmbedding:e,head:n,tail:s,epochsPerSample:i,a:l,b:u,nEpochs:o,nVertices:a})},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,a=e.epochOfNextSample,h=e.epochOfNextNegativeSample,l=e.epochsPerNegativeSample,u=e.moveOther,c=e.initialAlpha,f=e.alpha,m=e.gamma,d=e.a,p=e.b,w=e.dim,y=e.nEpochs,v=e.nVertices,_=0;_<o.length;_++)if(!(a[_]>t)){var x=r[_],S=n[_],E=s[x],k=i[S],N=M(E,k),R=0;N>0&&(R=-2*d*p*Math.pow(N,p-1),R/=d*Math.pow(N,p)+1);for(var I=0;I<w;I++){var z=b(R*(E[I]-k[I]),4);E[I]+=z*f,u&&(k[I]+=-z*f)}a[_]+=o[_];for(var A=Math.floor((t-h[_])/l[_]),F=0;F<A;F++){var C=g.tauRandInt(v,this.random),T=i[C],P=M(E,T),D=0;if(P>0)D=2*m*p,D/=(.001+P)*(d*Math.pow(P,p)+1);else if(x===C)continue;for(I=0;I<w;I++)z=4,D>0&&(z=b(D*(E[I]-T[I]),4)),E[I]+=z*f}h[_]+=A*l[_]}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,a,h,l,u;return s(this,(function(s){try{if(e=this.optimizationState,n=e.nEpochs,a=e.currentEpoch,this.embedding=this.optimizeLayoutStep(a),h=this.optimizationState.currentEpoch,l=!1===t(h),u=h===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,a=!1===t(o);e=o===s||a}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 _(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,a=i(o,2);return{a:a[0],b:a[1]}}function x(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 S(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 a=t[s][i];n[s][o]+=e[s][i]*r[a][o]}return n}e.findABParams=_,e.fastIntersection=x,e.resetLocalConnectivity=S,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 a(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 a=o.value;s+=Math.pow(a,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=a,e.mean=function(t){return a(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 a=!0;a;){for(var h=n(e,r),l=!1,u=0;u<i;u++)if(h===s[u]){l=!0;break}l||(a=!1),s[i]=h}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=[],a=0;a<r;a++)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,[535],(()=>s(1729)));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],a=!0,h=0;h<r.length;h++)(!1&i||o>=i)&&Object.keys(s.O).every((t=>s.O[t](r[h])))?r.splice(h--,1):(a=!1,i<o&&(o=i));if(a){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})(),(()=>{s.b=self.location+"";var t={729: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 a in i)s.o(i,a)&&(s.m[a]=i[a]);for(o&&o(s);n.length;)t[n.pop()]=1;r(e)}})(),e=s.x,s.x=()=>s.e(535).then(e);var i=s.x();peptides=i})();
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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RUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsSUFFakRoRixFQUFTdUksWUFBY0csVUFBVTFELEtBQUssRUFDakMsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDOUMsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsSUFFakRoRixFQUFTeUksV0FBYUMsVUFBVTFELEtBQUssRUFDaEMsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDOUMsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsSSxJQ25tQnRDMkQsRSxVQ1BKLE1BQU1DLEVBQ1QsUUFBSXZOLEdBQVMsT0FBT3JDLEtBQUtvSixLQUFPLENBQ2hDLFFBQUk1SixHQUFTLE9BQU9RLEtBQUs2UCxLQUFPLENBS2hDLFdBQUFuUSxDQUFZMkMsRUFBTTdDLEdBQ2QsR0FBWXNRLE1BQVJ0USxFQUFtQixDQUNuQixHQUFZc1EsTUFBUnpOLEVBQ0EsTUFBTSxJQUFJdkUsTUFBTSw4Q0FHcEIsR0FGQWtDLEtBQUtvSixNQUFRL0csRUFDYnJDLEtBQUs2UCxPQUFTLEVBQUlyUyxLQUFLOEIsS0FBSyxFQUFJLEVBQVFVLEtBQUtvSixNQUFNaEwsU0FBVyxFQUMxRDRCLEtBQUs2UCxPQUFTclMsS0FBS0UsTUFBTXNDLEtBQUs2UCxPQUM5QixNQUFNLElBQUkvUixNQUFNLHVCQUF1QmtDLEtBQUtvSixNQUFNaEwsb0NBQW9DNEIsS0FBSzZQLFFBQ25HLEtBQ0ssQ0FDRDdQLEtBQUs2UCxNQUFRclEsRUFDYixNQUFNdVEsRUFBYXZRLEdBQVFBLEVBQU8sR0FBSyxFQUN2QyxHQUFJNkMsRUFBTSxDQUNOLEdBQUlBLEVBQUtqRSxRQUFVMlIsRUFDZixNQUFNLElBQUlqUyxNQUFNLDBDQUEwQzBCLDBCQUE2QnVRLE1BQzNGL1AsS0FBS29KLE1BQVEvRyxDQUNqQixNQUVJckMsS0FBS29KLE1BQVEsSUFBSS9ILGFBQWEwTyxFQUV0QyxDQUNKLENBQ0EsWUFBQUMsQ0FBYTFSLEVBQUdVLEdBQ1osS0FBTVYsRUFBSVUsR0FDTixNQUFNLElBQUlsQixNQUFNLHlCQUNwQixPQUFPa0MsS0FBSzZQLE1BQVF2UixFQUFJVSxFQUFJeEIsS0FBS0UsT0FBUVksRUFBSSxJQUFNQSxFQUFJLEdBQU0sRUFDakUsQ0FDQSxHQUFBMlIsQ0FBSTNSLEVBQUdVLEdBQ0gsT0FBSVYsR0FBS1UsRUFDRSxFQUNGVixFQUFJVSxFQUNGZ0IsS0FBS29KLE1BQU1wSixLQUFLZ1EsYUFBYTFSLEVBQUdVLElBRWhDZ0IsS0FBS29KLE1BQU1wSixLQUFLZ1EsYUFBYWhSLEVBQUdWLEdBQy9DLENBQ0EsR0FBQW1FLENBQUluRSxFQUFHVSxFQUFHNEQsR0FDTjVDLEtBQUtvSixNQUFNcEosS0FBS2dRLGFBQWExUixFQUFHVSxJQUFNNEQsQ0FDMUMsQ0FDQSxXQUFPckMsQ0FBSzJQLEVBQU1ySSxHQUNkLE1BQU1ySSxFQUFPMFEsRUFBSzlSLE9BQ1orUixFQUFNLElBQUlQLE9BQWVFLEVBQVd0USxHQUMxQyxJQUFLLElBQUlsQixFQUFJLEVBQUdBLEVBQUlrQixFQUFNbEIsSUFDdEIsSUFBSyxJQUFJVSxFQUFJVixFQUFJLEVBQUdVLEVBQUlRLEVBQU1SLElBRTFCbVIsRUFBSTFOLElBQUluRSxFQUFHVSxHQUFJLE9BQU1rUixFQUFLNVIsTUFBUSxPQUFNNFIsRUFBS2xSLElBQWlDLEVBQTNCNkksRUFBT3FJLEVBQUs1UixHQUFJNFIsRUFBS2xSLEtBR2hGLE9BQU9tUixDQUNYLENBRUEsTUFBQUMsR0FDSSxJQUFLLElBQUk5UixFQUFJLEVBQUdBLEVBQUkwQixLQUFLb0osTUFBTWhMLE9BQVFFLElBQ25DMEIsS0FBS29KLE1BQU05SyxHQUFLMEIsS0FBS29KLE1BQU05SyxJQUFNLENBQ3pDLENBRUEsR0FBQStSLENBQUlyRyxHQUNBLEdBQUloSyxLQUFLNlAsUUFBVTdGLEVBQU02RixNQUNyQixNQUFNLElBQUkvUixNQUFNLGdEQUFnRGtDLEtBQUs2UCxzQkFBc0I3RixFQUFNNkYsU0FDckcsSUFBSyxJQUFJdlIsRUFBSSxFQUFHQSxFQUFJMEIsS0FBS29KLE1BQU1oTCxPQUFRRSxJQUNuQzBCLEtBQUtvSixNQUFNOUssSUFBTTBMLEVBQU1aLE1BQU05SyxFQUNyQyxDQUVBLElBQUFnQixHQUNJLElBQUssSUFBSWhCLEVBQUksRUFBR0EsRUFBSTBCLEtBQUtvSixNQUFNaEwsT0FBUUUsSUFDbkMwQixLQUFLb0osTUFBTTlLLEdBQUtkLEtBQUs4QixLQUFLVSxLQUFLb0osTUFBTTlLLEdBQzdDLENBRUEsU0FBQW9DLEdBQ0ksSUFBSVEsRUFBTSxFQUNOaEIsRUFBTUYsS0FBS29KLE1BQU0sR0FDckIsSUFBSyxJQUFJOUssRUFBSSxFQUFHQSxFQUFJMEIsS0FBS29KLE1BQU1oTCxPQUFRRSxJQUMvQjBCLEtBQUtvSixNQUFNOUssR0FBSzRDLElBQ2hCQSxFQUFNbEIsS0FBS29KLE1BQU05SyxJQUNqQjBCLEtBQUtvSixNQUFNOUssR0FBSzRCLElBQ2hCQSxFQUFNRixLQUFLb0osTUFBTTlLLElBRXpCLE1BQU1mLEVBQVEyQyxFQUFNZ0IsRUFDcEIsSUFBSyxJQUFJNUMsRUFBSSxFQUFHQSxFQUFJMEIsS0FBS29KLE1BQU1oTCxPQUFRRSxJQUNuQzBCLEtBQUtvSixNQUFNOUssR0FBZSxJQUFWZixFQUFjeUMsS0FBS29KLE1BQU05SyxHQUFLNEMsR0FBT2xCLEtBQUtvSixNQUFNOUssR0FBSzRDLElBQVFoQixFQUFNZ0IsRUFDM0YsR0Q5RUosU0FBV3lPLEdBQ1BBLEVBQTBCLEtBQUksT0FDOUJBLEVBQTJCLE1BQUksT0FDbEMsQ0FIRCxDQUdHQSxJQUF3QkEsRUFBc0IsQ0FBQyxJQXlCbEQsTUFBTVcsRUFDRixXQUFBNVEsQ0FBWXVELEdBQ1JqRCxLQUFLcUMsS0FBT1ksRUFBUVosSUFDeEIsRUFtTUosTUFBTWtPLEVBQW9CLENBQ3RCLEtBcEpKLGNBQTBCRCxFQU10QixXQUFBNVEsQ0FBWXVELEdBQ1IrQixNQUFNL0IsR0FDTnRGLEVBQU8sa0JBQW1Cc0YsR0FDMUJ0RixFQUFPLGVBQWdCc0YsR0FDdkJqRCxLQUFLd1EsV0FBYXZOLEVBQVF1TixXQUMxQnhRLEtBQUt5USxjQUFnQnhOLEVBQVF3TixjQUM3QnpRLEtBQUswUSxZQUFjblIsRUFBY1MsS0FBS3FDLEtBQUtqRSxRQUUzQzRCLEtBQUs4RCxRQUFVLElBQUlqRixNQUFNbUIsS0FBS3FDLEtBQUtqRSxRQUFRUSxLQUFLLEdBQUdFLEtBQUksQ0FBQzZSLEVBQUdyUyxJQUFNLENBQUNBLEtBQ2xFMEIsS0FBSzRRLHVCQUF5QjNOLEVBQVE0Tiw0QkFBOEI3USxLQUFLcUMsS0FBS2pFLE9BdkY5QyxLQXdGM0I0QixLQUFLNFEsb0JBR04zTixFQUFRdU4sV0FBYXhRLEtBQUs4USx1QkFBdUJDLEtBQUsvUSxNQUZ0RGlELEVBQVF1TixXQUFheFEsS0FBS2dSLGlCQUFpQkQsS0FBSy9RLE1BR2hEQSxLQUFLcUMsS0FBS2pFLE9BQVMsS0FDbkI2RSxFQUFRZ08sV0FBYWpSLEtBQUtxQyxLQUFLakUsT0FBUyxHQUM1QzRCLEtBQUtrUixRQUFVLElBQUksRUFBQUMsRUFBU2xPLEVBRWhDLENBVUEsc0JBQUE2TixDQUF1Qk0sRUFBR0MsR0FDdEIsT0FBSUQsRUFBRSxLQUFPQyxFQUFFLEdBQ0osRUFDUEQsRUFBRSxHQUFLQyxFQUFFLEdBQ0ZyUixLQUFLb0IsZUFBZXBCLEtBQUswUSxZQUFZVyxFQUFFLEdBQUlELEVBQUUsS0FDakRwUixLQUFLb0IsZUFBZXBCLEtBQUswUSxZQUFZVSxFQUFFLEdBQUlDLEVBQUUsSUFDeEQsQ0FDQSxnQkFBQUwsQ0FBaUJJLEVBQUdDLEdBQ2hCLE9BQU9yUixLQUFLd1EsV0FBV3hRLEtBQUtxQyxLQUFLK08sRUFBRSxJQUFLcFIsS0FBS3FDLEtBQUtnUCxFQUFFLElBQ3hELENBTUEsZUFBTUMsQ0FBVUMsR0FDUnZSLEtBQUs0USxzQkFDTDVRLEtBQUtvQixlQUFpQm1RLE9BQWdDLFdBQ2xELE1BQU12TixFQUFnQixJQUFJdkUsR0FBc0IsR0FBTSxHQUN0RCxJQUNJLE1BQU1xRyxRQUFhOUIsRUFBY3pELEtBQUtQLEtBQUtxQyxLQUFNckMsS0FBS3lRLGVBRXRELE9BREF6TSxFQUFjeEIsWUFDUHNELENBQ1gsQ0FDQSxNQUFPaEQsR0FFSCxNQURBa0IsRUFBY3hCLFlBQ1JNLENBQ1YsQ0FDSCxFQVhxRCxHQVlsRCxLQUFxQjhNLEVBQWVyUCxLQUFLUCxLQUFLcUMsTUFBTSxDQUFDK08sRUFBR0MsSUFBTXJSLEtBQUt3USxXQUFXWSxFQUFHQyxLQUFnQmhQLEtBQWpHLElBRVIsTUFBTW1QLEVBQVl4UixLQUFLa1IsUUFBUU8sSUFBSXpSLEtBQUs4RCxTQUl4QyxNQUFPLENBQUUwTixXQUhzQm5QLEVBR1dtUCxFQUYvQixJQUFJM1MsTUFBTXdELEVBQUtqRSxRQUFRUSxLQUFLLEdBQUdFLEtBQUksQ0FBQzZSLEVBQUdyUyxJQUFPLEtBQU8wTixLQUFLM0osRUFBSy9ELFVBRWhCMEIsS0FBS29CLGVBQWlCLENBQUV1QyxTQUFVM0QsS0FBS29CLGdCQUFtQixDQUFDLEdBSHJILElBQStCaUIsQ0FJbkMsR0ErRUEsUUFsTUosY0FBMEJpTyxFQU10QixXQUFBNVEsQ0FBWXVELEdBQ1IrQixNQUFNL0IsR0FDTmpELEtBQUtrUixRQUFVLElBQUksSUFBS2pPLEdBQ3hCakQsS0FBSzBSLFdBQWF6TyxHQUFTeU8sWUFBYyxJQUN6QzFSLEtBQUt5USxjQUFnQnhOLEVBQVF3TixjQUM3QnpRLEtBQUt3USxXQUFhdk4sRUFBUXVOLFVBQzlCLENBTUEsZUFBTWMsQ0FBVUMsR0FDWixNQUFNNU4sRUFBVzROLE9BQWdDLFdBQzdDLE1BQU12TixFQUFnQixJQUFJdkUsR0FBc0IsR0FBTSxHQUN0RCxJQUNJLE1BQU1xRyxRQUFhOUIsRUFBY3pELEtBQUtQLEtBQUtxQyxLQUFNckMsS0FBS3lRLGVBRXRELE9BREF6TSxFQUFjeEIsWUFDUHNELENBQ1gsQ0FDQSxNQUFPaEQsR0FFSCxNQURBa0IsRUFBY3hCLFlBQ1JNLENBQ1YsQ0FDSCxFQVhnRCxHQVk3QyxNQUFTLE1BQU0yRSxFQUFNbUksRUFBZXJQLEtBQUtQLEtBQUtxQyxNQUFNLENBQUMrTyxFQUFHQyxJQUFNclIsS0FBS3dRLFdBQVdZLEVBQUdDLEtBQXNCLE9BQWpCNUosRUFBSS9HLFlBQW9CK0csRUFBSXBGLElBQU8sRUFBekgsR0FDRXNQLEVMckVQLFNBQTZCQyxFQUFnQnBTLEdBQ2hELE1BQU1xUyxFQUFhdFMsRUFBY0MsR0FDakMsU0FBU3NTLEVBQVl4VCxFQUFHVSxHQUNwQixNQUFNK1MsRUFBT3JRLE9BQU9wRCxHQUNkMFQsRUFBT3RRLE9BQU8xQyxHQUNwQixPQUFPNlMsRUFBV0UsRUFBTUMsRUFDNUIsQ0FXQSxNQUFNQyxFQUFjLENBQ2hCaEMsSUFBRyxDQUFDaUMsRUFBUUMsRUFBTUMsSUFDRCxXQUFURCxFQUNPM1MsRUFDSixJQUFJNlMsTUFBTUgsRUFkekIsU0FBcUJDLEdBQ2pCLE1BQU8sQ0FDSGxDLElBQUcsQ0FBQ2lDLEVBQVFJLEVBQU1GLElBQ1ZELElBQVNHLEVBQ0YsRUFFSkosRUFEV3hRLE9BQU95USxHQUFRelEsT0FBTzRRLEdBQVFSLEVBQVlRLEVBQU1ILEdBQVFMLEVBQVlLLEVBQU1HLElBSXhHLENBS2lDQyxDQUFZSixLQUc3QyxPQUFPLElBQUlFLE1BQU1ULEVBQWdCSyxFQUNyQyxDSzRDNEJPLENBQW9CN08sRUFBVTNELEtBQUtxQyxLQUFLakUsUUFDNUQ0QixLQUFLa1IsUUFBUXVCLGFBQWFkLEdBQzFCLElBQUssSUFBSXJULEVBQUksRUFBR0EsRUFBSTBCLEtBQUswUixhQUFjcFQsRUFDbkMwQixLQUFLa1IsUUFBUTFNLE9BQ2pCLE1BQU8sQ0FBRWIsU0FBVUEsRUFBVTZOLFVBQVd4UixLQUFLa1IsUUFBUXdCLGNBQ3pELEdBOEpBLElBeEVKLGNBQXlCcEMsRUFNckIsV0FBQTVRLENBQVl1RCxHQUNSK0IsTUFBTS9CLEdBQ05qRCxLQUFLa1IsUUFBVSxJQUFJbE8sRUFBUUMsRUFDL0IsQ0FLQSxlQUFNcU8sR0FDRixNQUFNcUIsUUFBWTNTLEtBQUtrUixRQUFROU0sTUFBTXBFLEtBQUtxQyxNQUMxQyxNQUFPLENBQUVzQixTQUFVM0QsS0FBS2tSLFFBQVF2TixTQUFVNk4sVUFBV21CLEVBQ3pELEdBd0RBLEtBaERKLGNBQTBCckMsRUFNdEIsV0FBQTVRLENBQVl1RCxHQUNSK0IsTUFBTS9CLEdBQ05qRCxLQUFLa1IsUUFBVSxJQUFJcE0sRUFBUzdCLEVBQ2hDLENBS0EsZUFBTXFPLEdBQ0YsTUFBTXFCLFFBQVkzUyxLQUFLa1IsUUFBUTlNLE1BQU1wRSxLQUFLcUMsTUFDMUMsTUFBTyxDQUFFc0IsU0FBVTNELEtBQUtrUixRQUFRdk4sU0FBVTZOLFVBQVdtQixFQUN6RCxHQWdDQSxZQXhCSixjQUFpQ3JDLEVBTTdCLFdBQUE1USxDQUFZdUQsR0FDUitCLE1BQU0vQixHQUNOakQsS0FBS2tSLFFBQVUsSUFBSW5NLEVBQVk5QixFQUNuQyxDQUtBLGVBQU1xTyxHQUNGLE1BQU1xQixRQUFZM1MsS0FBS2tSLFFBQVE5TSxNQUFNcEUsS0FBS3FDLE1BQzFDLE1BQU8sQ0FBRXNCLFNBQVUzRCxLQUFLa1IsUUFBUXZOLFNBQVU2TixVQUFXbUIsRUFDekQsSUFlRyxNQUFNQyxFQVNULFdBQUFsVCxDQUFZMkMsRUFBTXdGLEVBQVFnTCxFQUFRNVAsR0FDOUIsTUFBTTZQLEVBQVUsSUFBSWxMLEVBQVFpTCxHQUFROUssYUFDcEMsSUFBSWdMLEVBQWMsQ0FBQyxFQUNuQixHRjlMNkIsWUFBMUIxTCxFRThMa0J3TCxHQUNqQixJQUFLLElBQUl2VSxFQUFJLEVBQUdBLEVBQUkrRCxFQUFLakUsU0FBVUUsRUFDL0IrRCxFQUFLL0QsR0FBSyxJQUFJMEksRUFBUzNFLEVBQUsvRCxHQUFHOEssTUFBTy9HLEVBQUsvRCxHQUFHbUssU0FHbERzSyxFQURVLFFBQVZsTCxFQUNjLENBQ0x4RixLQUFNQSxFQUNObU8sV0FBWXNDLEVBQ1pyQyxjQUFlb0MsRUFDZkcsUUFBUy9QLEdBQVNFLFVBQ3BCRixHQUdRLFNBQVY0RSxFQUNTLENBQ0x4RixLQUFNQSxFQUNObU8sV0FBWXNDLEVBQ1pyQyxjQUFlb0MsRUFDZm5CLFdBQVl6TyxHQUFTRSxhQUFVMk0sS0FDakM3TSxHQUlPLENBQU9aLEtBQU1BLEVBQWFzQixTQUFVbVAsRUFBV2xQLHFCQUFzQmlQLEtBQVc1UCxHQUtsR2pELEtBQUtrUixRQUFVLElBQUlYLEVBQWtCMUksR0FBUWtMLEVBQ2pELENBVUEsZUFBTXpCLENBQVUyQixHQUFZLEVBQU8xQixHQUMvQixRQUFxQnpCLElBQWpCOVAsS0FBS2tSLFFBQ0wsTUFBTSxJQUFJcFQsTUFBTSw0QkFDcEIsSUFBSSxVQUFFMFQsRUFBUyxTQUFFN04sU0FBbUIzRCxLQUFLa1IsUUFBUUksVUFBVUMsR043UTVELElBQXlCNVMsRU1nUnhCLE9BRklzVSxJTjlRb0J0VSxFTStRUTZTLEVBQTVCQSxFTjlRRCxJQUFJM1MsTUFBTUYsRUFBTyxHQUFHUCxRQUFRUSxLQUFLLEdBQ25DRSxLQUFJLENBQUM2UixFQUFHclMsSUFBTyxJQUFJLEtBQU9LLEVBQU9QLFFBQVFRLEtBQUssR0FBR0UsS0FBSSxDQUFDNlIsRUFBRzNSLElBQU9MLEVBQU9LLEdBQUdWLFFNOFFwRSxDQUFFcUYsU0FBVUEsRUFBVTZOLFVBQVdBLEVBQzVDLENBUUEsNkJBQU8wQixDQUF1QkMsR0FDMUIsT0FBTzdMLE9BQU9DLEtBQUtWLEVBQWlCc00sR0FDeEMsQ0FPQSwyQkFBV0MsR0FDUCxPQUFPOUwsT0FBT0MsS0FBS2dKLEVBQ3ZCLENBT0EsMkJBQVc4QyxHQUNQLElBQUlDLEVBQU0sR0FLVixPQUpBaE0sT0FBTzlHLE9BQU9xRyxHQUFrQmxFLFNBQVM0USxJQUNyQyxNQUFNQyxFQUFRbE0sT0FBTzlHLE9BQU8rUyxHQUM1QkQsRUFBTSxJQUFJQSxLQUFRRSxFQUFNLElBRXJCRixDQUNYLEVFclVKL0ksS0FBS25JLFVBQVl4QixPQUFTeUIsTUFBUW9SLGFBQVk1TCxTQUFRaUwsVUFBUzdQLFVBQVNzTywrQkFDcEUsSUFBSWxQLEVBQ0osSUFDSUEsUUFQUnpCLGVBQXlCNlMsRUFBWTVMLEVBQVFpTCxFQUFTN1AsRUFBU3NPLEdBQzNELE1BQU1MLEVBQVUsSUFBSTBCLEVBQXNCYSxFQUFZNUwsRUFBUWlMLEVBQVM3UCxHQUN2RSxhQUFhaU8sRUFBUUksV0FBVSxFQUFNQyxFQUN6QyxDQUlxQm1DLENBQVVELEVBQVk1TCxFQUFRaUwsRUFBUzdQLEVBQVNzTyxFQUNqRSxDQUNBLE1BQU96TyxHQUNIVCxFQUFPLENBQUVDLE1BQU9RLEVBQ3BCLENBQ0F5SCxLQUFLdkksWUFBWSxDQUNiTSxNQUFPRCxFQUFLQyxNQUNacUIsU0FBVXRCLEVBQUtzQixTQUNmNk4sVUFBV25QLEVBQUttUCxXQUNsQixDLGlCQ3pCTm1DLEVBQVEsT0FBTyxFQUNmLElBQUlDLEVBQVMsRUFBUSxNQUNyQnRNLE9BQU91TSxlQUFlRixFQUFTLElBQS9CLENBQXlDRyxZQUFZLEVBQU03RCxJQUFLLFdBQWMsT0FBTzJELEVBQU9HLElBQU0sRyxlQ0hsR3pNLE9BQU91TSxlQUFlRixFQUFTLGFBQWMsQ0FBRS9RLE9BQU8sSUFDdEQrUSxFQUFRSSxVQUFPLEVBMFZmSixFQUFRSSxLQXpWUixNQUNJLFdBQUFyVSxDQUFZc1UsR0FFUmhVLEtBQUtpVSxTQUFVLEVBQ2ZqVSxLQUFLa1UsT0FBUyxFQUNkbFUsS0FBS21VLEtBQU8sRUFDWkgsRUFBTUEsR0FBTyxDQUFDLEVBQ2RoVSxLQUFLb1UsV0FBYXBVLEtBQUtxVSxPQUFPTCxFQUFLLGFBQWMsSUFDakRoVSxLQUFLc1UsSUFBTXRVLEtBQUtxVSxPQUFPTCxFQUFLLE1BQU8sR0FDbkNoVSxLQUFLeUQsUUFBVXpELEtBQUtxVSxPQUFPTCxFQUFLLFVBQVcsR0FDL0MsQ0FDQSxNQUFBclcsQ0FBT0MsRUFBV0MsR0FDZCxJQUFLRCxFQUNELE1BQU1DLEdBQVcsa0JBRXpCLENBRUEsTUFBQXdXLENBQU9MLEVBQUtPLEVBQU9DLEdBQ2YsT0FBSVIsRUFBSTlMLGVBQWVxTSxHQUNaUCxFQUFJTyxHQUdKQyxDQUVmLENBQ0EsV0FBQUMsR0FDSSxHQUFJelUsS0FBS2lVLFFBRUwsT0FEQWpVLEtBQUtpVSxTQUFVLEVBQ1JqVSxLQUFLa1UsT0FFaEIsTUFBTS9DLEVBQUksRUFBSTNULEtBQUtDLFNBQVcsRUFDeEIwQixFQUFJLEVBQUkzQixLQUFLQyxTQUFXLEVBQ3hCa0gsRUFBSXdNLEVBQUlBLEVBQUloUyxFQUFJQSxFQUN0QixHQUFVLElBQU53RixHQUFXQSxFQUFJLEVBQ2YsT0FBTzNFLEtBQUt5VSxjQUVoQixNQUFNQyxFQUFJbFgsS0FBSzhCLE1BQU0sRUFBSTlCLEtBQUttWCxJQUFJaFEsR0FBS0EsR0FHdkMsT0FGQTNFLEtBQUtrVSxPQUFTL1UsRUFBSXVWLEVBQ2xCMVUsS0FBS2lVLFNBQVUsRUFDUjlDLEVBQUl1RCxDQUNmLENBRUEsS0FBQUUsQ0FBTUMsRUFBSUMsR0FBTyxPQUFPRCxFQUFLN1UsS0FBS3lVLGNBQWdCSyxDQUFLLENBRXZELEtBQUFDLENBQU0zUCxHQUNGLFFBQW1CLElBQVIsR0FBdUI0UCxNQUFNNVAsR0FDcEMsTUFBTyxHQUVYLEdBQTJCLG9CQUFoQjZQLFlBQTZCLENBRXBDLE1BQU1qSSxFQUFNLElBQUluTyxNQUFNdUcsR0FDdEIsSUFBSyxJQUFJOUcsRUFBSSxFQUFHQSxFQUFJOEcsRUFBRzlHLElBQ25CME8sRUFBSTFPLEdBQUssRUFFYixPQUFPME8sQ0FDWCxDQUVJLE9BQU8sSUFBSWtJLGFBQWE5UCxFQUVoQyxDQUdBLE9BQUErUCxDQUFRL1AsRUFBR1IsRUFBR3dHLEdBQ1YsTUFBTWdLLE9BQW9CLElBQU5oSyxFQUNkaUssRUFBSSxHQUNWLElBQUssSUFBSS9XLEVBQUksRUFBR0EsRUFBSThHLEVBQUc5RyxJQUFLLENBQ3hCLE1BQU1nWCxFQUFRLEdBQ2QsSUFBSyxJQUFJdFcsRUFBSSxFQUFHQSxFQUFJNEYsRUFBRzVGLElBQ2ZvVyxFQUNBRSxFQUFNckksS0FBSzdCLEdBR1hrSyxFQUFNckksS0FBS2pOLEtBQUs0VSxNQUFNLEVBQUssT0FHbkNTLEVBQUVwSSxLQUFLcUksRUFDWCxDQUNBLE9BQU9ELENBQ1gsQ0FFQSxFQUFBRSxDQUFHQyxFQUFJQyxHQUNILE1BQU1DLEVBQUlGLEVBQUdwWCxPQUNiLElBQUl3RyxFQUFJLEVBQ1IsSUFBSyxJQUFJdEcsRUFBSSxFQUFHQSxFQUFJb1gsRUFBR3BYLElBQUssQ0FDeEIsTUFBTXFYLEVBQU1ILEVBQUdsWCxHQUNUc1gsRUFBTUgsRUFBR25YLEdBQ2ZzRyxJQUFNK1EsRUFBTUMsSUFBUUQsRUFBTUMsRUFDOUIsQ0FDQSxPQUFPaFIsQ0FDWCxDQUVBLElBQUFpUixDQUFLQyxHQUNELE1BQU1DLEVBQUlELEVBQUUxWCxPQUNOMEgsRUFBTzlGLEtBQUsrVSxNQUFNZ0IsRUFBSUEsR0FDNUIsSUFBSyxJQUFJelgsRUFBSSxFQUFHQSxFQUFJeVgsRUFBR3pYLElBQ25CLElBQUssSUFBSVUsRUFBSVYsRUFBSSxFQUFHVSxFQUFJK1csRUFBRy9XLElBQUssQ0FDNUIsTUFBTTRGLEVBQUk1RSxLQUFLdVYsR0FBR08sRUFBRXhYLEdBQUl3WCxFQUFFOVcsSUFDMUI4RyxFQUFLeEgsRUFBSXlYLEVBQUkvVyxHQUFLNEYsRUFDbEJrQixFQUFLOUcsRUFBSStXLEVBQUl6WCxHQUFLc0csQ0FDdEIsQ0FFSixPQUFPa0IsQ0FDWCxDQUVBLEdBQUFrUSxDQUFJTixFQUFHdEIsRUFBWTZCLEdBQ2YsTUFBTUMsRUFBSzFZLEtBQUs4QixLQUFLb1csRUFBRXRYLFFBQ2pCZ0gsRUFBSTVILEtBQUtFLE1BQU13WSxHQUNyQmxXLEtBQUtyQyxPQUFPeUgsSUFBTThRLEVBQUksNENBQ3RCLE1BQU1DLEVBQVUzWSxLQUFLbVgsSUFBSVAsR0FDbkJnQyxFQUFJcFcsS0FBSytVLE1BQU0zUCxFQUFJQSxHQUNuQmlSLEVBQU9yVyxLQUFLK1UsTUFBTTNQLEdBQ3hCLElBQUssSUFBSTlHLEVBQUksRUFBR0EsRUFBSThHLEVBQUc5RyxJQUFLLENBQ3hCLElBQUlnWSxHQUFVLElBQ1ZDLEVBQVVDLElBQ1ZDLEVBQU8sRUFDUEMsR0FBTyxFQUNYLE1BQU1DLEVBQVcsR0FHakIsSUFBSW5OLEVBQU0sRUFDVixNQUFRa04sR0FBTSxDQUdWLElBQUlFLEVBQU8sRUFDWCxJQUFLLElBQUk1WCxFQUFJLEVBQUdBLEVBQUlvRyxFQUFHcEcsSUFBSyxDQUN4QixJQUFJNlgsRUFBS3JaLEtBQUtzWixLQUFLcEIsRUFBRXBYLEVBQUk4RyxFQUFJcEcsR0FBS3lYLEdBQzlCblksSUFBTVUsSUFDTjZYLEVBQUssR0FFVFIsRUFBS3JYLEdBQUs2WCxFQUNWRCxHQUFRQyxDQUNaLENBRUEsSUFBSUUsRUFBUSxFQUNaLElBQUssSUFBSS9YLEVBQUksRUFBR0EsRUFBSW9HLEVBQUdwRyxJQUFLLENBQ3hCLElBQUk2WCxFQUVBQSxFQURTLElBQVRELEVBQ0ssRUFHQVAsRUFBS3JYLEdBQUs0WCxFQUVuQlAsRUFBS3JYLEdBQUs2WCxFQUNOQSxFQUFLLE9BQ0xFLEdBQVNGLEVBQUtyWixLQUFLbVgsSUFBSWtDLEdBRS9CLENBRUlFLEVBQVFaLEdBR1JHLEVBQVVHLEVBQ05GLElBQVlDLElBQ1pDLEdBQWMsRUFHZEEsR0FBUUEsRUFBT0YsR0FBVyxJQUs5QkEsRUFBVUUsRUFDTkgsS0FBWSxJQUNaRyxHQUFjLEVBR2RBLEdBQVFBLEVBQU9ILEdBQVcsR0FJbEM5TSxJQUNJaE0sS0FBS3daLElBQUlELEVBQVFaLEdBQVdGLElBQzVCUyxHQUFPLEdBRVBsTixHQUFPbU4sSUFDUEQsR0FBTyxFQUVmLENBR0EsSUFBSyxJQUFJMVgsRUFBSSxFQUFHQSxFQUFJb0csRUFBR3BHLElBQ25Cb1gsRUFBRTlYLEVBQUk4RyxFQUFJcEcsR0FBS3FYLEVBQUtyWCxFQUU1QixDQUVBLE1BQU1pWSxFQUFPalgsS0FBSytVLE1BQU0zUCxFQUFJQSxHQUN0QjhSLEVBQVMsRUFBSjlSLEVBQ1gsSUFBSyxJQUFJOUcsRUFBSSxFQUFHQSxFQUFJOEcsRUFBRzlHLElBQ25CLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJb0csRUFBR3BHLElBQ25CaVksRUFBSzNZLEVBQUk4RyxFQUFJcEcsR0FBS3hCLEtBQUswQyxLQUFLa1csRUFBRTlYLEVBQUk4RyxFQUFJcEcsR0FBS29YLEVBQUVwWCxFQUFJb0csRUFBSTlHLElBQU00WSxFQUFJLFFBR3ZFLE9BQU9ELENBQ1gsQ0FFQSxJQUFBRSxDQUFLOUIsR0FBSyxPQUFPQSxFQUFJLEVBQUksRUFBSUEsRUFBSSxHQUFLLEVBQUksQ0FBRyxDQUc3QyxXQUFBK0IsQ0FBWXRCLEdBQ1IsTUFBTUMsRUFBSUQsRUFBRTFYLE9BQ05zWCxFQUFJSSxFQUFFLEdBQUcxWCxPQUNmNEIsS0FBS3JDLE9BQU9vWSxFQUFJLEVBQUcseUNBQ25CL1YsS0FBS3JDLE9BQU8rWCxFQUFJLEVBQUcsc0NBQ25CLE1BQU0yQixFQUFRclgsS0FBSzZWLEtBQUtDLEdBQ3hCOVYsS0FBS29XLEVBQUlwVyxLQUFLZ1csSUFBSXFCLEVBQU9yWCxLQUFLb1UsV0FBWSxNQUMxQ3BVLEtBQUsrVixFQUFJQSxFQUNUL1YsS0FBS3NYLGNBQ1QsQ0FJQSxZQUFBN0UsQ0FBYWlELEdBQ1QsTUFBTUssRUFBSUwsRUFBRXRYLE9BQ1o0QixLQUFLckMsT0FBT29ZLEVBQUksRUFBRyx5Q0FFbkIsTUFBTXNCLEVBQVFyWCxLQUFLK1UsTUFBTWdCLEVBQUlBLEdBQzdCLElBQUssSUFBSXpYLEVBQUksRUFBR0EsRUFBSXlYLEVBQUd6WCxJQUNuQixJQUFLLElBQUlVLEVBQUlWLEVBQUksRUFBR1UsRUFBSStXLEVBQUcvVyxJQUFLLENBQzVCLE1BQU00RixFQUFJOFEsRUFBRXBYLEdBQUdVLEdBQ2ZxWSxFQUFNL1ksRUFBSXlYLEVBQUkvVyxHQUFLNEYsRUFDbkJ5UyxFQUFNclksRUFBSStXLEVBQUl6WCxHQUFLc0csQ0FDdkIsQ0FFSjVFLEtBQUtvVyxFQUFJcFcsS0FBS2dXLElBQUlxQixFQUFPclgsS0FBS29VLFdBQVksTUFDMUNwVSxLQUFLK1YsRUFBSUEsRUFDVC9WLEtBQUtzWCxjQUNULENBRUEsWUFBQUEsR0FFSXRYLEtBQUt1WCxFQUFJdlgsS0FBS21WLFFBQVFuVixLQUFLK1YsRUFBRy9WLEtBQUtzVSxLQUNuQ3RVLEtBQUt3WCxNQUFReFgsS0FBS21WLFFBQVFuVixLQUFLK1YsRUFBRy9WLEtBQUtzVSxJQUFLLEdBQzVDdFUsS0FBS3lYLE1BQVF6WCxLQUFLbVYsUUFBUW5WLEtBQUsrVixFQUFHL1YsS0FBS3NVLElBQUssR0FDNUN0VSxLQUFLbVUsS0FBTyxDQUNoQixDQUVBLFdBQUF6QixHQUNJLE9BQU8xUyxLQUFLdVgsQ0FDaEIsQ0FFQSxJQUFBL1MsR0FDSXhFLEtBQUttVSxNQUFRLEVBQ2IsTUFBTTRCLEVBQUkvVixLQUFLK1YsRUFDVDJCLEVBQUsxWCxLQUFLMlgsU0FBUzNYLEtBQUt1WCxHQUN4QkssRUFBT0YsRUFBR0UsS0FDVkMsRUFBT0gsRUFBR0csS0FFVkMsRUFBUTlYLEtBQUsrVSxNQUFNL1UsS0FBS3NVLEtBQzlCLElBQUssSUFBSWhXLEVBQUksRUFBR0EsRUFBSXlYLEVBQUd6WCxJQUNuQixJQUFLLElBQUlzRyxFQUFJLEVBQUdBLEVBQUk1RSxLQUFLc1UsSUFBSzFQLElBQUssQ0FDL0IsTUFBTW1ULEVBQU1GLEVBQUt2WixHQUFHc0csR0FDZG9ULEVBQU1oWSxLQUFLeVgsTUFBTW5aLEdBQUdzRyxHQUNwQnFULEVBQVNqWSxLQUFLd1gsTUFBTWxaLEdBQUdzRyxHQUU3QixJQUFJc1QsRUFBVWxZLEtBQUttWCxLQUFLWSxLQUFTL1gsS0FBS21YLEtBQUthLEdBQWdCLEdBQVRDLEVBQWVBLEVBQVMsR0FDdEVDLEVBQVUsTUFDVkEsRUFBVSxLQUVkbFksS0FBS3dYLE1BQU1sWixHQUFHc0csR0FBS3NULEVBRW5CLE1BQ01DLEdBRFNuWSxLQUFLbVUsS0FBTyxJQUFNLEdBQU0sSUFDZjZELEVBQU1oWSxLQUFLeUQsUUFBVXlVLEVBQVVMLEVBQUt2WixHQUFHc0csR0FDL0Q1RSxLQUFLeVgsTUFBTW5aLEdBQUdzRyxHQUFLdVQsRUFFbkJuWSxLQUFLdVgsRUFBRWpaLEdBQUdzRyxJQUFNdVQsRUFDaEJMLEVBQU1sVCxJQUFNNUUsS0FBS3VYLEVBQUVqWixHQUFHc0csRUFDMUIsQ0FHSixJQUFLLElBQUl0RyxFQUFJLEVBQUdBLEVBQUl5WCxFQUFHelgsSUFDbkIsSUFBSyxJQUFJc0csRUFBSSxFQUFHQSxFQUFJNUUsS0FBS3NVLElBQUsxUCxJQUMxQjVFLEtBQUt1WCxFQUFFalosR0FBR3NHLElBQU1rVCxFQUFNbFQsR0FBS21SLEVBSW5DLE9BQU82QixDQUNYLENBRUEsU0FBQVEsR0FDSSxNQUFNckMsRUFBSS9WLEtBQUsrVixFQUNUMkIsRUFBSzFYLEtBQUsyWCxTQUFTM1gsS0FBS3VYLEdBRXhCTSxHQURPSCxFQUFHRSxLQUNIRixFQUFHRyxNQUNWL1UsRUFBSSxLQUNWLElBQUssSUFBSXhFLEVBQUksRUFBR0EsRUFBSXlYLEVBQUd6WCxJQUNuQixJQUFLLElBQUlzRyxFQUFJLEVBQUdBLEVBQUk1RSxLQUFLc1UsSUFBSzFQLElBQUssQ0FDL0IsTUFBTXlULEVBQU9yWSxLQUFLdVgsRUFBRWpaLEdBQUdzRyxHQUN2QjVFLEtBQUt1WCxFQUFFalosR0FBR3NHLEdBQUt5VCxFQUFPdlYsRUFDdEIsTUFBTXdWLEVBQU10WSxLQUFLMlgsU0FBUzNYLEtBQUt1WCxHQUMvQnZYLEtBQUt1WCxFQUFFalosR0FBR3NHLEdBQUt5VCxFQUFPdlYsRUFDdEIsTUFBTXlWLEVBQU12WSxLQUFLMlgsU0FBUzNYLEtBQUt1WCxHQUN6QmlCLEVBQVdYLEVBQUt2WixHQUFHc0csR0FDbkI2VCxHQUFhSCxFQUFJVixLQUFPVyxFQUFJWCxPQUFTLEVBQUk5VSxHQUMvQzRWLFFBQVEvRCxJQUFJclcsRUFBSSxJQUFNc0csRUFBSSx5QkFBMkI0VCxFQUFXLG1CQUFxQkMsR0FDckZ6WSxLQUFLdVgsRUFBRWpaLEdBQUdzRyxHQUFLeVQsQ0FDbkIsQ0FFUixDQUVBLFFBQUFWLENBQVNKLEdBQ0wsTUFBTXhCLEVBQUkvVixLQUFLK1YsRUFDVHpCLEVBQU10VSxLQUFLc1UsSUFDWDhCLEVBQUlwVyxLQUFLb1csRUFDVHVDLEVBQU8zWSxLQUFLbVUsS0FBTyxJQUFNLEVBQUksRUFFN0J5RSxFQUFRNVksS0FBSytVLE1BQU1nQixFQUFJQSxHQUM3QixJQUFJOEMsRUFBTyxFQUNYLElBQUssSUFBSXZhLEVBQUksRUFBR0EsRUFBSXlYLEVBQUd6WCxJQUNuQixJQUFLLElBQUlVLEVBQUlWLEVBQUksRUFBR1UsRUFBSStXLEVBQUcvVyxJQUFLLENBQzVCLElBQUk4WixFQUFPLEVBQ1gsSUFBSyxJQUFJbFUsRUFBSSxFQUFHQSxFQUFJMFAsRUFBSzFQLElBQUssQ0FDMUIsTUFBTW1VLEVBQVF4QixFQUFFalosR0FBR3NHLEdBQUsyUyxFQUFFdlksR0FBRzRGLEdBQzdCa1UsR0FBUUMsRUFBUUEsQ0FDcEIsQ0FDQSxNQUFNQyxFQUFLLEdBQU8sRUFBTUYsR0FDeEJGLEVBQU10YSxFQUFJeVgsRUFBSS9XLEdBQUtnYSxFQUNuQkosRUFBTTVaLEVBQUkrVyxFQUFJelgsR0FBSzBhLEVBQ25CSCxHQUFRLEVBQUlHLENBQ2hCLENBR0osTUFBTUMsRUFBS2xELEVBQUlBLEVBQ1RtRCxFQUFJbFosS0FBSytVLE1BQU1rRSxHQUNyQixJQUFLLElBQUloYixFQUFJLEVBQUdBLEVBQUlnYixFQUFJaGIsSUFDcEJpYixFQUFFamIsR0FBS1QsS0FBSzBDLElBQUkwWSxFQUFNM2EsR0FBSzRhLEVBQU0sUUFFckMsSUFBSWpCLEVBQU8sRUFDWCxNQUFNQyxFQUFPLEdBQ2IsSUFBSyxJQUFJdlosRUFBSSxFQUFHQSxFQUFJeVgsRUFBR3pYLElBQUssQ0FDeEIsTUFBTTZhLEVBQU8sSUFBSXRhLE1BQU15VixHQUN2QixJQUFLLElBQUkxUCxFQUFJLEVBQUdBLEVBQUkwUCxFQUFLMVAsSUFDckJ1VSxFQUFLdlUsR0FBSyxFQUVkLElBQUssSUFBSTVGLEVBQUksRUFBR0EsRUFBSStXLEVBQUcvVyxJQUFLLENBQ3hCNFksSUFBU3hCLEVBQUU5WCxFQUFJeVgsRUFBSS9XLEdBQUt4QixLQUFLbVgsSUFBSXVFLEVBQUU1YSxFQUFJeVgsRUFBSS9XLElBQzNDLE1BQU1vYSxFQUFVLEdBQUtULEVBQU92QyxFQUFFOVgsRUFBSXlYLEVBQUkvVyxHQUFLa2EsRUFBRTVhLEVBQUl5WCxFQUFJL1csSUFBTTRaLEVBQU10YSxFQUFJeVgsRUFBSS9XLEdBQ3pFLElBQUssSUFBSTRGLEVBQUksRUFBR0EsRUFBSTBQLEVBQUsxUCxJQUNyQnVVLEVBQUt2VSxJQUFNd1UsR0FBVzdCLEVBQUVqWixHQUFHc0csR0FBSzJTLEVBQUV2WSxHQUFHNEYsR0FFN0MsQ0FDQWlULEVBQUs1SyxLQUFLa00sRUFDZCxDQUNBLE1BQU8sQ0FBRXZCLE9BQU1DLE9BQ25CLEUsK0NDMVZKLE1BQU0sRUFBV3ZRLE9BQU8rUixVQUFValIsU0FFbkIsU0FBU2tSLEVBQVdDLEdBQ2pDLE9BQU8sRUFBU0MsS0FBS0QsR0FBUUUsU0FBUyxTQUN4QyxDQ0llLFNBQVNDLEVBQ3RCclgsRUFDQXNYLEVBQ0FDLEdBRUEsSUFBSXRYLEVBQVEsRUFDWixNQUFNdVgsRUFBT0QsRUFBc0JELEdBRW5DLElBQUssSUFBSXJiLEVBQUksRUFBR0EsRUFBSStELEVBQUtnVCxFQUFFalgsT0FBUUUsSUFDakNnRSxHQUFTOUUsS0FBS3daLElBQUkzVSxFQUFLeVgsRUFBRXhiLEdBQUt1YixFQUFLeFgsRUFBS2dULEVBQUUvVyxLQUc1QyxPQUFPZ0UsQ0FDVCxDQ3BCQSxNQUFNLEVBQVdnRixPQUFPK1IsVUFBVWpSLFNBTzNCLFNBQVMsRUFBV3hGLEdBQ3ZCLE1BQU1tWCxFQUFNLEVBQVNQLEtBQUs1VyxHQUMxQixPQUFPbVgsRUFBSU4sU0FBUyxZQUFjTSxFQUFJQyxTQUFTLE1BQ25ELENDVkEsTUFBTSxFQUFXMVMsT0FBTytSLFVBQVVqUixTQU8zQixTQUFTLEVBQVd4RixHQUN2QixNQUFNbVgsRUFBTSxFQUFTUCxLQUFLNVcsR0FDMUIsT0FBT21YLEVBQUlOLFNBQVMsWUFBY00sRUFBSUMsU0FBUyxNQUNuRCxDQ1ZBLE1BQU0sRUFBVzFTLE9BQU8rUixVQUFValIsU0NBbEMsTUFBTSxFQUFXZCxPQUFPK1IsVUFBVWpSLFNDR2xDLFNBQVM2UixFQUFRQyxHQUNmLElBUUlDLEVBUkFsWCxFQUFVbVgsVUFBVWhjLE9BQVMsUUFBc0IwUixJQUFqQnNLLFVBQVUsR0FBbUJBLFVBQVUsR0FBSyxDQUFDLEVBRW5GLElBQUssRUFBV0YsR0FDZCxNQUFNLElBQUlHLFVBQVUsMEJBQ2YsR0FBcUIsSUFBakJILEVBQU05YixPQUNmLE1BQU0sSUFBSWljLFVBQVUsMkJBS3RCLFFBQXVCdkssSUFBbkI3TSxFQUFRa1gsT0FBc0IsQ0FDaEMsSUFBSyxFQUFXbFgsRUFBUWtYLFFBQ3RCLE1BQU0sSUFBSUUsVUFBVSwrQ0FHdEJGLEVBQVNsWCxFQUFRa1gsTUFDbkIsTUFDRUEsRUFBUyxJQUFJdGIsTUFBTXFiLEVBQU05YixRQUczQixJQUFJa2MsRUN2Qk4sU0FBYUosR0FDWCxJQUFJalgsRUFBVW1YLFVBQVVoYyxPQUFTLFFBQXNCMFIsSUFBakJzSyxVQUFVLEdBQW1CQSxVQUFVLEdBQUssQ0FBQyxFQUVuRixJRkdLLFNBQW9CeFgsR0FDdkIsTUFBTW1YLEVBQU0sRUFBU1AsS0FBSzVXLEdBQzFCLE9BQU9tWCxFQUFJTixTQUFTLFlBQWNNLEVBQUlDLFNBQVMsTUFDbkQsQ0VOTyxDQUFXRSxHQUNkLE1BQU0sSUFBSUcsVUFBVSwwQkFHdEIsR0FBcUIsSUFBakJILEVBQU05YixPQUNSLE1BQU0sSUFBSWljLFVBQVUsMkJBR3RCLElBQUlFLEVBQXFCdFgsRUFBUXVYLFVBQzdCQSxPQUFtQyxJQUF2QkQsRUFBZ0MsRUFBSUEsRUFDaERFLEVBQW1CeFgsRUFBUXlYLFFBQzNCQSxPQUErQixJQUFyQkQsRUFBOEJQLEVBQU05YixPQUFTcWMsRUFFM0QsR0FBSUQsRUFBWSxHQUFLQSxHQUFhTixFQUFNOWIsU0FBV3NELE9BQU9pWixVQUFVSCxHQUNsRSxNQUFNLElBQUkxYyxNQUFNLDREQUdsQixHQUFJNGMsR0FBV0YsR0FBYUUsRUFBVVIsRUFBTTliLFNBQVdzRCxPQUFPaVosVUFBVUQsR0FDdEUsTUFBTSxJQUFJNWMsTUFBTSxpRkFLbEIsSUFGQSxJQUFJOGMsRUFBV1YsRUFBTU0sR0FFWmxjLEVBQUlrYyxFQUFZLEVBQUdsYyxFQUFJb2MsRUFBU3BjLElBQ25DNGIsRUFBTTViLEdBQUtzYyxJQUFVQSxFQUFXVixFQUFNNWIsSUFHNUMsT0FBT3NjLENBQ1QsQ0RSbUIxWixDQUFJZ1osR0FDakJXLEVFeEJOLFNBQWFYLEdBQ1gsSUFBSWpYLEVBQVVtWCxVQUFVaGMsT0FBUyxRQUFzQjBSLElBQWpCc0ssVUFBVSxHQUFtQkEsVUFBVSxHQUFLLENBQUMsRUFFbkYsSUpHSyxTQUFvQnhYLEdBQ3ZCLE1BQU1tWCxFQUFNLEVBQVNQLEtBQUs1VyxHQUMxQixPQUFPbVgsRUFBSU4sU0FBUyxZQUFjTSxFQUFJQyxTQUFTLE1BQ25ELENJTk8sQ0FBV0UsR0FDZCxNQUFNLElBQUlHLFVBQVUsMEJBR3RCLEdBQXFCLElBQWpCSCxFQUFNOWIsT0FDUixNQUFNLElBQUlpYyxVQUFVLDJCQUd0QixJQUFJRSxFQUFxQnRYLEVBQVF1WCxVQUM3QkEsT0FBbUMsSUFBdkJELEVBQWdDLEVBQUlBLEVBQ2hERSxFQUFtQnhYLEVBQVF5WCxRQUMzQkEsT0FBK0IsSUFBckJELEVBQThCUCxFQUFNOWIsT0FBU3FjLEVBRTNELEdBQUlELEVBQVksR0FBS0EsR0FBYU4sRUFBTTliLFNBQVdzRCxPQUFPaVosVUFBVUgsR0FDbEUsTUFBTSxJQUFJMWMsTUFBTSw0REFHbEIsR0FBSTRjLEdBQVdGLEdBQWFFLEVBQVVSLEVBQU05YixTQUFXc0QsT0FBT2laLFVBQVVELEdBQ3RFLE1BQU0sSUFBSTVjLE1BQU0saUZBS2xCLElBRkEsSUFBSWdkLEVBQVdaLEVBQU1NLEdBRVpsYyxFQUFJa2MsRUFBWSxFQUFHbGMsRUFBSW9jLEVBQVNwYyxJQUNuQzRiLEVBQU01YixHQUFLd2MsSUFBVUEsRUFBV1osRUFBTTViLElBRzVDLE9BQU93YyxDQUNULENGUG1CNWEsQ0FBSWdhLEdBRXJCLEdBQUlJLElBQWVPLEVBQ2pCLE1BQU0sSUFBSUUsV0FBVywrRUFHdkIsSUFBSUMsRUFBZS9YLEVBQVEvQixJQUN2QjBaLE9BQTRCLElBQWpCSSxFQUEwQi9YLEVBQVFnWSxXQUFhWCxFQUFhLEVBQUlVLEVBQzNFRSxFQUFlalksRUFBUS9DLElBQ3ZCNGEsT0FBNEIsSUFBakJJLEVBQTBCalksRUFBUWdZLFdBQWFKLEVBQWEsRUFBSUssRUFFL0UsR0FBSU4sR0FBWUUsRUFDZCxNQUFNLElBQUlDLFdBQVcsOENBS3ZCLElBRkEsSUFBSUksR0FBVUwsRUFBV0YsSUFBYUMsRUFBYVAsR0FFMUNoYyxFQUFJLEVBQUdBLEVBQUk0YixFQUFNOWIsT0FBUUUsSUFDaEM2YixFQUFPN2IsSUFBTTRiLEVBQU01YixHQUFLZ2MsR0FBY2EsRUFBU1AsRUFHakQsT0FBT1QsQ0FDVCxDR2hEQSxNQUFNaUIsRUFBUyxJQUFJQyxPQUFPLEdBQ3BCQyxFQUFhLElBQUlELE9BQU8sR0FNdkIsU0FBU0UsRUFBeUI1YyxFQUFRc0UsRUFBVSxDQUFDLEdBQzFELE1BQU0sUUFDSnVZLEVBQVUsR0FBRSxXQUNaQyxFQUFhLEdBQUUsV0FDZkMsRUFBYSxFQUFDLFNBQ2RDLEVBQVcsUUFDVDFZLEVBQ0osTUFBTyxHQUFHdEUsRUFBT2UsWUFBWXlJLFdBQzdCaVQsT0FDQUUsSUFPRixTQUFxQjNjLEVBQVE2YyxFQUFTQyxFQUFZQyxFQUFZQyxHQUM1RCxNQUFNLEtBQUVDLEVBQUksUUFBRUMsR0FBWWxkLEVBQ3BCbWQsRUFBT3RlLEtBQUswRCxJQUFJMGEsRUFBTUosR0FDdEJPLEVBQU92ZSxLQUFLMEQsSUFBSTJhLEVBQVNKLEdBQ3pCM00sRUFBUyxHQUVmLEdBQWlCLFNBQWI2TSxFQUFxQixDQUN2QkEsR0FBVyxFQUNYSyxFQUFNLElBQUssSUFBSTFkLEVBQUksRUFBR0EsRUFBSXdkLEVBQU14ZCxJQUM5QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSStjLEVBQU0vYyxJQUN4QixHQUFJTCxFQUFPc1IsSUFBSTNSLEVBQUdVLEdBQUssRUFBRyxDQUN4QjJjLEdBQVcsRUFDWCxNQUFNSyxDQUNSLENBR04sQ0FFQSxJQUFLLElBQUkxZCxFQUFJLEVBQUdBLEVBQUl3ZCxFQUFNeGQsSUFBSyxDQUM3QixJQUFJMmQsRUFBTyxHQUNYLElBQUssSUFBSWpkLEVBQUksRUFBR0EsRUFBSStjLEVBQU0vYyxJQUN4QmlkLEVBQUtoUCxLQUFLaVAsRUFBYXZkLEVBQU9zUixJQUFJM1IsRUFBR1UsR0FBSTBjLEVBQVlDLElBRXZEN00sRUFBTzdCLEtBQUssR0FBR2dQLEVBQUtFLEtBQUssT0FDM0IsQ0FPQSxPQU5JSixJQUFTRixJQUNYL00sRUFBT0EsRUFBTzFRLE9BQVMsSUFBTSxRQUFReWQsRUFBVUosa0JBRTdDSyxJQUFTRixHQUNYOU0sRUFBTzdCLEtBQUssT0FBTzJPLEVBQU9KLGVBRXJCMU0sRUFBT3FOLEtBQUssS0FBS2IsSUFDMUIsQ0F2Q2VjLENBQVl6ZCxFQUFRNmMsRUFBU0MsRUFBWUMsRUFBWUMsT0FDbEVQLE9BQ0FBLFVBQWV6YyxFQUFPaWQsU0FDdEJSLGFBQWtCemMsRUFBT2tkLFlBRTNCLENBb0NBLFNBQVNLLEVBQWExUyxFQUFLa1MsRUFBWUMsR0FDckMsT0FDRW5TLEdBQU8sR0FBS21TLEVBQ1IsSUFBSVUsRUFBYzdTLEVBQUtrUyxFQUFhLEtBQ3BDVyxFQUFjN1MsRUFBS2tTLElBQ3ZCWSxPQUFPWixFQUNYLENBRUEsU0FBU1csRUFBYzdTLEVBQUt6SSxHQUUxQixJQUFJd2IsRUFBTS9TLEVBQUlwQixXQUNkLEdBQUltVSxFQUFJbmUsUUFBVTJDLEVBQUssT0FBT3diLEVBSTlCLElBQUlDLEVBQU1oVCxFQUFJaVQsUUFBUTFiLEdBSXRCLEdBSEl5YixFQUFJcGUsT0FBUzJDLElBQ2Z5YixFQUFNaFQsRUFBSWlULFFBQVFqZixLQUFLMEMsSUFBSSxFQUFHYSxHQUFPeWIsRUFBSXBlLE9BQVMyQyxNQUdsRHliLEVBQUlwZSxRQUFVMkMsSUFDYnliLEVBQUlFLFdBQVcsV0FDZkYsRUFBSUUsV0FBVyxVQUVoQixPQUFPRixFQUlULElBQUkxRixFQUFNdE4sRUFBSW1ULGNBQWM1YixHQUk1QixPQUhJK1YsRUFBSTFZLE9BQVMyQyxJQUNmK1YsRUFBTXROLEVBQUltVCxjQUFjbmYsS0FBSzBDLElBQUksRUFBR2EsR0FBTytWLEVBQUkxWSxPQUFTMkMsTUFFbkQrVixFQUFJOEYsTUFBTSxFQUNuQixDQ2pGTyxTQUFTQyxFQUFjbGUsRUFBUWtFLEVBQU9pYSxHQUMzQyxJQUFJNWMsRUFBTTRjLEVBQVFuZSxFQUFPaWQsS0FBT2pkLEVBQU9pZCxLQUFPLEVBQzlDLEdBQUkvWSxFQUFRLEdBQUtBLEVBQVEzQyxFQUN2QixNQUFNLElBQUk2YSxXQUFXLHlCQUV6QixDQVNPLFNBQVNnQyxFQUFpQnBlLEVBQVFrRSxFQUFPaWEsR0FDOUMsSUFBSTVjLEVBQU00YyxFQUFRbmUsRUFBT2tkLFFBQVVsZCxFQUFPa2QsUUFBVSxFQUNwRCxHQUFJaFosRUFBUSxHQUFLQSxFQUFRM0MsRUFDdkIsTUFBTSxJQUFJNmEsV0FBVyw0QkFFekIsQ0FVTyxTQUFTaUMsRUFBZXJlLEVBQVFzZSxHQUlyQyxHQUhJQSxFQUFPQyxZQUNURCxFQUFTQSxFQUFPQyxhQUVkRCxFQUFPN2UsU0FBV08sRUFBT2tkLFFBQzNCLE1BQU0sSUFBSWQsV0FDUix5REFHSixPQUFPa0MsQ0FDVCxDQVVPLFNBQVNFLEVBQWtCeGUsRUFBUXNlLEdBSXhDLEdBSElBLEVBQU9DLFlBQ1RELEVBQVNBLEVBQU9DLGFBRWRELEVBQU83ZSxTQUFXTyxFQUFPaWQsS0FDM0IsTUFBTSxJQUFJYixXQUFXLHNEQUV2QixPQUFPa0MsQ0FDVCxDQTBCTyxTQUFTRyxFQUFXemUsRUFBUW1ELEVBQVVSLEVBQVErYixFQUFhQyxHQUNoRSxHQUF5QixJQUFyQmxELFVBQVVoYyxPQUNaLE1BQU0sSUFBSTJjLFdBQVcsd0JBTXZCLEdBSkF3QyxFQUFZLFdBQVl6YixHQUN4QnliLEVBQVksU0FBVWpjLEdBQ3RCaWMsRUFBWSxjQUFlRixHQUMzQkUsRUFBWSxZQUFhRCxHQUV2QnhiLEVBQVdSLEdBQ1grYixFQUFjQyxHQUNkeGIsRUFBVyxHQUNYQSxHQUFZbkQsRUFBT2lkLE1BQ25CdGEsRUFBUyxHQUNUQSxHQUFVM0MsRUFBT2lkLE1BQ2pCeUIsRUFBYyxHQUNkQSxHQUFlMWUsRUFBT2tkLFNBQ3RCeUIsRUFBWSxHQUNaQSxHQUFhM2UsRUFBT2tkLFFBRXBCLE1BQU0sSUFBSWQsV0FBVyxxQ0FFekIsQ0FFTyxTQUFTeUMsRUFBU3BmLEVBQVF3RSxFQUFRLEdBQ3ZDLElBQUk0USxFQUFRLEdBQ1osSUFBSyxJQUFJbFYsRUFBSSxFQUFHQSxFQUFJRixFQUFRRSxJQUMxQmtWLEVBQU12RyxLQUFLckssR0FFYixPQUFPNFEsQ0FDVCxDQUVBLFNBQVMrSixFQUFZcFYsRUFBTXZGLEdBQ3pCLEdBQXFCLGlCQUFWQSxFQUNULE1BQU0sSUFBSXlYLFVBQVUsR0FBR2xTLHFCQUUzQixDQUVPLFNBQVNzVixFQUFjOWUsR0FDNUIsR0FBSUEsRUFBTytlLFVBQ1QsTUFBTSxJQUFJNWYsTUFBTSx3Q0FFcEIsQ0NsR08sTUFBTTZmLEVBQ1gsa0JBQU9DLENBQVlDLEVBQVNDLEVBQVlwVCxHQUV0QyxHQURhbVQsRUFBVUMsSUFDUnBULEVBQVF0TSxPQUNyQixNQUFNLElBQUkyYyxXQUFXLCtDQUV2QixJQUFJZ0QsRUFBWSxJQUFJQyxFQUFPSCxFQUFTQyxHQUNwQyxJQUFLLElBQUlHLEVBQU0sRUFBR0EsRUFBTUosRUFBU0ksSUFDL0IsSUFBSyxJQUFJQyxFQUFTLEVBQUdBLEVBQVNKLEVBQVlJLElBQ3hDSCxFQUFVdGIsSUFBSXdiLEVBQUtDLEVBQVF4VCxFQUFRdVQsRUFBTUgsRUFBYUksSUFHMUQsT0FBT0gsQ0FDVCxDQUVBLGdCQUFPSSxDQUFVelQsR0FDZixJQUFJdVMsRUFBUyxJQUFJZSxFQUFPLEVBQUd0VCxFQUFRdE0sUUFDbkMsSUFBSyxJQUFJRSxFQUFJLEVBQUdBLEVBQUlvTSxFQUFRdE0sT0FBUUUsSUFDbEMyZSxFQUFPeGEsSUFBSSxFQUFHbkUsRUFBR29NLEVBQVFwTSxJQUUzQixPQUFPMmUsQ0FDVCxDQUVBLG1CQUFPbUIsQ0FBYTFULEdBQ2xCLElBQUl1UyxFQUFTLElBQUllLEVBQU90VCxFQUFRdE0sT0FBUSxHQUN4QyxJQUFLLElBQUlFLEVBQUksRUFBR0EsRUFBSW9NLEVBQVF0TSxPQUFRRSxJQUNsQzJlLEVBQU94YSxJQUFJbkUsRUFBRyxFQUFHb00sRUFBUXBNLElBRTNCLE9BQU8yZSxDQUNULENBRUEsWUFBT2xJLENBQU02RyxFQUFNQyxHQUNqQixPQUFPLElBQUltQyxFQUFPcEMsRUFBTUMsRUFDMUIsQ0FFQSxXQUFPd0MsQ0FBS3pDLEVBQU1DLEdBQ2hCLE9BQU8sSUFBSW1DLEVBQU9wQyxFQUFNQyxHQUFTamQsS0FBSyxFQUN4QyxDQUVBLFdBQU8wZixDQUFLMUMsRUFBTUMsRUFBUzVZLEVBQVUsQ0FBQyxHQUNwQyxHQUF1QixpQkFBWkEsRUFDVCxNQUFNLElBQUlvWCxVQUFVLDZCQUV0QixNQUFNLE9BQUU1YyxFQUFTRCxLQUFLQyxRQUFXd0YsRUFDakMsSUFBSXRFLEVBQVMsSUFBSXFmLEVBQU9wQyxFQUFNQyxHQUM5QixJQUFLLElBQUl2ZCxFQUFJLEVBQUdBLEVBQUlzZCxFQUFNdGQsSUFDeEIsSUFBSyxJQUFJVSxFQUFJLEVBQUdBLEVBQUk2YyxFQUFTN2MsSUFDM0JMLEVBQU84RCxJQUFJbkUsRUFBR1UsRUFBR3ZCLEtBR3JCLE9BQU9rQixDQUNULENBRUEsY0FBTzRmLENBQVEzQyxFQUFNQyxFQUFTNVksRUFBVSxDQUFDLEdBQ3ZDLEdBQXVCLGlCQUFaQSxFQUNULE1BQU0sSUFBSW9YLFVBQVUsNkJBRXRCLE1BQU0sSUFBRW5aLEVBQU0sRUFBQyxJQUFFaEIsRUFBTSxJQUFJLE9BQUV6QyxFQUFTRCxLQUFLQyxRQUFXd0YsRUFDdEQsSUFBS3ZCLE9BQU9pWixVQUFVelosR0FBTSxNQUFNLElBQUltWixVQUFVLDBCQUNoRCxJQUFLM1ksT0FBT2laLFVBQVV6YSxHQUFNLE1BQU0sSUFBSW1hLFVBQVUsMEJBQ2hELEdBQUluWixHQUFPaEIsRUFBSyxNQUFNLElBQUk2YSxXQUFXLGdDQUNyQyxJQUFJeUQsRUFBV3RlLEVBQU1nQixFQUNqQnZDLEVBQVMsSUFBSXFmLEVBQU9wQyxFQUFNQyxHQUM5QixJQUFLLElBQUl2ZCxFQUFJLEVBQUdBLEVBQUlzZCxFQUFNdGQsSUFDeEIsSUFBSyxJQUFJVSxFQUFJLEVBQUdBLEVBQUk2YyxFQUFTN2MsSUFBSyxDQUNoQyxJQUFJNEQsRUFBUTFCLEVBQU0xRCxLQUFLaWhCLE1BQU1oaEIsSUFBVytnQixHQUN4QzdmLEVBQU84RCxJQUFJbkUsRUFBR1UsRUFBRzRELEVBQ25CLENBRUYsT0FBT2pFLENBQ1QsQ0FFQSxVQUFPK2YsQ0FBSTlDLEVBQU1DLEVBQVNqWixRQUNSa04sSUFBWitMLElBQXVCQSxFQUFVRCxRQUN2QjlMLElBQVZsTixJQUFxQkEsRUFBUSxHQUNqQyxJQUFJMUIsRUFBTTFELEtBQUswRCxJQUFJMGEsRUFBTUMsR0FDckJsZCxFQUFTcUIsS0FBSytVLE1BQU02RyxFQUFNQyxHQUM5QixJQUFLLElBQUl2ZCxFQUFJLEVBQUdBLEVBQUk0QyxFQUFLNUMsSUFDdkJLLEVBQU84RCxJQUFJbkUsRUFBR0EsRUFBR3NFLEdBRW5CLE9BQU9qRSxDQUNULENBRUEsV0FBT2dnQixDQUFLdGMsRUFBTXVaLEVBQU1DLEdBQ3RCLElBQUkrQyxFQUFJdmMsRUFBS2pFLFlBQ0EwUixJQUFUOEwsSUFBb0JBLEVBQU9nRCxRQUNmOU8sSUFBWitMLElBQXVCQSxFQUFVRCxHQUNyQyxJQUFJMWEsRUFBTTFELEtBQUswRCxJQUFJMGQsRUFBR2hELEVBQU1DLEdBQ3hCbGQsRUFBU3FCLEtBQUsrVSxNQUFNNkcsRUFBTUMsR0FDOUIsSUFBSyxJQUFJdmQsRUFBSSxFQUFHQSxFQUFJNEMsRUFBSzVDLElBQ3ZCSyxFQUFPOEQsSUFBSW5FLEVBQUdBLEVBQUcrRCxFQUFLL0QsSUFFeEIsT0FBT0ssQ0FDVCxDQUVBLFVBQU91QyxDQUFJMmQsRUFBU0MsR0FDbEJELEVBQVU3ZSxLQUFLK2UsWUFBWUYsR0FDM0JDLEVBQVU5ZSxLQUFLK2UsWUFBWUQsR0FDM0IsSUFBSWxELEVBQU9pRCxFQUFRakQsS0FDZkMsRUFBVWdELEVBQVFoRCxRQUNsQi9NLEVBQVMsSUFBSWtQLEVBQU9wQyxFQUFNQyxHQUM5QixJQUFLLElBQUl2ZCxFQUFJLEVBQUdBLEVBQUlzZCxFQUFNdGQsSUFDeEIsSUFBSyxJQUFJVSxFQUFJLEVBQUdBLEVBQUk2YyxFQUFTN2MsSUFDM0I4UCxFQUFPck0sSUFBSW5FLEVBQUdVLEVBQUd4QixLQUFLMEQsSUFBSTJkLEVBQVE1TyxJQUFJM1IsRUFBR1UsR0FBSThmLEVBQVE3TyxJQUFJM1IsRUFBR1UsS0FHaEUsT0FBTzhQLENBQ1QsQ0FFQSxVQUFPNU8sQ0FBSTJlLEVBQVNDLEdBQ2xCRCxFQUFVN2UsS0FBSytlLFlBQVlGLEdBQzNCQyxFQUFVOWUsS0FBSytlLFlBQVlELEdBQzNCLElBQUlsRCxFQUFPaUQsRUFBUWpELEtBQ2ZDLEVBQVVnRCxFQUFRaEQsUUFDbEIvTSxFQUFTLElBQUk5TyxLQUFLNGIsRUFBTUMsR0FDNUIsSUFBSyxJQUFJdmQsRUFBSSxFQUFHQSxFQUFJc2QsRUFBTXRkLElBQ3hCLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJNmMsRUFBUzdjLElBQzNCOFAsRUFBT3JNLElBQUluRSxFQUFHVSxFQUFHeEIsS0FBSzBDLElBQUkyZSxFQUFRNU8sSUFBSTNSLEVBQUdVLEdBQUk4ZixFQUFRN08sSUFBSTNSLEVBQUdVLEtBR2hFLE9BQU84UCxDQUNULENBRUEsa0JBQU9pUSxDQUFZbmMsR0FDakIsT0FBTythLEVBQWVxQixTQUFTcGMsR0FBU0EsRUFBUSxJQUFJb2IsRUFBT3BiLEVBQzdELENBRUEsZUFBT29jLENBQVNwYyxHQUNkLE9BQWdCLE1BQVRBLEdBQWlDLFdBQWhCQSxFQUFNcWMsS0FDaEMsQ0FFQSxRQUFJemYsR0FDRixPQUFPUSxLQUFLNGIsS0FBTzViLEtBQUs2YixPQUMxQixDQUVBLEtBQUFxRCxDQUFNQyxHQUNKLEdBQXdCLG1CQUFiQSxFQUNULE1BQU0sSUFBSTlFLFVBQVUsK0JBRXRCLElBQUssSUFBSS9iLEVBQUksRUFBR0EsRUFBSTBCLEtBQUs0YixLQUFNdGQsSUFDN0IsSUFBSyxJQUFJVSxFQUFJLEVBQUdBLEVBQUlnQixLQUFLNmIsUUFBUzdjLElBQ2hDbWdCLEVBQVMzRixLQUFLeFosS0FBTTFCLEVBQUdVLEdBRzNCLE9BQU9nQixJQUNULENBRUEsU0FBQWtkLEdBQ0UsSUFBSTFKLEVBQVEsR0FDWixJQUFLLElBQUlsVixFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQzdCLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJZ0IsS0FBSzZiLFFBQVM3YyxJQUNoQ3dVLEVBQU12RyxLQUFLak4sS0FBS2lRLElBQUkzUixFQUFHVSxJQUczQixPQUFPd1UsQ0FDVCxDQUVBLFNBQUE0TCxHQUNFLElBQUl6VixFQUFPLEdBQ1gsSUFBSyxJQUFJckwsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzRiLEtBQU10ZCxJQUFLLENBQ2xDcUwsRUFBS3NELEtBQUssSUFDVixJQUFLLElBQUlqTyxFQUFJLEVBQUdBLEVBQUlnQixLQUFLNmIsUUFBUzdjLElBQ2hDMkssRUFBS3JMLEdBQUcyTyxLQUFLak4sS0FBS2lRLElBQUkzUixFQUFHVSxHQUU3QixDQUNBLE9BQU8ySyxDQUNULENBRUEsTUFBQTBWLEdBQ0UsT0FBT3JmLEtBQUtvZixXQUNkLENBRUEsV0FBQUUsR0FDRSxPQUFxQixJQUFkdGYsS0FBSzRiLElBQ2QsQ0FFQSxjQUFBMkQsR0FDRSxPQUF3QixJQUFqQnZmLEtBQUs2YixPQUNkLENBRUEsUUFBQTJELEdBQ0UsT0FBcUIsSUFBZHhmLEtBQUs0YixNQUErQixJQUFqQjViLEtBQUs2YixPQUNqQyxDQUVBLFFBQUE0RCxHQUNFLE9BQU96ZixLQUFLNGIsT0FBUzViLEtBQUs2YixPQUM1QixDQUVBLE9BQUE2QixHQUNFLE9BQXFCLElBQWQxZCxLQUFLNGIsTUFBK0IsSUFBakI1YixLQUFLNmIsT0FDakMsQ0FFQSxXQUFBNkQsR0FDRSxHQUFJMWYsS0FBS3lmLFdBQVksQ0FDbkIsSUFBSyxJQUFJbmhCLEVBQUksRUFBR0EsRUFBSTBCLEtBQUs0YixLQUFNdGQsSUFDN0IsSUFBSyxJQUFJVSxFQUFJLEVBQUdBLEdBQUtWLEVBQUdVLElBQ3RCLEdBQUlnQixLQUFLaVEsSUFBSTNSLEVBQUdVLEtBQU9nQixLQUFLaVEsSUFBSWpSLEVBQUdWLEdBQ2pDLE9BQU8sRUFJYixPQUFPLENBQ1QsQ0FDQSxPQUFPLENBQ1QsQ0FFQSxhQUFBcWhCLEdBQ0UsSUFBSXJoQixFQUFJLEVBQ0pVLEVBQUksRUFDSjRnQixHQUFrQixFQUNsQkQsR0FBZ0IsRUFDaEJFLEdBQVUsRUFDZCxLQUFPdmhCLEVBQUkwQixLQUFLNGIsTUFBUStELEdBQWUsQ0FHckMsSUFGQTNnQixFQUFJLEVBQ0o2Z0IsR0FBVSxFQUNIN2dCLEVBQUlnQixLQUFLNmIsVUFBdUIsSUFBWmdFLEdBQ0YsSUFBbkI3ZixLQUFLaVEsSUFBSTNSLEVBQUdVLEdBQ2RBLElBQzRCLElBQW5CZ0IsS0FBS2lRLElBQUkzUixFQUFHVSxJQUFZQSxFQUFJNGdCLEdBQ3JDQyxHQUFVLEVBQ1ZELEVBQWlCNWdCLElBRWpCMmdCLEdBQWdCLEVBQ2hCRSxHQUFVLEdBR2R2aEIsR0FDRixDQUNBLE9BQU9xaEIsQ0FDVCxDQUVBLG9CQUFBRyxHQUNFLElBQUl4aEIsRUFBSSxFQUNKVSxFQUFJLEVBQ0o0Z0IsR0FBa0IsRUFDbEJFLEdBQXVCLEVBQ3ZCRCxHQUFVLEVBQ2QsS0FBT3ZoQixFQUFJMEIsS0FBSzRiLE1BQVFrRSxHQUFzQixDQUc1QyxJQUZBOWdCLEVBQUksRUFDSjZnQixHQUFVLEVBQ0g3Z0IsRUFBSWdCLEtBQUs2YixVQUF1QixJQUFaZ0UsR0FDRixJQUFuQjdmLEtBQUtpUSxJQUFJM1IsRUFBR1UsR0FDZEEsSUFDNEIsSUFBbkJnQixLQUFLaVEsSUFBSTNSLEVBQUdVLElBQVlBLEVBQUk0Z0IsR0FDckNDLEdBQVUsRUFDVkQsRUFBaUI1Z0IsSUFFakI4Z0IsR0FBdUIsRUFDdkJELEdBQVUsR0FHZCxJQUFLLElBQUl0UyxFQUFJdk8sRUFBSSxFQUFHdU8sRUFBSXZOLEtBQUs0YixLQUFNck8sSUFDVixJQUFuQnZOLEtBQUtpUSxJQUFJM1IsRUFBR2lQLEtBQ2R1UyxHQUF1QixHQUczQnhoQixHQUNGLENBQ0EsT0FBT3doQixDQUNULENBRUEsV0FBQUMsR0FDRSxJQUFJalIsRUFBUzlPLEtBQUs4TCxRQUNka1UsRUFBSSxFQUNKelMsRUFBSSxFQUNSLEtBQU95UyxFQUFJbFIsRUFBTzhNLE1BQVFyTyxFQUFJdUIsRUFBTytNLFNBQVMsQ0FDNUMsSUFBSW9FLEVBQU9ELEVBQ1gsSUFBSyxJQUFJMWhCLEVBQUkwaEIsRUFBRzFoQixFQUFJd1EsRUFBTzhNLEtBQU10ZCxJQUMzQndRLEVBQU9tQixJQUFJM1IsRUFBR2lQLEdBQUt1QixFQUFPbUIsSUFBSWdRLEVBQU0xUyxLQUN0QzBTLEVBQU8zaEIsR0FHWCxHQUE0QixJQUF4QndRLEVBQU9tQixJQUFJZ1EsRUFBTTFTLEdBQ25CQSxRQUNLLENBQ0x1QixFQUFPb1IsU0FBU0YsRUFBR0MsR0FDbkIsSUFBSUUsRUFBTXJSLEVBQU9tQixJQUFJK1AsRUFBR3pTLEdBQ3hCLElBQUssSUFBSXZPLEVBQUl1TyxFQUFHdk8sRUFBSThQLEVBQU8rTSxRQUFTN2MsSUFDbEM4UCxFQUFPck0sSUFBSXVkLEVBQUdoaEIsRUFBRzhQLEVBQU9tQixJQUFJK1AsRUFBR2hoQixHQUFLbWhCLEdBRXRDLElBQUssSUFBSTdoQixFQUFJMGhCLEVBQUksRUFBRzFoQixFQUFJd1EsRUFBTzhNLEtBQU10ZCxJQUFLLENBQ3hDLElBQUk2YyxFQUFTck0sRUFBT21CLElBQUkzUixFQUFHaVAsR0FBS3VCLEVBQU9tQixJQUFJK1AsRUFBR3pTLEdBQzlDdUIsRUFBT3JNLElBQUluRSxFQUFHaVAsRUFBRyxHQUNqQixJQUFLLElBQUl2TyxFQUFJdU8sRUFBSSxFQUFHdk8sRUFBSThQLEVBQU8rTSxRQUFTN2MsSUFDdEM4UCxFQUFPck0sSUFBSW5FLEVBQUdVLEVBQUc4UCxFQUFPbUIsSUFBSTNSLEVBQUdVLEdBQUs4UCxFQUFPbUIsSUFBSStQLEVBQUdoaEIsR0FBS21jLEVBRTNELENBQ0E2RSxJQUNBelMsR0FDRixDQUNGLENBQ0EsT0FBT3VCLENBQ1QsQ0FFQSxrQkFBQXNSLEdBQ0UsSUFBSXRSLEVBQVM5TyxLQUFLK2YsY0FDZE0sRUFBSXZSLEVBQU8rTSxRQUNYelcsRUFBSTBKLEVBQU84TSxLQUNYb0UsRUFBSTVhLEVBQUksRUFDWixLQUFPNGEsR0FBSyxHQUNWLEdBQXlCLElBQXJCbFIsRUFBT3dSLE9BQU9OLEdBQ2hCQSxRQUNLLENBQ0wsSUFBSWhpQixFQUFJLEVBQ0p1aUIsR0FBUSxFQUNaLEtBQU92aUIsRUFBSW9ILElBQWUsSUFBVm1iLEdBQ1csSUFBckJ6UixFQUFPbUIsSUFBSStQLEVBQUdoaUIsR0FDaEJ1aUIsR0FBUSxFQUVSdmlCLElBR0osSUFBSyxJQUFJTSxFQUFJLEVBQUdBLEVBQUkwaEIsRUFBRzFoQixJQUFLLENBQzFCLElBQUk2YyxFQUFTck0sRUFBT21CLElBQUkzUixFQUFHTixHQUMzQixJQUFLLElBQUlnQixFQUFJaEIsRUFBR2dCLEVBQUlxaEIsRUFBR3JoQixJQUFLLENBQzFCLElBQUltaEIsRUFBTXJSLEVBQU9tQixJQUFJM1IsRUFBR1UsR0FBS21jLEVBQVNyTSxFQUFPbUIsSUFBSStQLEVBQUdoaEIsR0FDcEQ4UCxFQUFPck0sSUFBSW5FLEVBQUdVLEVBQUdtaEIsRUFDbkIsQ0FDRixDQUNBSCxHQUNGLENBRUYsT0FBT2xSLENBQ1QsQ0FFQSxHQUFBck0sR0FDRSxNQUFNLElBQUkzRSxNQUFNLDhCQUNsQixDQUVBLEdBQUFtUyxHQUNFLE1BQU0sSUFBSW5TLE1BQU0sOEJBQ2xCLENBRUEsTUFBQXVkLENBQU9wWSxFQUFVLENBQUMsR0FDaEIsR0FBdUIsaUJBQVpBLEVBQ1QsTUFBTSxJQUFJb1gsVUFBVSw2QkFFdEIsTUFBTSxLQUFFdUIsRUFBTyxFQUFDLFFBQUVDLEVBQVUsR0FBTTVZLEVBQ2xDLElBQUt2QixPQUFPaVosVUFBVWlCLElBQVNBLEdBQVEsRUFDckMsTUFBTSxJQUFJdkIsVUFBVSxtQ0FFdEIsSUFBSzNZLE9BQU9pWixVQUFVa0IsSUFBWUEsR0FBVyxFQUMzQyxNQUFNLElBQUl4QixVQUFVLHNDQUV0QixJQUFJMWIsRUFBUyxJQUFJcWYsRUFBT2hlLEtBQUs0YixLQUFPQSxFQUFNNWIsS0FBSzZiLFFBQVVBLEdBQ3pELElBQUssSUFBSXZkLEVBQUksRUFBR0EsRUFBSXNkLEVBQU10ZCxJQUN4QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSTZjLEVBQVM3YyxJQUMzQkwsRUFBTzZoQixhQUFheGdCLEtBQU1BLEtBQUs0YixLQUFPdGQsRUFBRzBCLEtBQUs2YixRQUFVN2MsR0FHNUQsT0FBT0wsQ0FDVCxDQUVBLElBQUFDLENBQUtnRSxHQUNILElBQUssSUFBSXRFLEVBQUksRUFBR0EsRUFBSTBCLEtBQUs0YixLQUFNdGQsSUFDN0IsSUFBSyxJQUFJVSxFQUFJLEVBQUdBLEVBQUlnQixLQUFLNmIsUUFBUzdjLElBQ2hDZ0IsS0FBS3lDLElBQUluRSxFQUFHVSxFQUFHNEQsR0FHbkIsT0FBTzVDLElBQ1QsQ0FFQSxHQUFBeWdCLEdBQ0UsT0FBT3pnQixLQUFLMGdCLE1BQU0sRUFDcEIsQ0FFQSxNQUFBQyxDQUFPOWQsR0FDTGdhLEVBQWM3YyxLQUFNNkMsR0FDcEIsSUFBSW9iLEVBQU0sR0FDVixJQUFLLElBQUkzZixFQUFJLEVBQUdBLEVBQUkwQixLQUFLNmIsUUFBU3ZkLElBQ2hDMmYsRUFBSWhSLEtBQUtqTixLQUFLaVEsSUFBSXBOLEVBQU92RSxJQUUzQixPQUFPMmYsQ0FDVCxDQUVBLFlBQUEyQyxDQUFhL2QsR0FDWCxPQUFPbWIsRUFBT0csVUFBVW5lLEtBQUsyZ0IsT0FBTzlkLEdBQ3RDLENBRUEsTUFBQWdlLENBQU9oZSxFQUFPMlEsR0FDWnFKLEVBQWM3YyxLQUFNNkMsR0FDcEIyUSxFQUFRd0osRUFBZWhkLEtBQU13VCxHQUM3QixJQUFLLElBQUlsVixFQUFJLEVBQUdBLEVBQUkwQixLQUFLNmIsUUFBU3ZkLElBQ2hDMEIsS0FBS3lDLElBQUlJLEVBQU92RSxFQUFHa1YsRUFBTWxWLElBRTNCLE9BQU8wQixJQUNULENBRUEsUUFBQWtnQixDQUFTWSxFQUFNQyxHQUNibEUsRUFBYzdjLEtBQU04Z0IsR0FDcEJqRSxFQUFjN2MsS0FBTStnQixHQUNwQixJQUFLLElBQUl6aUIsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzZiLFFBQVN2ZCxJQUFLLENBQ3JDLElBQUl3TSxFQUFPOUssS0FBS2lRLElBQUk2USxFQUFNeGlCLEdBQzFCMEIsS0FBS3lDLElBQUlxZSxFQUFNeGlCLEVBQUcwQixLQUFLaVEsSUFBSThRLEVBQU16aUIsSUFDakMwQixLQUFLeUMsSUFBSXNlLEVBQU16aUIsRUFBR3dNLEVBQ3BCLENBQ0EsT0FBTzlLLElBQ1QsQ0FFQSxTQUFBZ2hCLENBQVVuZSxHQUNSa2EsRUFBaUIvYyxLQUFNNkMsR0FDdkIsSUFBSXFiLEVBQVMsR0FDYixJQUFLLElBQUk1ZixFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQzdCNGYsRUFBT2pSLEtBQUtqTixLQUFLaVEsSUFBSTNSLEVBQUd1RSxJQUUxQixPQUFPcWIsQ0FDVCxDQUVBLGVBQUErQyxDQUFnQnBlLEdBQ2QsT0FBT21iLEVBQU9JLGFBQWFwZSxLQUFLZ2hCLFVBQVVuZSxHQUM1QyxDQUVBLFNBQUFxZSxDQUFVcmUsRUFBTzJRLEdBQ2Z1SixFQUFpQi9jLEtBQU02QyxHQUN2QjJRLEVBQVEySixFQUFrQm5kLEtBQU13VCxHQUNoQyxJQUFLLElBQUlsVixFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQzdCMEIsS0FBS3lDLElBQUluRSxFQUFHdUUsRUFBTzJRLEVBQU1sVixJQUUzQixPQUFPMEIsSUFDVCxDQUVBLFdBQUFtaEIsQ0FBWUMsRUFBU0MsR0FDbkJ0RSxFQUFpQi9jLEtBQU1vaEIsR0FDdkJyRSxFQUFpQi9jLEtBQU1xaEIsR0FDdkIsSUFBSyxJQUFJL2lCLEVBQUksRUFBR0EsRUFBSTBCLEtBQUs0YixLQUFNdGQsSUFBSyxDQUNsQyxJQUFJd00sRUFBTzlLLEtBQUtpUSxJQUFJM1IsRUFBRzhpQixHQUN2QnBoQixLQUFLeUMsSUFBSW5FLEVBQUc4aUIsRUFBU3BoQixLQUFLaVEsSUFBSTNSLEVBQUcraUIsSUFDakNyaEIsS0FBS3lDLElBQUluRSxFQUFHK2lCLEVBQVN2VyxFQUN2QixDQUNBLE9BQU85SyxJQUNULENBRUEsWUFBQXNoQixDQUFhckUsR0FDWEEsRUFBU0QsRUFBZWhkLEtBQU1pZCxHQUM5QixJQUFLLElBQUkzZSxFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQzdCLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJZ0IsS0FBSzZiLFFBQVM3YyxJQUNoQ2dCLEtBQUt5QyxJQUFJbkUsRUFBR1UsRUFBR2dCLEtBQUtpUSxJQUFJM1IsRUFBR1UsR0FBS2llLEVBQU9qZSxJQUczQyxPQUFPZ0IsSUFDVCxDQUVBLFlBQUF1aEIsQ0FBYXRFLEdBQ1hBLEVBQVNELEVBQWVoZCxLQUFNaWQsR0FDOUIsSUFBSyxJQUFJM2UsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzRiLEtBQU10ZCxJQUM3QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSWdCLEtBQUs2YixRQUFTN2MsSUFDaENnQixLQUFLeUMsSUFBSW5FLEVBQUdVLEVBQUdnQixLQUFLaVEsSUFBSTNSLEVBQUdVLEdBQUtpZSxFQUFPamUsSUFHM0MsT0FBT2dCLElBQ1QsQ0FFQSxZQUFBd2hCLENBQWF2RSxHQUNYQSxFQUFTRCxFQUFlaGQsS0FBTWlkLEdBQzlCLElBQUssSUFBSTNlLEVBQUksRUFBR0EsRUFBSTBCLEtBQUs0YixLQUFNdGQsSUFDN0IsSUFBSyxJQUFJVSxFQUFJLEVBQUdBLEVBQUlnQixLQUFLNmIsUUFBUzdjLElBQ2hDZ0IsS0FBS3lDLElBQUluRSxFQUFHVSxFQUFHZ0IsS0FBS2lRLElBQUkzUixFQUFHVSxHQUFLaWUsRUFBT2plLElBRzNDLE9BQU9nQixJQUNULENBRUEsWUFBQXloQixDQUFheEUsR0FDWEEsRUFBU0QsRUFBZWhkLEtBQU1pZCxHQUM5QixJQUFLLElBQUkzZSxFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQzdCLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJZ0IsS0FBSzZiLFFBQVM3YyxJQUNoQ2dCLEtBQUt5QyxJQUFJbkUsRUFBR1UsRUFBR2dCLEtBQUtpUSxJQUFJM1IsRUFBR1UsR0FBS2llLEVBQU9qZSxJQUczQyxPQUFPZ0IsSUFDVCxDQUVBLGVBQUEwaEIsQ0FBZ0J6RSxHQUNkQSxFQUFTRSxFQUFrQm5kLEtBQU1pZCxHQUNqQyxJQUFLLElBQUkzZSxFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQzdCLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJZ0IsS0FBSzZiLFFBQVM3YyxJQUNoQ2dCLEtBQUt5QyxJQUFJbkUsRUFBR1UsRUFBR2dCLEtBQUtpUSxJQUFJM1IsRUFBR1UsR0FBS2llLEVBQU8zZSxJQUczQyxPQUFPMEIsSUFDVCxDQUVBLGVBQUEyaEIsQ0FBZ0IxRSxHQUNkQSxFQUFTRSxFQUFrQm5kLEtBQU1pZCxHQUNqQyxJQUFLLElBQUkzZSxFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQzdCLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJZ0IsS0FBSzZiLFFBQVM3YyxJQUNoQ2dCLEtBQUt5QyxJQUFJbkUsRUFBR1UsRUFBR2dCLEtBQUtpUSxJQUFJM1IsRUFBR1UsR0FBS2llLEVBQU8zZSxJQUczQyxPQUFPMEIsSUFDVCxDQUVBLGVBQUE0aEIsQ0FBZ0IzRSxHQUNkQSxFQUFTRSxFQUFrQm5kLEtBQU1pZCxHQUNqQyxJQUFLLElBQUkzZSxFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQzdCLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJZ0IsS0FBSzZiLFFBQVM3YyxJQUNoQ2dCLEtBQUt5QyxJQUFJbkUsRUFBR1UsRUFBR2dCLEtBQUtpUSxJQUFJM1IsRUFBR1UsR0FBS2llLEVBQU8zZSxJQUczQyxPQUFPMEIsSUFDVCxDQUVBLGVBQUE2aEIsQ0FBZ0I1RSxHQUNkQSxFQUFTRSxFQUFrQm5kLEtBQU1pZCxHQUNqQyxJQUFLLElBQUkzZSxFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQzdCLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJZ0IsS0FBSzZiLFFBQVM3YyxJQUNoQ2dCLEtBQUt5QyxJQUFJbkUsRUFBR1UsRUFBR2dCLEtBQUtpUSxJQUFJM1IsRUFBR1UsR0FBS2llLEVBQU8zZSxJQUczQyxPQUFPMEIsSUFDVCxDQUVBLE1BQUE4aEIsQ0FBT2pmLEVBQU9ELEdBQ1ppYSxFQUFjN2MsS0FBTTZDLEdBQ3BCLElBQUssSUFBSXZFLEVBQUksRUFBR0EsRUFBSTBCLEtBQUs2YixRQUFTdmQsSUFDaEMwQixLQUFLeUMsSUFBSUksRUFBT3ZFLEVBQUcwQixLQUFLaVEsSUFBSXBOLEVBQU92RSxHQUFLc0UsR0FFMUMsT0FBTzVDLElBQ1QsQ0FFQSxTQUFBK2hCLENBQVVsZixFQUFPRCxHQUNmbWEsRUFBaUIvYyxLQUFNNkMsR0FDdkIsSUFBSyxJQUFJdkUsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzRiLEtBQU10ZCxJQUM3QjBCLEtBQUt5QyxJQUFJbkUsRUFBR3VFLEVBQU83QyxLQUFLaVEsSUFBSTNSLEVBQUd1RSxHQUFTRCxHQUUxQyxPQUFPNUMsSUFDVCxDQUVBLEdBQUFFLENBQUk4aEIsR0FDRixHQUFJaGlCLEtBQUswZCxVQUNQLE9BQU91RSxJQUVULE9BQVFELEdBQ04sSUFBSyxNQUFPLENBQ1YsTUFBTTloQixFQUFNLElBQUlyQixNQUFNbUIsS0FBSzRiLE1BQU1oZCxLQUFLOEMsT0FBT3dnQixtQkFDN0MsSUFBSyxJQUFJakUsRUFBTSxFQUFHQSxFQUFNamUsS0FBSzRiLEtBQU1xQyxJQUNqQyxJQUFLLElBQUlDLEVBQVMsRUFBR0EsRUFBU2xlLEtBQUs2YixRQUFTcUMsSUFDdENsZSxLQUFLaVEsSUFBSWdPLEVBQUtDLEdBQVVoZSxFQUFJK2QsS0FDOUIvZCxFQUFJK2QsR0FBT2plLEtBQUtpUSxJQUFJZ08sRUFBS0MsSUFJL0IsT0FBT2hlLENBQ1QsQ0FDQSxJQUFLLFNBQVUsQ0FDYixNQUFNQSxFQUFNLElBQUlyQixNQUFNbUIsS0FBSzZiLFNBQVNqZCxLQUFLOEMsT0FBT3dnQixtQkFDaEQsSUFBSyxJQUFJakUsRUFBTSxFQUFHQSxFQUFNamUsS0FBSzRiLEtBQU1xQyxJQUNqQyxJQUFLLElBQUlDLEVBQVMsRUFBR0EsRUFBU2xlLEtBQUs2YixRQUFTcUMsSUFDdENsZSxLQUFLaVEsSUFBSWdPLEVBQUtDLEdBQVVoZSxFQUFJZ2UsS0FDOUJoZSxFQUFJZ2UsR0FBVWxlLEtBQUtpUSxJQUFJZ08sRUFBS0MsSUFJbEMsT0FBT2hlLENBQ1QsQ0FDQSxVQUFLNFAsRUFBVyxDQUNkLElBQUk1UCxFQUFNRixLQUFLaVEsSUFBSSxFQUFHLEdBQ3RCLElBQUssSUFBSWdPLEVBQU0sRUFBR0EsRUFBTWplLEtBQUs0YixLQUFNcUMsSUFDakMsSUFBSyxJQUFJQyxFQUFTLEVBQUdBLEVBQVNsZSxLQUFLNmIsUUFBU3FDLElBQ3RDbGUsS0FBS2lRLElBQUlnTyxFQUFLQyxHQUFVaGUsSUFDMUJBLEVBQU1GLEtBQUtpUSxJQUFJZ08sRUFBS0MsSUFJMUIsT0FBT2hlLENBQ1QsQ0FDQSxRQUNFLE1BQU0sSUFBSXBDLE1BQU0sbUJBQW1Ca2tCLEtBRXpDLENBRUEsUUFBQUcsR0FDRTFFLEVBQWN6ZCxNQUNkLElBQUliLEVBQUlhLEtBQUtpUSxJQUFJLEVBQUcsR0FDaEJtUyxFQUFNLENBQUMsRUFBRyxHQUNkLElBQUssSUFBSTlqQixFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQzdCLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJZ0IsS0FBSzZiLFFBQVM3YyxJQUM1QmdCLEtBQUtpUSxJQUFJM1IsRUFBR1UsR0FBS0csSUFDbkJBLEVBQUlhLEtBQUtpUSxJQUFJM1IsRUFBR1UsR0FDaEJvakIsRUFBSSxHQUFLOWpCLEVBQ1Q4akIsRUFBSSxHQUFLcGpCLEdBSWYsT0FBT29qQixDQUNULENBRUEsR0FBQWxoQixDQUFJOGdCLEdBQ0YsR0FBSWhpQixLQUFLMGQsVUFDUCxPQUFPdUUsSUFHVCxPQUFRRCxHQUNOLElBQUssTUFBTyxDQUNWLE1BQU05Z0IsRUFBTSxJQUFJckMsTUFBTW1CLEtBQUs0YixNQUFNaGQsS0FBSzhDLE9BQU8yZ0IsbUJBQzdDLElBQUssSUFBSXBFLEVBQU0sRUFBR0EsRUFBTWplLEtBQUs0YixLQUFNcUMsSUFDakMsSUFBSyxJQUFJQyxFQUFTLEVBQUdBLEVBQVNsZSxLQUFLNmIsUUFBU3FDLElBQ3RDbGUsS0FBS2lRLElBQUlnTyxFQUFLQyxHQUFVaGQsRUFBSStjLEtBQzlCL2MsRUFBSStjLEdBQU9qZSxLQUFLaVEsSUFBSWdPLEVBQUtDLElBSS9CLE9BQU9oZCxDQUNULENBQ0EsSUFBSyxTQUFVLENBQ2IsTUFBTUEsRUFBTSxJQUFJckMsTUFBTW1CLEtBQUs2YixTQUFTamQsS0FBSzhDLE9BQU8yZ0IsbUJBQ2hELElBQUssSUFBSXBFLEVBQU0sRUFBR0EsRUFBTWplLEtBQUs0YixLQUFNcUMsSUFDakMsSUFBSyxJQUFJQyxFQUFTLEVBQUdBLEVBQVNsZSxLQUFLNmIsUUFBU3FDLElBQ3RDbGUsS0FBS2lRLElBQUlnTyxFQUFLQyxHQUFVaGQsRUFBSWdkLEtBQzlCaGQsRUFBSWdkLEdBQVVsZSxLQUFLaVEsSUFBSWdPLEVBQUtDLElBSWxDLE9BQU9oZCxDQUNULENBQ0EsVUFBSzRPLEVBQVcsQ0FDZCxJQUFJNU8sRUFBTWxCLEtBQUtpUSxJQUFJLEVBQUcsR0FDdEIsSUFBSyxJQUFJZ08sRUFBTSxFQUFHQSxFQUFNamUsS0FBSzRiLEtBQU1xQyxJQUNqQyxJQUFLLElBQUlDLEVBQVMsRUFBR0EsRUFBU2xlLEtBQUs2YixRQUFTcUMsSUFDdENsZSxLQUFLaVEsSUFBSWdPLEVBQUtDLEdBQVVoZCxJQUMxQkEsRUFBTWxCLEtBQUtpUSxJQUFJZ08sRUFBS0MsSUFJMUIsT0FBT2hkLENBQ1QsQ0FDQSxRQUNFLE1BQU0sSUFBSXBELE1BQU0sbUJBQW1Ca2tCLEtBRXpDLENBRUEsUUFBQU0sR0FDRTdFLEVBQWN6ZCxNQUNkLElBQUliLEVBQUlhLEtBQUtpUSxJQUFJLEVBQUcsR0FDaEJtUyxFQUFNLENBQUMsRUFBRyxHQUNkLElBQUssSUFBSTlqQixFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQzdCLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJZ0IsS0FBSzZiLFFBQVM3YyxJQUM1QmdCLEtBQUtpUSxJQUFJM1IsRUFBR1UsR0FBS0csSUFDbkJBLEVBQUlhLEtBQUtpUSxJQUFJM1IsRUFBR1UsR0FDaEJvakIsRUFBSSxHQUFLOWpCLEVBQ1Q4akIsRUFBSSxHQUFLcGpCLEdBSWYsT0FBT29qQixDQUNULENBRUEsTUFBQTlCLENBQU9yQyxHQUVMLEdBREFwQixFQUFjN2MsS0FBTWllLEdBQ2hCamUsS0FBSzBkLFVBQ1AsT0FBT3VFLElBRVQsSUFBSTlpQixFQUFJYSxLQUFLaVEsSUFBSWdPLEVBQUssR0FDdEIsSUFBSyxJQUFJM2YsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzZiLFFBQVN2ZCxJQUM1QjBCLEtBQUtpUSxJQUFJZ08sRUFBSzNmLEdBQUthLElBQ3JCQSxFQUFJYSxLQUFLaVEsSUFBSWdPLEVBQUszZixJQUd0QixPQUFPYSxDQUNULENBRUEsV0FBQW9qQixDQUFZdEUsR0FDVnBCLEVBQWM3YyxLQUFNaWUsR0FDcEJSLEVBQWN6ZCxNQUNkLElBQUliLEVBQUlhLEtBQUtpUSxJQUFJZ08sRUFBSyxHQUNsQm1FLEVBQU0sQ0FBQ25FLEVBQUssR0FDaEIsSUFBSyxJQUFJM2YsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzZiLFFBQVN2ZCxJQUM1QjBCLEtBQUtpUSxJQUFJZ08sRUFBSzNmLEdBQUthLElBQ3JCQSxFQUFJYSxLQUFLaVEsSUFBSWdPLEVBQUszZixHQUNsQjhqQixFQUFJLEdBQUs5akIsR0FHYixPQUFPOGpCLENBQ1QsQ0FFQSxNQUFBSSxDQUFPdkUsR0FFTCxHQURBcEIsRUFBYzdjLEtBQU1pZSxHQUNoQmplLEtBQUswZCxVQUNQLE9BQU91RSxJQUVULElBQUk5aUIsRUFBSWEsS0FBS2lRLElBQUlnTyxFQUFLLEdBQ3RCLElBQUssSUFBSTNmLEVBQUksRUFBR0EsRUFBSTBCLEtBQUs2YixRQUFTdmQsSUFDNUIwQixLQUFLaVEsSUFBSWdPLEVBQUszZixHQUFLYSxJQUNyQkEsRUFBSWEsS0FBS2lRLElBQUlnTyxFQUFLM2YsSUFHdEIsT0FBT2EsQ0FDVCxDQUVBLFdBQUFzakIsQ0FBWXhFLEdBQ1ZwQixFQUFjN2MsS0FBTWllLEdBQ3BCUixFQUFjemQsTUFDZCxJQUFJYixFQUFJYSxLQUFLaVEsSUFBSWdPLEVBQUssR0FDbEJtRSxFQUFNLENBQUNuRSxFQUFLLEdBQ2hCLElBQUssSUFBSTNmLEVBQUksRUFBR0EsRUFBSTBCLEtBQUs2YixRQUFTdmQsSUFDNUIwQixLQUFLaVEsSUFBSWdPLEVBQUszZixHQUFLYSxJQUNyQkEsRUFBSWEsS0FBS2lRLElBQUlnTyxFQUFLM2YsR0FDbEI4akIsRUFBSSxHQUFLOWpCLEdBR2IsT0FBTzhqQixDQUNULENBRUEsU0FBQU0sQ0FBVXhFLEdBRVIsR0FEQW5CLEVBQWlCL2MsS0FBTWtlLEdBQ25CbGUsS0FBSzBkLFVBQ1AsT0FBT3VFLElBRVQsSUFBSTlpQixFQUFJYSxLQUFLaVEsSUFBSSxFQUFHaU8sR0FDcEIsSUFBSyxJQUFJNWYsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzRiLEtBQU10ZCxJQUN6QjBCLEtBQUtpUSxJQUFJM1IsRUFBRzRmLEdBQVUvZSxJQUN4QkEsRUFBSWEsS0FBS2lRLElBQUkzUixFQUFHNGYsSUFHcEIsT0FBTy9lLENBQ1QsQ0FFQSxjQUFBd2pCLENBQWV6RSxHQUNibkIsRUFBaUIvYyxLQUFNa2UsR0FDdkJULEVBQWN6ZCxNQUNkLElBQUliLEVBQUlhLEtBQUtpUSxJQUFJLEVBQUdpTyxHQUNoQmtFLEVBQU0sQ0FBQyxFQUFHbEUsR0FDZCxJQUFLLElBQUk1ZixFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQ3pCMEIsS0FBS2lRLElBQUkzUixFQUFHNGYsR0FBVS9lLElBQ3hCQSxFQUFJYSxLQUFLaVEsSUFBSTNSLEVBQUc0ZixHQUNoQmtFLEVBQUksR0FBSzlqQixHQUdiLE9BQU84akIsQ0FDVCxDQUVBLFNBQUFRLENBQVUxRSxHQUVSLEdBREFuQixFQUFpQi9jLEtBQU1rZSxHQUNuQmxlLEtBQUswZCxVQUNQLE9BQU91RSxJQUVULElBQUk5aUIsRUFBSWEsS0FBS2lRLElBQUksRUFBR2lPLEdBQ3BCLElBQUssSUFBSTVmLEVBQUksRUFBR0EsRUFBSTBCLEtBQUs0YixLQUFNdGQsSUFDekIwQixLQUFLaVEsSUFBSTNSLEVBQUc0ZixHQUFVL2UsSUFDeEJBLEVBQUlhLEtBQUtpUSxJQUFJM1IsRUFBRzRmLElBR3BCLE9BQU8vZSxDQUNULENBRUEsY0FBQTBqQixDQUFlM0UsR0FDYm5CLEVBQWlCL2MsS0FBTWtlLEdBQ3ZCVCxFQUFjemQsTUFDZCxJQUFJYixFQUFJYSxLQUFLaVEsSUFBSSxFQUFHaU8sR0FDaEJrRSxFQUFNLENBQUMsRUFBR2xFLEdBQ2QsSUFBSyxJQUFJNWYsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzRiLEtBQU10ZCxJQUN6QjBCLEtBQUtpUSxJQUFJM1IsRUFBRzRmLEdBQVUvZSxJQUN4QkEsRUFBSWEsS0FBS2lRLElBQUkzUixFQUFHNGYsR0FDaEJrRSxFQUFJLEdBQUs5akIsR0FHYixPQUFPOGpCLENBQ1QsQ0FFQSxJQUFBekQsR0FDRSxJQUFJemQsRUFBTTFELEtBQUswRCxJQUFJbEIsS0FBSzRiLEtBQU01YixLQUFLNmIsU0FDL0I4QyxFQUFPLEdBQ1gsSUFBSyxJQUFJcmdCLEVBQUksRUFBR0EsRUFBSTRDLEVBQUs1QyxJQUN2QnFnQixFQUFLMVIsS0FBS2pOLEtBQUtpUSxJQUFJM1IsRUFBR0EsSUFFeEIsT0FBT3FnQixDQUNULENBRUEsSUFBQW1FLENBQUtDLEVBQU8sYUFDVixJQUFJalUsRUFBUyxFQUNiLEdBQWEsUUFBVGlVLEVBQ0YsT0FBTy9pQixLQUFLRSxNQUNQLEdBQWEsY0FBVDZpQixFQUFzQixDQUMvQixJQUFLLElBQUl6a0IsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzRiLEtBQU10ZCxJQUM3QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSWdCLEtBQUs2YixRQUFTN2MsSUFDaEM4UCxHQUFrQjlPLEtBQUtpUSxJQUFJM1IsRUFBR1UsR0FBS2dCLEtBQUtpUSxJQUFJM1IsRUFBR1UsR0FHbkQsT0FBT3hCLEtBQUs4QixLQUFLd1AsRUFDbkIsQ0FDRSxNQUFNLElBQUlpTSxXQUFXLHNCQUFzQmdJLElBRS9DLENBRUEsYUFBQUMsR0FDRSxJQUFJQyxFQUFNLEVBQ1YsSUFBSyxJQUFJM2tCLEVBQUksRUFBR0EsRUFBSTBCLEtBQUs0YixLQUFNdGQsSUFDN0IsSUFBSyxJQUFJVSxFQUFJLEVBQUdBLEVBQUlnQixLQUFLNmIsUUFBUzdjLElBQ2hDaWtCLEdBQU9qakIsS0FBS2lRLElBQUkzUixFQUFHVSxHQUNuQmdCLEtBQUt5QyxJQUFJbkUsRUFBR1UsRUFBR2lrQixHQUduQixPQUFPampCLElBQ1QsQ0FFQSxHQUFBa2pCLENBQUlDLEdBQ0V4RixFQUFlcUIsU0FBU21FLEtBQVVBLEVBQVVBLEVBQVFqRyxhQUN4RCxJQUFJa0csRUFBVXBqQixLQUFLa2QsWUFDbkIsR0FBSWtHLEVBQVFobEIsU0FBVytrQixFQUFRL2tCLE9BQzdCLE1BQU0sSUFBSTJjLFdBQVcscUNBRXZCLElBQUltSSxFQUFNLEVBQ1YsSUFBSyxJQUFJNWtCLEVBQUksRUFBR0EsRUFBSThrQixFQUFRaGxCLE9BQVFFLElBQ2xDNGtCLEdBQU9FLEVBQVE5a0IsR0FBSzZrQixFQUFRN2tCLEdBRTlCLE9BQU80a0IsQ0FDVCxDQUVBLElBQUFHLENBQUtyWixHQUNIQSxFQUFRZ1UsRUFBT2UsWUFBWS9VLEdBRTNCLElBQUlxVyxFQUFJcmdCLEtBQUs0YixLQUNUeFcsRUFBSXBGLEtBQUs2YixRQUNUN2QsRUFBSWdNLEVBQU02UixRQUVWL00sRUFBUyxJQUFJa1AsRUFBT3FDLEVBQUdyaUIsR0FFdkJzbEIsRUFBUSxJQUFJcE8sYUFBYTlQLEdBQzdCLElBQUssSUFBSXBHLEVBQUksRUFBR0EsRUFBSWhCLEVBQUdnQixJQUFLLENBQzFCLElBQUssSUFBSXVPLEVBQUksRUFBR0EsRUFBSW5JLEVBQUdtSSxJQUNyQitWLEVBQU0vVixHQUFLdkQsRUFBTWlHLElBQUkxQyxFQUFHdk8sR0FHMUIsSUFBSyxJQUFJVixFQUFJLEVBQUdBLEVBQUkraEIsRUFBRy9oQixJQUFLLENBQzFCLElBQUk4TSxFQUFJLEVBQ1IsSUFBSyxJQUFJbUMsRUFBSSxFQUFHQSxFQUFJbkksRUFBR21JLElBQ3JCbkMsR0FBS3BMLEtBQUtpUSxJQUFJM1IsRUFBR2lQLEdBQUsrVixFQUFNL1YsR0FHOUJ1QixFQUFPck0sSUFBSW5FLEVBQUdVLEVBQUdvTSxFQUNuQixDQUNGLENBQ0EsT0FBTzBELENBQ1QsQ0FFQSxXQUFBeVUsQ0FBWXZaLEdBQ1ZBLEVBQVFnVSxFQUFPZSxZQUFZL1UsR0FDM0IsSUFBSThFLEVBQVMsSUFBSWtQLEVBQU8sRUFBRyxHQUMzQixNQUFNd0YsRUFBTXhqQixLQUFLaVEsSUFBSSxFQUFHLEdBQ2xCd1QsRUFBTXpaLEVBQU1pRyxJQUFJLEVBQUcsR0FDbkJ5VCxFQUFNMWpCLEtBQUtpUSxJQUFJLEVBQUcsR0FDbEIwVCxFQUFNM1osRUFBTWlHLElBQUksRUFBRyxHQUNuQjJULEVBQU01akIsS0FBS2lRLElBQUksRUFBRyxHQUNsQjRULEVBQU03WixFQUFNaUcsSUFBSSxFQUFHLEdBQ25CNlQsRUFBTTlqQixLQUFLaVEsSUFBSSxFQUFHLEdBQ2xCOFQsRUFBTS9aLEVBQU1pRyxJQUFJLEVBQUcsR0FHbkIrVCxHQUFNUixFQUFNTSxJQUFRTCxFQUFNTSxHQUMxQkUsR0FBTUwsRUFBTUUsR0FBT0wsRUFDbkJTLEVBQUtWLEdBQU9HLEVBQU1JLEdBQ2xCSSxFQUFLTCxHQUFPRCxFQUFNSixHQUNsQlcsR0FBTVosRUFBTUUsR0FBT0ssRUFLbkJNLEVBQU1MLEVBQUtHLEVBQUtDLEdBSFZWLEVBQU1JLElBQVFELEVBQU1FLEdBSTFCTyxFQUFNSixFQUFLRSxFQUNYRyxFQUFNTixFQUFLRSxFQUNYSyxFQUFNUixFQUFLQyxFQUFLQyxHQVBWTixFQUFNSixJQUFRQyxFQUFNRSxHQWFoQyxPQUpBN1UsRUFBT3JNLElBQUksRUFBRyxFQUFHNGhCLEdBQ2pCdlYsRUFBT3JNLElBQUksRUFBRyxFQUFHNmhCLEdBQ2pCeFYsRUFBT3JNLElBQUksRUFBRyxFQUFHOGhCLEdBQ2pCelYsRUFBT3JNLElBQUksRUFBRyxFQUFHK2hCLEdBQ1YxVixDQUNULENBRUEsV0FBQTJWLENBQVl6YSxHQUNWQSxFQUFRZ1UsRUFBT2UsWUFBWS9VLEdBQzNCLElBQUk4RSxFQUFTLElBQUlrUCxFQUFPLEVBQUcsR0FFM0IsTUFBTTBHLEVBQU0xa0IsS0FBS2lRLElBQUksRUFBRyxHQUNsQjBVLEVBQU0za0IsS0FBS2lRLElBQUksRUFBRyxHQUNsQjJVLEVBQU01a0IsS0FBS2lRLElBQUksRUFBRyxHQUNsQjRVLEVBQU03a0IsS0FBS2lRLElBQUksRUFBRyxHQUNsQnVULEVBQU14akIsS0FBS2lRLElBQUksRUFBRyxHQUNsQnlULEVBQU0xakIsS0FBS2lRLElBQUksRUFBRyxHQUNsQjZVLEVBQU05a0IsS0FBS2lRLElBQUksRUFBRyxHQUNsQjJULEVBQU01akIsS0FBS2lRLElBQUksRUFBRyxHQUNsQjZULEVBQU05akIsS0FBS2lRLElBQUksRUFBRyxHQUVsQjhVLEVBQU0vYSxFQUFNaUcsSUFBSSxFQUFHLEdBQ25CK1UsRUFBTWhiLEVBQU1pRyxJQUFJLEVBQUcsR0FDbkJnVixFQUFNamIsRUFBTWlHLElBQUksRUFBRyxHQUNuQmlWLEVBQU1sYixFQUFNaUcsSUFBSSxFQUFHLEdBQ25Cd1QsRUFBTXpaLEVBQU1pRyxJQUFJLEVBQUcsR0FDbkIwVCxFQUFNM1osRUFBTWlHLElBQUksRUFBRyxHQUNuQmtWLEVBQU1uYixFQUFNaUcsSUFBSSxFQUFHLEdBQ25CNFQsRUFBTTdaLEVBQU1pRyxJQUFJLEVBQUcsR0FDbkI4VCxFQUFNL1osRUFBTWlHLElBQUksRUFBRyxHQUduQmdVLEdBQU1TLEVBQU1HLEtBQVNHLEVBQU12QixHQUUzQlUsSUFBT08sRUFBTUcsRUFBTXJCLElBQVF1QixFQUFNQyxFQUFNdkIsR0FDdkNXLEdBQU1TLEVBQU1yQixLQUFTdUIsRUFBTUMsR0FDM0JJLEVBQUtWLEVBQU1LLEVBQ1hNLElBQU9YLEVBQU1JLEVBQU1sQixJQUFRbUIsRUFBTUUsRUFBTXRCLEdBQ3ZDMkIsSUFBT1osRUFBTUksSUFBUUcsRUFBTXRCLEdBQzNCNEIsR0FBTVQsRUFBTWxCLEtBQVNtQixFQUFNRSxHQUczQk8sSUFBUVosRUFBTWhCLEVBQU1FLElBQVFMLEVBQU0wQixFQUFNdEIsR0FDeEM0QixHQUFPYixFQUFNZCxJQUFRTCxFQUFNSSxHQUMzQjZCLEVBQU1kLEVBQU1PLEVBQ1pRLEdBQU8vQixFQUFNRSxLQUFTcUIsRUFBTXRCLEdBQzVCK0IsSUFBUWhCLEVBQU1wQixFQUFNRSxJQUFRQyxFQUFNd0IsRUFBTXBCLEdBQ3hDOEIsR0FBT2pCLEVBQU1sQixJQUFRQyxFQUFNSSxHQUMzQitCLEdBQU90QyxFQUFNRSxLQUFTeUIsRUFBTXBCLEdBTzVCTSxFQUFNZSxFQUFLTSxFQU5MZixFQUFNTyxFQU9aWixHQXpCTUksRUFBTUMsRUFBTUMsRUFBTUMsRUFBTXJCLEVBQU1JLEVBQU1FLEdBQU9MLEVBeUJ0Q1UsRUFBS0MsRUFBS2dCLEVBQUtJLEVBQU1FLEVBQU1DLEVBQ3RDSSxFQUFNWCxFQUFLQyxFQUFLRSxHQWpCVGIsRUFBTUMsRUFBTUMsRUFBTXBCLEVBQU1FLEVBQU1vQixFQUFNbEIsR0FBT0QsRUFpQnZCK0IsRUFBTUUsRUFBTUUsRUFDdkN2QixFQUFNTixFQXpCRFQsSUFBUXVCLEVBQU1DLEVBQU1FLEVBQU16QixFQUFNRSxFQUFNd0IsRUFBTXBCLEdBeUJqQ0ksRUFBS2lCLEVBQUtNLEVBQU1FLEVBQU1DLEVBQ3RDckIsRUFBTVAsRUFBS0UsRUFBS0MsRUFBS2dCLEVBVGYxQixFQUFNRyxFQVVabUMsRUFBTU4sRUFBTUUsRUFBTUMsRUFBTUMsRUFUbEJqQixFQUFNSSxFQVVaZ0IsRUFBTWIsRUFBS0MsRUFBS0MsRUFwQlYxQixJQUFRbUIsRUFBTUUsRUFBTUMsRUFBTXpCLEVBQU1FLEVBQU13QixFQUFNdEIsR0FvQnZCMkIsRUFBTUMsRUFBTUMsRUFDdkNRLEVBQU1WLEVBQU1DLEVBQU1DLEVBQU1DLEVBVmxCYixFQUFNRSxFQVdabUIsRUFBTWYsRUFBS0MsRUFBS0MsRUFBS0MsRUFWZnpCLEVBQU1DLEVBcUJsQixPQVRBalYsRUFBT3JNLElBQUksRUFBRyxFQUFHNGhCLEdBQ2pCdlYsRUFBT3JNLElBQUksRUFBRyxFQUFHNmhCLEdBQ2pCeFYsRUFBT3JNLElBQUksRUFBRyxFQUFHc2pCLEdBQ2pCalgsRUFBT3JNLElBQUksRUFBRyxFQUFHOGhCLEdBQ2pCelYsRUFBT3JNLElBQUksRUFBRyxFQUFHK2hCLEdBQ2pCMVYsRUFBT3JNLElBQUksRUFBRyxFQUFHdWpCLEdBQ2pCbFgsRUFBT3JNLElBQUksRUFBRyxFQUFHd2pCLEdBQ2pCblgsRUFBT3JNLElBQUksRUFBRyxFQUFHeWpCLEdBQ2pCcFgsRUFBT3JNLElBQUksRUFBRyxFQUFHMGpCLEdBQ1ZyWCxDQUNULENBRUEsWUFBQXNYLENBQWF0TSxHQUNYQSxFQUFJa0UsRUFBT2UsWUFBWWpGLEdBQ3ZCLElBQUl6RSxFQUFJclYsS0FBSzhMLFFBQ1R1YSxFQUFLaFIsRUFBRXVHLEtBQ1AwSyxFQUFLalIsRUFBRXdHLFFBQ1AwSyxFQUFLek0sRUFBRThCLEtBQ1A0SyxFQUFLMU0sRUFBRStCLFFBVVgsU0FBU3pYLEVBQU1xaUIsRUFBSzdLLEVBQU04SyxHQUN4QixJQUFJL2hCLEVBQUk4aEIsRUFBSTdLLEtBQ1JsSCxFQUFJK1IsRUFBSTVLLFFBQ1osR0FBSWxYLElBQU1pWCxHQUFRbEgsSUFBTWdTLEVBQ3RCLE9BQU9ELEVBQ0YsQ0FDTCxJQUFJRSxFQUFXaEosRUFBZTVJLE1BQU02RyxFQUFNOEssR0FFMUMsT0FEQUMsRUFBV0EsRUFBU25HLGFBQWFpRyxFQUFLLEVBQUcsR0FDbENFLENBQ1QsQ0FDRixDQW5CSUwsSUFBT0MsR0FFVDdOLFFBQVFrTyxLQUNOLGVBQWVQLE9BQVFDLFNBQVVDLE9BQVFDLHNDQXNCN0MsSUFBSTdoQixFQUFJbkgsS0FBSzBDLElBQUltbUIsRUFBSUUsR0FDakI3UixFQUFJbFgsS0FBSzBDLElBQUlvbUIsRUFBSUUsR0FpRnJCLE9BaEZBblIsRUFBSWpSLEVBQU1pUixFQUFHMVEsRUFBRytQLEdBSWhCLFNBQVNtUyxFQUFVelYsRUFBR0MsRUFBR3VLLEVBQU04SyxHQUU3QixHQUFJOUssR0FBUSxLQUFPOEssR0FBUSxJQUN6QixPQUFPdFYsRUFBRWlTLEtBQUtoUyxHQUladUssRUFBTyxHQUFNLEdBQUs4SyxFQUFPLEdBQU0sR0FDakN0VixFQUFJaE4sRUFBTWdOLEVBQUd3SyxFQUFPLEVBQUc4SyxFQUFPLEdBQzlCclYsRUFBSWpOLEVBQU1pTixFQUFHdUssRUFBTyxFQUFHOEssRUFBTyxJQUNyQjlLLEVBQU8sR0FBTSxHQUN0QnhLLEVBQUloTixFQUFNZ04sRUFBR3dLLEVBQU8sRUFBRzhLLEdBQ3ZCclYsRUFBSWpOLEVBQU1pTixFQUFHdUssRUFBTyxFQUFHOEssSUFDZEEsRUFBTyxHQUFNLElBQ3RCdFYsRUFBSWhOLEVBQU1nTixFQUFHd0ssRUFBTThLLEVBQU8sR0FDMUJyVixFQUFJak4sRUFBTWlOLEVBQUd1SyxFQUFNOEssRUFBTyxJQUc1QixJQUFJSSxFQUFXQyxTQUFTM1YsRUFBRXdLLEtBQU8sRUFBRyxJQUNoQ29MLEVBQVdELFNBQVMzVixFQUFFeUssUUFBVSxFQUFHLElBRW5DMkgsRUFBTXBTLEVBQUU2VixVQUFVLEVBQUdILEVBQVcsRUFBRyxFQUFHRSxFQUFXLEdBQ2pEdkQsRUFBTXBTLEVBQUU0VixVQUFVLEVBQUdILEVBQVcsRUFBRyxFQUFHRSxFQUFXLEdBRWpEdEQsRUFBTXRTLEVBQUU2VixVQUFVLEVBQUdILEVBQVcsRUFBR0UsRUFBVTVWLEVBQUV5SyxRQUFVLEdBQ3pEOEgsRUFBTXRTLEVBQUU0VixVQUFVLEVBQUdILEVBQVcsRUFBR0UsRUFBVTNWLEVBQUV3SyxRQUFVLEdBRXpEK0gsRUFBTXhTLEVBQUU2VixVQUFVSCxFQUFVMVYsRUFBRXdLLEtBQU8sRUFBRyxFQUFHb0wsRUFBVyxHQUN0RG5ELEVBQU14UyxFQUFFNFYsVUFBVUgsRUFBVXpWLEVBQUV1SyxLQUFPLEVBQUcsRUFBR29MLEVBQVcsR0FFdERsRCxFQUFNMVMsRUFBRTZWLFVBQVVILEVBQVUxVixFQUFFd0ssS0FBTyxFQUFHb0wsRUFBVTVWLEVBQUV5SyxRQUFVLEdBQzlEa0ksRUFBTTFTLEVBQUU0VixVQUFVSCxFQUFVelYsRUFBRXVLLEtBQU8sRUFBR29MLEVBQVUzVixFQUFFd0ssUUFBVSxHQUc5RG1JLEVBQUs2QyxFQUNQbEosRUFBZXROLElBQUltVCxFQUFLTSxHQUN4Qm5HLEVBQWV0TixJQUFJb1QsRUFBS00sR0FDeEIrQyxFQUNBRSxHQUVFL0MsRUFBSzRDLEVBQVVsSixFQUFldE4sSUFBSXVULEVBQUtFLEdBQU1MLEVBQUtxRCxFQUFVRSxHQUM1RDlDLEVBQUsyQyxFQUFVckQsRUFBSzdGLEVBQWV1SixJQUFJdkQsRUFBS0ksR0FBTStDLEVBQVVFLEdBQzVEN0MsRUFBSzBDLEVBQVUvQyxFQUFLbkcsRUFBZXVKLElBQUlyRCxFQUFLSixHQUFNcUQsRUFBVUUsR0FDNUQ1QyxFQUFLeUMsRUFBVWxKLEVBQWV0TixJQUFJbVQsRUFBS0UsR0FBTUssRUFBSytDLEVBQVVFLEdBQzVENUIsRUFBS3lCLEVBQ1BsSixFQUFldUosSUFBSXRELEVBQUtKLEdBQ3hCN0YsRUFBZXROLElBQUlvVCxFQUFLRSxHQUN4Qm1ELEVBQ0FFLEdBRUUzQixFQUFLd0IsRUFDUGxKLEVBQWV1SixJQUFJeEQsRUFBS0ksR0FDeEJuRyxFQUFldE4sSUFBSXdULEVBQUtFLEdBQ3hCK0MsRUFDQUUsR0FJRXhDLEVBQU03RyxFQUFldE4sSUFBSTJULEVBQUlHLEdBQ2pDSyxFQUFJMEMsSUFBSTlDLEdBQ1JJLEVBQUluVSxJQUFJZ1YsR0FDUixJQUFJVyxFQUFNckksRUFBZXROLElBQUk2VCxFQUFJRSxHQUM3QjhCLEVBQU12SSxFQUFldE4sSUFBSTRULEVBQUlFLEdBQzdCZ0MsRUFBTXhJLEVBQWV1SixJQUFJbEQsRUFBSUMsR0FDakNrQyxFQUFJOVYsSUFBSTZULEdBQ1JpQyxFQUFJOVYsSUFBSStVLEdBR1IsSUFBSXVCLEVBQVdoSixFQUFlNUksTUFBTSxFQUFJeVAsRUFBSTVJLEtBQU0sRUFBSTRJLEVBQUkzSSxTQUsxRCxPQUpBOEssRUFBV0EsRUFBU25HLGFBQWFnRSxFQUFLLEVBQUcsR0FDekNtQyxFQUFXQSxFQUFTbkcsYUFBYXdGLEVBQUt4QixFQUFJNUksS0FBTSxHQUNoRCtLLEVBQVdBLEVBQVNuRyxhQUFhMEYsRUFBSyxFQUFHMUIsRUFBSTNJLFNBQzdDOEssRUFBV0EsRUFBU25HLGFBQWEyRixFQUFLM0IsRUFBSTVJLEtBQU00SSxFQUFJM0ksU0FDN0M4SyxFQUFTTSxVQUFVLEVBQUdyTCxFQUFPLEVBQUcsRUFBRzhLLEVBQU8sRUFDbkQsQ0FFT0csQ0FBVXhSLEVBL0VqQnlFLEVBQUkxVixFQUFNMFYsRUFBR25WLEVBQUcrUCxHQStFTy9QLEVBQUcrUCxFQUM1QixDQUVBLFNBQUF5UyxDQUFVbGtCLEVBQVUsQ0FBQyxHQUNuQixHQUF1QixpQkFBWkEsRUFDVCxNQUFNLElBQUlvWCxVQUFVLDZCQUV0QixNQUFNLElBQUVuWixFQUFNLEVBQUMsSUFBRWhCLEVBQU0sR0FBTStDLEVBQzdCLElBQUt2QixPQUFPMGxCLFNBQVNsbUIsR0FBTSxNQUFNLElBQUltWixVQUFVLHdCQUMvQyxJQUFLM1ksT0FBTzBsQixTQUFTbG5CLEdBQU0sTUFBTSxJQUFJbWEsVUFBVSx3QkFDL0MsR0FBSW5aLEdBQU9oQixFQUFLLE1BQU0sSUFBSTZhLFdBQVcsZ0NBQ3JDLElBQUlnRCxFQUFZLElBQUlDLEVBQU9oZSxLQUFLNGIsS0FBTTViLEtBQUs2YixTQUMzQyxJQUFLLElBQUl2ZCxFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQUssQ0FDbEMsTUFBTTJmLEVBQU1qZSxLQUFLMmdCLE9BQU9yaUIsR0FDcEIyZixFQUFJN2YsT0FBUyxHQUNmNmIsRUFBUWdFLEVBQUssQ0FBRS9jLE1BQUtoQixNQUFLaWEsT0FBUThELElBRW5DRixFQUFVOEMsT0FBT3ZpQixFQUFHMmYsRUFDdEIsQ0FDQSxPQUFPRixDQUNULENBRUEsWUFBQXNKLENBQWFwa0IsRUFBVSxDQUFDLEdBQ3RCLEdBQXVCLGlCQUFaQSxFQUNULE1BQU0sSUFBSW9YLFVBQVUsNkJBRXRCLE1BQU0sSUFBRW5aLEVBQU0sRUFBQyxJQUFFaEIsRUFBTSxHQUFNK0MsRUFDN0IsSUFBS3ZCLE9BQU8wbEIsU0FBU2xtQixHQUFNLE1BQU0sSUFBSW1aLFVBQVUsd0JBQy9DLElBQUszWSxPQUFPMGxCLFNBQVNsbkIsR0FBTSxNQUFNLElBQUltYSxVQUFVLHdCQUMvQyxHQUFJblosR0FBT2hCLEVBQUssTUFBTSxJQUFJNmEsV0FBVyxnQ0FDckMsSUFBSWdELEVBQVksSUFBSUMsRUFBT2hlLEtBQUs0YixLQUFNNWIsS0FBSzZiLFNBQzNDLElBQUssSUFBSXZkLEVBQUksRUFBR0EsRUFBSTBCLEtBQUs2YixRQUFTdmQsSUFBSyxDQUNyQyxNQUFNNGYsRUFBU2xlLEtBQUtnaEIsVUFBVTFpQixHQUMxQjRmLEVBQU85ZixRQUNUNmIsRUFBUWlFLEVBQVEsQ0FDZGhkLElBQUtBLEVBQ0xoQixJQUFLQSxFQUNMaWEsT0FBUStELElBR1pILEVBQVVtRCxVQUFVNWlCLEVBQUc0ZixFQUN6QixDQUNBLE9BQU9ILENBQ1QsQ0FFQSxRQUFBdUosR0FDRSxNQUFNQyxFQUFTL3BCLEtBQUtncUIsS0FBS3huQixLQUFLNmIsUUFBVSxHQUN4QyxJQUFLLElBQUl2ZCxFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQzdCLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJdW9CLEVBQVF2b0IsSUFBSyxDQUMvQixJQUFJeW9CLEVBQVF6bkIsS0FBS2lRLElBQUkzUixFQUFHVSxHQUNwQjBvQixFQUFPMW5CLEtBQUtpUSxJQUFJM1IsRUFBRzBCLEtBQUs2YixRQUFVLEVBQUk3YyxHQUMxQ2dCLEtBQUt5QyxJQUFJbkUsRUFBR1UsRUFBRzBvQixHQUNmMW5CLEtBQUt5QyxJQUFJbkUsRUFBRzBCLEtBQUs2YixRQUFVLEVBQUk3YyxFQUFHeW9CLEVBQ3BDLENBRUYsT0FBT3puQixJQUNULENBRUEsV0FBQTJuQixHQUNFLE1BQU1KLEVBQVMvcEIsS0FBS2dxQixLQUFLeG5CLEtBQUs0YixLQUFPLEdBQ3JDLElBQUssSUFBSTVjLEVBQUksRUFBR0EsRUFBSWdCLEtBQUs2YixRQUFTN2MsSUFDaEMsSUFBSyxJQUFJVixFQUFJLEVBQUdBLEVBQUlpcEIsRUFBUWpwQixJQUFLLENBQy9CLElBQUltcEIsRUFBUXpuQixLQUFLaVEsSUFBSTNSLEVBQUdVLEdBQ3BCMG9CLEVBQU8xbkIsS0FBS2lRLElBQUlqUSxLQUFLNGIsS0FBTyxFQUFJdGQsRUFBR1UsR0FDdkNnQixLQUFLeUMsSUFBSW5FLEVBQUdVLEVBQUcwb0IsR0FDZjFuQixLQUFLeUMsSUFBSXpDLEtBQUs0YixLQUFPLEVBQUl0ZCxFQUFHVSxFQUFHeW9CLEVBQ2pDLENBRUYsT0FBT3puQixJQUNULENBRUEsZ0JBQUE0bkIsQ0FBaUI1ZCxHQUNmQSxFQUFRZ1UsRUFBT2UsWUFBWS9VLEdBRTNCLElBQUlxVyxFQUFJcmdCLEtBQUs0YixLQUNUeFcsRUFBSXBGLEtBQUs2YixRQUNUN2QsRUFBSWdNLEVBQU00UixLQUNWM2QsRUFBSStMLEVBQU02UixRQUVWL00sRUFBUyxJQUFJa1AsRUFBT3FDLEVBQUlyaUIsRUFBR29ILEVBQUluSCxHQUNuQyxJQUFLLElBQUlLLEVBQUksRUFBR0EsRUFBSStoQixFQUFHL2hCLElBQ3JCLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJb0csRUFBR3BHLElBQ3JCLElBQUssSUFBSXVPLEVBQUksRUFBR0EsRUFBSXZQLEVBQUd1UCxJQUNyQixJQUFLLElBQUlxUixFQUFJLEVBQUdBLEVBQUkzZ0IsRUFBRzJnQixJQUNyQjlQLEVBQU9yTSxJQUFJekUsRUFBSU0sRUFBSWlQLEVBQUd0UCxFQUFJZSxFQUFJNGYsRUFBRzVlLEtBQUtpUSxJQUFJM1IsRUFBR1UsR0FBS2dMLEVBQU1pRyxJQUFJMUMsRUFBR3FSLElBS3ZFLE9BQU85UCxDQUNULENBRUEsWUFBQStZLENBQWE3ZCxHQUVYLEdBREFBLEVBQVFnVSxFQUFPZSxZQUFZL1UsSUFDdEJoSyxLQUFLeWYsYUFBZXpWLEVBQU15VixXQUM3QixNQUFNLElBQUkzaEIsTUFBTSwyQ0FFbEIsSUFBSXVpQixFQUFJcmdCLEtBQUs0YixLQUNUeFcsRUFBSTRFLEVBQU00UixLQUNWa00sRUFBTTluQixLQUFLNG5CLGlCQUFpQjVKLEVBQU9VLElBQUl0WixFQUFHQSxJQUMxQzJpQixFQUFNL0osRUFBT1UsSUFBSTJCLEVBQUdBLEdBQUd1SCxpQkFBaUI1ZCxHQUM1QyxPQUFPOGQsRUFBSXpYLElBQUkwWCxFQUNqQixDQUVBLFNBQUE5VSxHQUNFLElBQUluRSxFQUFTLElBQUlrUCxFQUFPaGUsS0FBSzZiLFFBQVM3YixLQUFLNGIsTUFDM0MsSUFBSyxJQUFJdGQsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzRiLEtBQU10ZCxJQUM3QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSWdCLEtBQUs2YixRQUFTN2MsSUFDaEM4UCxFQUFPck0sSUFBSXpELEVBQUdWLEVBQUcwQixLQUFLaVEsSUFBSTNSLEVBQUdVLElBR2pDLE9BQU84UCxDQUNULENBRUEsUUFBQWtaLENBQVNDLEVBQWtCQyxHQUN6QixJQUFLLElBQUk1cEIsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzRiLEtBQU10ZCxJQUM3QjBCLEtBQUs2Z0IsT0FBT3ZpQixFQUFHMEIsS0FBSzJnQixPQUFPcmlCLEdBQUc2cEIsS0FBS0YsSUFFckMsT0FBT2pvQixJQUNULENBRUEsV0FBQW9vQixDQUFZSCxFQUFrQkMsR0FDNUIsSUFBSyxJQUFJNXBCLEVBQUksRUFBR0EsRUFBSTBCLEtBQUs2YixRQUFTdmQsSUFDaEMwQixLQUFLa2hCLFVBQVU1aUIsRUFBRzBCLEtBQUtnaEIsVUFBVTFpQixHQUFHNnBCLEtBQUtGLElBRTNDLE9BQU9qb0IsSUFDVCxDQUVBLFNBQUFpbkIsQ0FBVW5sQixFQUFVUixFQUFRK2IsRUFBYUMsR0FDdkNGLEVBQVdwZCxLQUFNOEIsRUFBVVIsRUFBUStiLEVBQWFDLEdBQ2hELElBQUlTLEVBQVksSUFBSUMsRUFDbEIxYyxFQUFTUSxFQUFXLEVBQ3BCd2IsRUFBWUQsRUFBYyxHQUU1QixJQUFLLElBQUkvZSxFQUFJd0QsRUFBVXhELEdBQUtnRCxFQUFRaEQsSUFDbEMsSUFBSyxJQUFJVSxFQUFJcWUsRUFBYXJlLEdBQUtzZSxFQUFXdGUsSUFDeEMrZSxFQUFVdGIsSUFBSW5FLEVBQUl3RCxFQUFVOUMsRUFBSXFlLEVBQWFyZCxLQUFLaVEsSUFBSTNSLEVBQUdVLElBRzdELE9BQU8rZSxDQUNULENBRUEsWUFBQXNLLENBQWFDLEVBQVNqTCxFQUFhQyxHQUdqQyxRQUZvQnhOLElBQWhCdU4sSUFBMkJBLEVBQWMsUUFDM0J2TixJQUFkd04sSUFBeUJBLEVBQVl0ZCxLQUFLNmIsUUFBVSxHQUV0RHdCLEVBQWNDLEdBQ2RELEVBQWMsR0FDZEEsR0FBZXJkLEtBQUs2YixTQUNwQnlCLEVBQVksR0FDWkEsR0FBYXRkLEtBQUs2YixRQUVsQixNQUFNLElBQUlkLFdBQVcseUJBR3ZCLElBQUlnRCxFQUFZLElBQUlDLEVBQU9zSyxFQUFRbHFCLE9BQVFrZixFQUFZRCxFQUFjLEdBQ3JFLElBQUssSUFBSS9lLEVBQUksRUFBR0EsRUFBSWdxQixFQUFRbHFCLE9BQVFFLElBQ2xDLElBQUssSUFBSVUsRUFBSXFlLEVBQWFyZSxHQUFLc2UsRUFBV3RlLElBQUssQ0FDN0MsR0FBSXNwQixFQUFRaHFCLEdBQUssR0FBS2dxQixFQUFRaHFCLElBQU0wQixLQUFLNGIsS0FDdkMsTUFBTSxJQUFJYixXQUFXLDJCQUEyQnVOLEVBQVFocUIsTUFFMUR5ZixFQUFVdGIsSUFBSW5FLEVBQUdVLEVBQUlxZSxFQUFhcmQsS0FBS2lRLElBQUlxWSxFQUFRaHFCLEdBQUlVLEdBQ3pELENBRUYsT0FBTytlLENBQ1QsQ0FFQSxlQUFBd0ssQ0FBZ0JELEVBQVN4bUIsRUFBVVIsR0FHakMsUUFGaUJ3TyxJQUFiaE8sSUFBd0JBLEVBQVcsUUFDeEJnTyxJQUFYeE8sSUFBc0JBLEVBQVN0QixLQUFLNGIsS0FBTyxHQUU3QzlaLEVBQVdSLEdBQ1hRLEVBQVcsR0FDWEEsR0FBWTlCLEtBQUs0YixNQUNqQnRhLEVBQVMsR0FDVEEsR0FBVXRCLEtBQUs0YixLQUVmLE1BQU0sSUFBSWIsV0FBVyx5QkFHdkIsSUFBSWdELEVBQVksSUFBSUMsRUFBTzFjLEVBQVNRLEVBQVcsRUFBR3dtQixFQUFRbHFCLFFBQzFELElBQUssSUFBSUUsRUFBSSxFQUFHQSxFQUFJZ3FCLEVBQVFscUIsT0FBUUUsSUFDbEMsSUFBSyxJQUFJVSxFQUFJOEMsRUFBVTlDLEdBQUtzQyxFQUFRdEMsSUFBSyxDQUN2QyxHQUFJc3BCLEVBQVFocUIsR0FBSyxHQUFLZ3FCLEVBQVFocUIsSUFBTTBCLEtBQUs2YixRQUN2QyxNQUFNLElBQUlkLFdBQVcsOEJBQThCdU4sRUFBUWhxQixNQUU3RHlmLEVBQVV0YixJQUFJekQsRUFBSThDLEVBQVV4RCxFQUFHMEIsS0FBS2lRLElBQUlqUixFQUFHc3BCLEVBQVFocUIsSUFDckQsQ0FFRixPQUFPeWYsQ0FDVCxDQUVBLFlBQUF5QyxDQUFhN2hCLEVBQVFtRCxFQUFVdWIsR0FFN0IsSUFEQTFlLEVBQVNxZixFQUFPZSxZQUFZcGdCLElBQ2pCK2UsVUFDVCxPQUFPMWQsS0FJVG9kLEVBQVdwZCxLQUFNOEIsRUFGSkEsRUFBV25ELEVBQU9pZCxLQUFPLEVBRUh5QixFQURuQkEsRUFBYzFlLEVBQU9rZCxRQUFVLEdBRS9DLElBQUssSUFBSXZkLEVBQUksRUFBR0EsRUFBSUssRUFBT2lkLEtBQU10ZCxJQUMvQixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSUwsRUFBT2tkLFFBQVM3YyxJQUNsQ2dCLEtBQUt5QyxJQUFJWCxFQUFXeEQsRUFBRytlLEVBQWNyZSxFQUFHTCxFQUFPc1IsSUFBSTNSLEVBQUdVLElBRzFELE9BQU9nQixJQUNULENBRUEsU0FBQXdvQixDQUFVQyxFQUFZQyxJRDdzQ2pCLFNBQXlCL3BCLEVBQVE4cEIsR0FDdEMsSUFBSyxFQUFXQSxHQUNkLE1BQU0sSUFBSXBPLFVBQVUsZ0NBR3RCLElBQUssSUFBSS9iLEVBQUksRUFBR0EsRUFBSW1xQixFQUFXcnFCLE9BQVFFLElBQ3JDLEdBQUltcUIsRUFBV25xQixHQUFLLEdBQUttcUIsRUFBV25xQixJQUFNSyxFQUFPaWQsS0FDL0MsTUFBTSxJQUFJYixXQUFXLCtCQUczQixDQ29zQ0k0TixDQUFnQjNvQixLQUFNeW9CLEdEbHNDbkIsU0FBNEI5cEIsRUFBUStwQixHQUN6QyxJQUFLLEVBQVdBLEdBQ2QsTUFBTSxJQUFJck8sVUFBVSxtQ0FHdEIsSUFBSyxJQUFJL2IsRUFBSSxFQUFHQSxFQUFJb3FCLEVBQWN0cUIsT0FBUUUsSUFDeEMsR0FBSW9xQixFQUFjcHFCLEdBQUssR0FBS29xQixFQUFjcHFCLElBQU1LLEVBQU9rZCxRQUNyRCxNQUFNLElBQUlkLFdBQVcsa0NBRzNCLENDeXJDSTZOLENBQW1CNW9CLEtBQU0wb0IsR0FDekIsSUFBSTNLLEVBQVksSUFBSUMsRUFBT3lLLEVBQVdycUIsT0FBUXNxQixFQUFjdHFCLFFBQzVELElBQUssSUFBSUUsRUFBSSxFQUFHQSxFQUFJbXFCLEVBQVdycUIsT0FBUUUsSUFBSyxDQUMxQyxJQUFJdXFCLEVBQVdKLEVBQVducUIsR0FDMUIsSUFBSyxJQUFJVSxFQUFJLEVBQUdBLEVBQUkwcEIsRUFBY3RxQixPQUFRWSxJQUFLLENBQzdDLElBQUk4cEIsRUFBY0osRUFBYzFwQixHQUNoQytlLEVBQVV0YixJQUFJbkUsRUFBR1UsRUFBR2dCLEtBQUtpUSxJQUFJNFksRUFBVUMsR0FDekMsQ0FDRixDQUNBLE9BQU8vSyxDQUNULENBRUEsS0FBQWdMLEdBQ0UsSUFBSTduQixFQUFNMUQsS0FBSzBELElBQUlsQixLQUFLNGIsS0FBTTViLEtBQUs2YixTQUMvQmtOLEVBQVEsRUFDWixJQUFLLElBQUl6cUIsRUFBSSxFQUFHQSxFQUFJNEMsRUFBSzVDLElBQ3ZCeXFCLEdBQVMvb0IsS0FBS2lRLElBQUkzUixFQUFHQSxHQUV2QixPQUFPeXFCLENBQ1QsQ0FFQSxLQUFBamQsR0FDRSxJQUFJaVMsRUFBWSxJQUFJQyxFQUFPaGUsS0FBSzRiLEtBQU01YixLQUFLNmIsU0FDM0MsSUFBSyxJQUFJb0MsRUFBTSxFQUFHQSxFQUFNamUsS0FBSzRiLEtBQU1xQyxJQUNqQyxJQUFLLElBQUlDLEVBQVMsRUFBR0EsRUFBU2xlLEtBQUs2YixRQUFTcUMsSUFDMUNILEVBQVV0YixJQUFJd2IsRUFBS0MsRUFBUWxlLEtBQUtpUSxJQUFJZ08sRUFBS0MsSUFHN0MsT0FBT0gsQ0FDVCxDQUVBLEdBQUFrRixDQUFJakIsR0FDRixPQUFRQSxHQUNOLElBQUssTUFDSCxPQ256Q0QsU0FBa0JyakIsR0FDdkIsSUFBSXNrQixFQUFNekYsRUFBUzdlLEVBQU9pZCxNQUMxQixJQUFLLElBQUl0ZCxFQUFJLEVBQUdBLEVBQUlLLEVBQU9pZCxPQUFRdGQsRUFDakMsSUFBSyxJQUFJVSxFQUFJLEVBQUdBLEVBQUlMLEVBQU9rZCxVQUFXN2MsRUFDcENpa0IsRUFBSTNrQixJQUFNSyxFQUFPc1IsSUFBSTNSLEVBQUdVLEdBRzVCLE9BQU9pa0IsQ0FDVCxDRDJ5Q2UrRixDQUFTaHBCLE1BQ2xCLElBQUssU0FDSCxPQzN5Q0QsU0FBcUJyQixHQUMxQixJQUFJc2tCLEVBQU16RixFQUFTN2UsRUFBT2tkLFNBQzFCLElBQUssSUFBSXZkLEVBQUksRUFBR0EsRUFBSUssRUFBT2lkLE9BQVF0ZCxFQUNqQyxJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSUwsRUFBT2tkLFVBQVc3YyxFQUNwQ2lrQixFQUFJamtCLElBQU1MLEVBQU9zUixJQUFJM1IsRUFBR1UsR0FHNUIsT0FBT2lrQixDQUNULENEbXlDZWdHLENBQVlqcEIsTUFDckIsVUFBSzhQLEVBQ0gsT0NueUNELFNBQWdCblIsR0FDckIsSUFBSVEsRUFBSSxFQUNSLElBQUssSUFBSWIsRUFBSSxFQUFHQSxFQUFJSyxFQUFPaWQsS0FBTXRkLElBQy9CLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJTCxFQUFPa2QsUUFBUzdjLElBQ2xDRyxHQUFLUixFQUFPc1IsSUFBSTNSLEVBQUdVLEdBR3ZCLE9BQU9HLENBQ1QsQ0QyeENlK3BCLENBQU9scEIsTUFDaEIsUUFDRSxNQUFNLElBQUlsQyxNQUFNLG1CQUFtQmtrQixLQUV6QyxDQUVBLE9BQUFtSCxDQUFRbkgsR0FDTixPQUFRQSxHQUNOLElBQUssTUFDSCxPQ2x5Q0QsU0FBc0JyakIsR0FDM0IsSUFBSXNrQixFQUFNekYsRUFBUzdlLEVBQU9pZCxLQUFNLEdBQ2hDLElBQUssSUFBSXRkLEVBQUksRUFBR0EsRUFBSUssRUFBT2lkLE9BQVF0ZCxFQUNqQyxJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSUwsRUFBT2tkLFVBQVc3YyxFQUNwQ2lrQixFQUFJM2tCLElBQU1LLEVBQU9zUixJQUFJM1IsRUFBR1UsR0FHNUIsT0FBT2lrQixDQUNULENEMHhDZW1HLENBQWFwcEIsTUFDdEIsSUFBSyxTQUNILE9DMXhDRCxTQUF5QnJCLEdBQzlCLElBQUlza0IsRUFBTXpGLEVBQVM3ZSxFQUFPa2QsUUFBUyxHQUNuQyxJQUFLLElBQUl2ZCxFQUFJLEVBQUdBLEVBQUlLLEVBQU9pZCxPQUFRdGQsRUFDakMsSUFBSyxJQUFJVSxFQUFJLEVBQUdBLEVBQUlMLEVBQU9rZCxVQUFXN2MsRUFDcENpa0IsRUFBSWprQixJQUFNTCxFQUFPc1IsSUFBSTNSLEVBQUdVLEdBRzVCLE9BQU9pa0IsQ0FDVCxDRGt4Q2VvRyxDQUFnQnJwQixNQUN6QixVQUFLOFAsRUFDSCxPQ2x4Q0QsU0FBb0JuUixHQUN6QixJQUFJUSxFQUFJLEVBQ1IsSUFBSyxJQUFJYixFQUFJLEVBQUdBLEVBQUlLLEVBQU9pZCxLQUFNdGQsSUFDL0IsSUFBSyxJQUFJVSxFQUFJLEVBQUdBLEVBQUlMLEVBQU9rZCxRQUFTN2MsSUFDbENHLEdBQUtSLEVBQU9zUixJQUFJM1IsRUFBR1UsR0FHdkIsT0FBT0csQ0FDVCxDRDB3Q2VtcUIsQ0FBV3RwQixNQUNwQixRQUNFLE1BQU0sSUFBSWxDLE1BQU0sbUJBQW1Ca2tCLEtBRXpDLENBRUEsSUFBQXVILENBQUt2SCxHQUNILE1BQU1pQixFQUFNampCLEtBQUtpakIsSUFBSWpCLEdBQ3JCLE9BQVFBLEdBQ04sSUFBSyxNQUNILElBQUssSUFBSTFqQixFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQzdCMmtCLEVBQUkza0IsSUFBTTBCLEtBQUs2YixRQUVqQixPQUFPb0gsRUFFVCxJQUFLLFNBQ0gsSUFBSyxJQUFJM2tCLEVBQUksRUFBR0EsRUFBSTBCLEtBQUs2YixRQUFTdmQsSUFDaEMya0IsRUFBSTNrQixJQUFNMEIsS0FBSzRiLEtBRWpCLE9BQU9xSCxFQUVULFVBQUtuVCxFQUNILE9BQU9tVCxFQUFNampCLEtBQUtSLEtBQ3BCLFFBQ0UsTUFBTSxJQUFJMUIsTUFBTSxtQkFBbUJra0IsS0FFekMsQ0FFQSxRQUFBd0gsQ0FBU3hILEVBQUkvZSxFQUFVLENBQUMsR0FLdEIsR0FKa0IsaUJBQVArZSxJQUNUL2UsRUFBVStlLEVBQ1ZBLE9BQUtsUyxHQUVnQixpQkFBWjdNLEVBQ1QsTUFBTSxJQUFJb1gsVUFBVSw2QkFFdEIsTUFBTSxTQUFFb1AsR0FBVyxFQUFJLEtBQUVGLEVBQU92cEIsS0FBS3VwQixLQUFLdkgsSUFBUS9lLEVBQ2xELEdBQXdCLGtCQUFid21CLEVBQ1QsTUFBTSxJQUFJcFAsVUFBVSw4QkFFdEIsT0FBUTJILEdBQ04sSUFBSyxNQUNILElBQUssRUFBV3VILEdBQ2QsTUFBTSxJQUFJbFAsVUFBVSx5QkFFdEIsT0NyekNELFNBQXVCMWIsRUFBUThxQixFQUFVRixHQUM5QyxNQUFNM04sRUFBT2pkLEVBQU9pZCxLQUNkOEssRUFBTy9uQixFQUFPa2QsUUFDZDJOLEVBQVcsR0FFakIsSUFBSyxJQUFJbHJCLEVBQUksRUFBR0EsRUFBSXNkLEVBQU10ZCxJQUFLLENBQzdCLElBQUlvckIsRUFBTyxFQUNQQyxFQUFPLEVBQ1B0VSxFQUFJLEVBQ1IsSUFBSyxJQUFJclcsRUFBSSxFQUFHQSxFQUFJMG5CLEVBQU0xbkIsSUFDeEJxVyxFQUFJMVcsRUFBT3NSLElBQUkzUixFQUFHVSxHQUFLdXFCLEVBQUtqckIsR0FDNUJvckIsR0FBUXJVLEVBQ1JzVSxHQUFRdFUsRUFBSUEsRUFFVm9VLEVBQ0ZELEVBQVN2YyxNQUFNMGMsRUFBUUQsRUFBT0EsRUFBUWhELElBQVNBLEVBQU8sSUFFdEQ4QyxFQUFTdmMsTUFBTTBjLEVBQVFELEVBQU9BLEVBQVFoRCxHQUFRQSxFQUVsRCxDQUNBLE9BQU84QyxDQUNULENEZ3lDZUksQ0FBYzVwQixLQUFNeXBCLEVBQVVGLEdBRXZDLElBQUssU0FDSCxJQUFLLEVBQVdBLEdBQ2QsTUFBTSxJQUFJbFAsVUFBVSx5QkFFdEIsT0NweUNELFNBQTBCMWIsRUFBUThxQixFQUFVRixHQUNqRCxNQUFNM04sRUFBT2pkLEVBQU9pZCxLQUNkOEssRUFBTy9uQixFQUFPa2QsUUFDZDJOLEVBQVcsR0FFakIsSUFBSyxJQUFJeHFCLEVBQUksRUFBR0EsRUFBSTBuQixFQUFNMW5CLElBQUssQ0FDN0IsSUFBSTBxQixFQUFPLEVBQ1BDLEVBQU8sRUFDUHRVLEVBQUksRUFDUixJQUFLLElBQUkvVyxFQUFJLEVBQUdBLEVBQUlzZCxFQUFNdGQsSUFDeEIrVyxFQUFJMVcsRUFBT3NSLElBQUkzUixFQUFHVSxHQUFLdXFCLEVBQUt2cUIsR0FDNUIwcUIsR0FBUXJVLEVBQ1JzVSxHQUFRdFUsRUFBSUEsRUFFVm9VLEVBQ0ZELEVBQVN2YyxNQUFNMGMsRUFBUUQsRUFBT0EsRUFBUTlOLElBQVNBLEVBQU8sSUFFdEQ0TixFQUFTdmMsTUFBTTBjLEVBQVFELEVBQU9BLEVBQVE5TixHQUFRQSxFQUVsRCxDQUNBLE9BQU80TixDQUNULENEK3dDZUssQ0FBaUI3cEIsS0FBTXlwQixFQUFVRixHQUUxQyxVQUFLelosRUFDSCxHQUFvQixpQkFBVHlaLEVBQ1QsTUFBTSxJQUFJbFAsVUFBVSx5QkFFdEIsT0NueENELFNBQXFCMWIsRUFBUThxQixFQUFVRixHQUM1QyxNQUFNM04sRUFBT2pkLEVBQU9pZCxLQUNkOEssRUFBTy9uQixFQUFPa2QsUUFDZHJjLEVBQU9vYyxFQUFPOEssRUFFcEIsSUFBSWdELEVBQU8sRUFDUEMsRUFBTyxFQUNQdFUsRUFBSSxFQUNSLElBQUssSUFBSS9XLEVBQUksRUFBR0EsRUFBSXNkLEVBQU10ZCxJQUN4QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSTBuQixFQUFNMW5CLElBQ3hCcVcsRUFBSTFXLEVBQU9zUixJQUFJM1IsRUFBR1UsR0FBS3VxQixFQUN2QkcsR0FBUXJVLEVBQ1JzVSxHQUFRdFUsRUFBSUEsRUFHaEIsT0FBSW9VLEdBQ01FLEVBQVFELEVBQU9BLEVBQVFscUIsSUFBU0EsRUFBTyxJQUV2Q21xQixFQUFRRCxFQUFPQSxFQUFRbHFCLEdBQVFBLENBRTNDLENEK3ZDZXNxQixDQUFZOXBCLEtBQU15cEIsRUFBVUYsR0FFckMsUUFDRSxNQUFNLElBQUl6ckIsTUFBTSxtQkFBbUJra0IsS0FFekMsQ0FFQSxpQkFBQStILENBQWtCL0gsRUFBSS9lLEdBQ0YsaUJBQVArZSxJQUNUL2UsRUFBVStlLEVBQ1ZBLE9BQUtsUyxHQUVQLE1BQU0wWixFQUFXeHBCLEtBQUt3cEIsU0FBU3hILEVBQUkvZSxHQUNuQyxRQUFXNk0sSUFBUGtTLEVBQ0YsT0FBT3hrQixLQUFLOEIsS0FBS2txQixHQUVqQixJQUFLLElBQUlsckIsRUFBSSxFQUFHQSxFQUFJa3JCLEVBQVNwckIsT0FBUUUsSUFDbkNrckIsRUFBU2xyQixHQUFLZCxLQUFLOEIsS0FBS2txQixFQUFTbHJCLElBRW5DLE9BQU9rckIsQ0FFWCxDQUVBLE1BQUFRLENBQU9oSSxFQUFJL2UsRUFBVSxDQUFDLEdBS3BCLEdBSmtCLGlCQUFQK2UsSUFDVC9lLEVBQVUrZSxFQUNWQSxPQUFLbFMsR0FFZ0IsaUJBQVo3TSxFQUNULE1BQU0sSUFBSW9YLFVBQVUsNkJBRXRCLE1BQU0sT0FBRTJQLEVBQVNocUIsS0FBS3VwQixLQUFLdkgsSUFBUS9lLEVBQ25DLE9BQVErZSxHQUNOLElBQUssTUFDSCxJQUFLLEVBQVdnSSxHQUNkLE1BQU0sSUFBSTNQLFVBQVUsMkJBR3RCLE9DbnlDRCxTQUFxQjFiLEVBQVE0cUIsR0FDbEMsSUFBSyxJQUFJanJCLEVBQUksRUFBR0EsRUFBSUssRUFBT2lkLEtBQU10ZCxJQUMvQixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSUwsRUFBT2tkLFFBQVM3YyxJQUNsQ0wsRUFBTzhELElBQUluRSxFQUFHVSxFQUFHTCxFQUFPc1IsSUFBSTNSLEVBQUdVLEdBQUt1cUIsRUFBS2pyQixHQUcvQyxDRDR4Q1EyckIsQ0FBWWpxQixLQUFNZ3FCLEdBQ1hocUIsS0FFVCxJQUFLLFNBQ0gsSUFBSyxFQUFXZ3FCLEdBQ2QsTUFBTSxJQUFJM1AsVUFBVSwyQkFHdEIsT0NseUNELFNBQXdCMWIsRUFBUTRxQixHQUNyQyxJQUFLLElBQUlqckIsRUFBSSxFQUFHQSxFQUFJSyxFQUFPaWQsS0FBTXRkLElBQy9CLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJTCxFQUFPa2QsUUFBUzdjLElBQ2xDTCxFQUFPOEQsSUFBSW5FLEVBQUdVLEVBQUdMLEVBQU9zUixJQUFJM1IsRUFBR1UsR0FBS3VxQixFQUFLdnFCLEdBRy9DLENEMnhDUWtyQixDQUFlbHFCLEtBQU1ncUIsR0FDZGhxQixLQUVULFVBQUs4UCxFQUNILEdBQXNCLGlCQUFYa2EsRUFDVCxNQUFNLElBQUkzUCxVQUFVLDJCQUd0QixPQ2p5Q0QsU0FBbUIxYixFQUFRNHFCLEdBQ2hDLElBQUssSUFBSWpyQixFQUFJLEVBQUdBLEVBQUlLLEVBQU9pZCxLQUFNdGQsSUFDL0IsSUFBSyxJQUFJVSxFQUFJLEVBQUdBLEVBQUlMLEVBQU9rZCxRQUFTN2MsSUFDbENMLEVBQU84RCxJQUFJbkUsRUFBR1UsRUFBR0wsRUFBT3NSLElBQUkzUixFQUFHVSxHQUFLdXFCLEVBRzFDLENEMHhDUVksQ0FBVW5xQixLQUFNZ3FCLEdBQ1RocUIsS0FFVCxRQUNFLE1BQU0sSUFBSWxDLE1BQU0sbUJBQW1Ca2tCLEtBRXpDLENBRUEsS0FBQXRqQixDQUFNc2pCLEVBQUkvZSxFQUFVLENBQUMsR0FLbkIsR0FKa0IsaUJBQVArZSxJQUNUL2UsRUFBVStlLEVBQ1ZBLE9BQUtsUyxHQUVnQixpQkFBWjdNLEVBQ1QsTUFBTSxJQUFJb1gsVUFBVSw2QkFFdEIsSUFBSTNiLEVBQVF1RSxFQUFRdkUsTUFDcEIsT0FBUXNqQixHQUNOLElBQUssTUFDSCxRQUFjbFMsSUFBVnBSLEVBQ0ZBLEVDNXlDSCxTQUF1QkMsR0FDNUIsTUFBTUQsRUFBUSxHQUNkLElBQUssSUFBSUosRUFBSSxFQUFHQSxFQUFJSyxFQUFPaWQsS0FBTXRkLElBQUssQ0FDcEMsSUFBSTJrQixFQUFNLEVBQ1YsSUFBSyxJQUFJamtCLEVBQUksRUFBR0EsRUFBSUwsRUFBT2tkLFFBQVM3YyxJQUNsQ2lrQixHQUFPemxCLEtBQUs0c0IsSUFBSXpyQixFQUFPc1IsSUFBSTNSLEVBQUdVLEdBQUksSUFBTUwsRUFBT2tkLFFBQVUsR0FFM0RuZCxFQUFNdU8sS0FBS3pQLEtBQUs4QixLQUFLMmpCLEdBQ3ZCLENBQ0EsT0FBT3ZrQixDQUNULENEa3lDa0IyckIsQ0FBY3JxQixXQUNqQixJQUFLLEVBQVd0QixHQUNyQixNQUFNLElBQUkyYixVQUFVLDBCQUd0QixPQ3J5Q0QsU0FBb0IxYixFQUFRRCxHQUNqQyxJQUFLLElBQUlKLEVBQUksRUFBR0EsRUFBSUssRUFBT2lkLEtBQU10ZCxJQUMvQixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSUwsRUFBT2tkLFFBQVM3YyxJQUNsQ0wsRUFBTzhELElBQUluRSxFQUFHVSxFQUFHTCxFQUFPc1IsSUFBSTNSLEVBQUdVLEdBQUtOLEVBQU1KLEdBR2hELENEOHhDUWdzQixDQUFXdHFCLEtBQU10QixHQUNWc0IsS0FFVCxJQUFLLFNBQ0gsUUFBYzhQLElBQVZwUixFQUNGQSxFQ2p5Q0gsU0FBMEJDLEdBQy9CLE1BQU1ELEVBQVEsR0FDZCxJQUFLLElBQUlNLEVBQUksRUFBR0EsRUFBSUwsRUFBT2tkLFFBQVM3YyxJQUFLLENBQ3ZDLElBQUlpa0IsRUFBTSxFQUNWLElBQUssSUFBSTNrQixFQUFJLEVBQUdBLEVBQUlLLEVBQU9pZCxLQUFNdGQsSUFDL0Iya0IsR0FBT3psQixLQUFLNHNCLElBQUl6ckIsRUFBT3NSLElBQUkzUixFQUFHVSxHQUFJLElBQU1MLEVBQU9pZCxLQUFPLEdBRXhEbGQsRUFBTXVPLEtBQUt6UCxLQUFLOEIsS0FBSzJqQixHQUN2QixDQUNBLE9BQU92a0IsQ0FDVCxDRHV4Q2tCNnJCLENBQWlCdnFCLFdBQ3BCLElBQUssRUFBV3RCLEdBQ3JCLE1BQU0sSUFBSTJiLFVBQVUsMEJBR3RCLE9DMXhDRCxTQUF1QjFiLEVBQVFELEdBQ3BDLElBQUssSUFBSUosRUFBSSxFQUFHQSxFQUFJSyxFQUFPaWQsS0FBTXRkLElBQy9CLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJTCxFQUFPa2QsUUFBUzdjLElBQ2xDTCxFQUFPOEQsSUFBSW5FLEVBQUdVLEVBQUdMLEVBQU9zUixJQUFJM1IsRUFBR1UsR0FBS04sRUFBTU0sR0FHaEQsQ0RteENRd3JCLENBQWN4cUIsS0FBTXRCLEdBQ2JzQixLQUVULFVBQUs4UCxFQUNILFFBQWNBLElBQVZwUixFQUNGQSxFQ3R4Q0gsU0FBcUJDLEdBQzFCLE1BQU04ckIsRUFBVTlyQixFQUFPYSxLQUFPLEVBQzlCLElBQUl5akIsRUFBTSxFQUNWLElBQUssSUFBSWprQixFQUFJLEVBQUdBLEVBQUlMLEVBQU9rZCxRQUFTN2MsSUFDbEMsSUFBSyxJQUFJVixFQUFJLEVBQUdBLEVBQUlLLEVBQU9pZCxLQUFNdGQsSUFDL0Iya0IsR0FBT3psQixLQUFLNHNCLElBQUl6ckIsRUFBT3NSLElBQUkzUixFQUFHVSxHQUFJLEdBQUt5ckIsRUFHM0MsT0FBT2p0QixLQUFLOEIsS0FBSzJqQixFQUNuQixDRDZ3Q2tCeUgsQ0FBWTFxQixXQUNmLEdBQXFCLGlCQUFWdEIsRUFDaEIsTUFBTSxJQUFJMmIsVUFBVSwwQkFHdEIsT0NoeENELFNBQWtCMWIsRUFBUUQsR0FDL0IsSUFBSyxJQUFJSixFQUFJLEVBQUdBLEVBQUlLLEVBQU9pZCxLQUFNdGQsSUFDL0IsSUFBSyxJQUFJVSxFQUFJLEVBQUdBLEVBQUlMLEVBQU9rZCxRQUFTN2MsSUFDbENMLEVBQU84RCxJQUFJbkUsRUFBR1UsRUFBR0wsRUFBT3NSLElBQUkzUixFQUFHVSxHQUFLTixFQUcxQyxDRHl3Q1Fpc0IsQ0FBUzNxQixLQUFNdEIsR0FDUnNCLEtBRVQsUUFDRSxNQUFNLElBQUlsQyxNQUFNLG1CQUFtQmtrQixLQUV6QyxDQUVBLFFBQUE1WixDQUFTbkYsR0FDUCxPQUFPc1ksRUFBeUJ2YixLQUFNaUQsRUFDeEMsRUFTRixTQUFTaWxCLEVBQWU5VyxFQUFHQyxHQUN6QixPQUFPRCxFQUFJQyxDQUNiLENBUkFzTSxFQUFldEUsVUFBVTRGLE1BQVEsU0FDWCxvQkFBWDJMLFNBQ1RqTixFQUFldEUsVUFBVXVSLE9BQU9DLElBQUksK0JGeCtDL0IsV0FDTCxPQUFPdFAsRUFBeUJ2YixLQUNsQyxHRXEvQ0EyZCxFQUFlbGdCLE9BQVNrZ0IsRUFBZVcsS0FDdkNYLEVBQWVtTixVQUFZbk4sRUFBZVksUUFDMUNaLEVBQWVvTixTQUFXcE4sRUFBZWdCLEtBQ3pDaEIsRUFBZXRFLFVBQVUwUixTQUFXcE4sRUFBZXRFLFVBQVVzRixLQUM3RGhCLEVBQWVxTixTQUFXck4sRUFBZWUsSUFDekNmLEVBQWV0RSxVQUFVNFIsT0FBU3ROLEVBQWV0RSxVQUFVb0gsSUFDM0Q5QyxFQUFldEUsVUFBVTZSLGNBQ3ZCdk4sRUFBZXRFLFVBQVV1TyxpQkFFWixNQUFNNUosVUFBZUwsRUFDbEMsV0FBQWplLENBQVl5ckIsRUFBT0MsR0FFakIsR0FEQXBtQixRQUNJZ1osRUFBT2dCLFNBQVNtTSxHQUVsQixPQUFPQSxFQUFNcmYsUUFDUixHQUFJcEssT0FBT2laLFVBQVV3USxJQUFVQSxHQUFTLEVBQUcsQ0FHaEQsR0FEQW5yQixLQUFLcUMsS0FBTyxLQUNSWCxPQUFPaVosVUFBVXlRLElBQWFBLEdBQVksR0FLNUMsTUFBTSxJQUFJL1EsVUFBVSx1Q0FKcEIsSUFBSyxJQUFJL2IsRUFBSSxFQUFHQSxFQUFJNnNCLEVBQU83c0IsSUFDekIwQixLQUFLcUMsS0FBSzRLLEtBQUssSUFBSWlJLGFBQWFrVyxHQUt0QyxLQUFPLEtBQUksRUFBV0QsR0FxQnBCLE1BQU0sSUFBSTlRLFVBQ1Isd0RBdEIwQixDQUU1QixNQUFNZ1IsRUFBWUYsRUFHbEIsR0FBd0IsaUJBRHhCQyxHQURBRCxFQUFRRSxFQUFVanRCLFFBQ0NpdEIsRUFBVSxHQUFHanRCLE9BQVMsR0FFdkMsTUFBTSxJQUFJaWMsVUFDUixxREFHSnJhLEtBQUtxQyxLQUFPLEdBQ1osSUFBSyxJQUFJL0QsRUFBSSxFQUFHQSxFQUFJNnNCLEVBQU83c0IsSUFBSyxDQUM5QixHQUFJK3NCLEVBQVUvc0IsR0FBR0YsU0FBV2d0QixFQUMxQixNQUFNLElBQUlyUSxXQUFXLGlDQUV2QixJQUFzQnNRLEVBQVUvc0IsR0E5Q3pCZ3RCLE9BQU9DLEdBQ1EsaUJBQVpBLElBOENSLE1BQU0sSUFBSWxSLFVBQVUsMENBRXRCcmEsS0FBS3FDLEtBQUs0SyxLQUFLaUksYUFBYWxKLEtBQUtxZixFQUFVL3NCLElBQzdDLENBQ0YsQ0FJQSxDQUNBMEIsS0FBSzRiLEtBQU91UCxFQUNabnJCLEtBQUs2YixRQUFVdVAsQ0FDakIsQ0FFQSxHQUFBM29CLENBQUlvbUIsRUFBVUMsRUFBYWxtQixHQUV6QixPQURBNUMsS0FBS3FDLEtBQUt3bUIsR0FBVUMsR0FBZWxtQixFQUM1QjVDLElBQ1QsQ0FFQSxHQUFBaVEsQ0FBSTRZLEVBQVVDLEdBQ1osT0FBTzlvQixLQUFLcUMsS0FBS3dtQixHQUFVQyxFQUM3QixDQUVBLFNBQUEwQyxDQUFVM29CLEdBSVIsT0FIQWdhLEVBQWM3YyxLQUFNNkMsR0FDcEI3QyxLQUFLcUMsS0FBS29wQixPQUFPNW9CLEVBQU8sR0FDeEI3QyxLQUFLNGIsTUFBUSxFQUNONWIsSUFDVCxDQUVBLE1BQUEwckIsQ0FBTzdvQixFQUFPMlEsR0FTWixZQVJjMUQsSUFBVjBELElBQ0ZBLEVBQVEzUSxFQUNSQSxFQUFRN0MsS0FBSzRiLE1BRWZpQixFQUFjN2MsS0FBTTZDLEdBQU8sR0FDM0IyUSxFQUFRMEIsYUFBYWxKLEtBQUtnUixFQUFlaGQsS0FBTXdULElBQy9DeFQsS0FBS3FDLEtBQUtvcEIsT0FBTzVvQixFQUFPLEVBQUcyUSxHQUMzQnhULEtBQUs0YixNQUFRLEVBQ041YixJQUNULENBRUEsWUFBQTJyQixDQUFhOW9CLEdBQ1hrYSxFQUFpQi9jLEtBQU02QyxHQUN2QixJQUFLLElBQUl2RSxFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQUssQ0FDbEMsTUFBTXN0QixFQUFTLElBQUkxVyxhQUFhbFYsS0FBSzZiLFFBQVUsR0FDL0MsSUFBSyxJQUFJN2MsRUFBSSxFQUFHQSxFQUFJNkQsRUFBTzdELElBQ3pCNHNCLEVBQU81c0IsR0FBS2dCLEtBQUtxQyxLQUFLL0QsR0FBR1UsR0FFM0IsSUFBSyxJQUFJQSxFQUFJNkQsRUFBUSxFQUFHN0QsRUFBSWdCLEtBQUs2YixRQUFTN2MsSUFDeEM0c0IsRUFBTzVzQixFQUFJLEdBQUtnQixLQUFLcUMsS0FBSy9ELEdBQUdVLEdBRS9CZ0IsS0FBS3FDLEtBQUsvRCxHQUFLc3RCLENBQ2pCLENBRUEsT0FEQTVyQixLQUFLNmIsU0FBVyxFQUNUN2IsSUFDVCxDQUVBLFNBQUE2ckIsQ0FBVWhwQixFQUFPMlEsUUFDTSxJQUFWQSxJQUNUQSxFQUFRM1EsRUFDUkEsRUFBUTdDLEtBQUs2YixTQUVma0IsRUFBaUIvYyxLQUFNNkMsR0FBTyxHQUM5QjJRLEVBQVEySixFQUFrQm5kLEtBQU13VCxHQUNoQyxJQUFLLElBQUlsVixFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQUssQ0FDbEMsTUFBTXN0QixFQUFTLElBQUkxVyxhQUFhbFYsS0FBSzZiLFFBQVUsR0FDL0MsSUFBSTdjLEVBQUksRUFDUixLQUFPQSxFQUFJNkQsRUFBTzdELElBQ2hCNHNCLEVBQU81c0IsR0FBS2dCLEtBQUtxQyxLQUFLL0QsR0FBR1UsR0FHM0IsSUFEQTRzQixFQUFPNXNCLEtBQU93VSxFQUFNbFYsR0FDYlUsRUFBSWdCLEtBQUs2YixRQUFVLEVBQUc3YyxJQUMzQjRzQixFQUFPNXNCLEdBQUtnQixLQUFLcUMsS0FBSy9ELEdBQUdVLEVBQUksR0FFL0JnQixLQUFLcUMsS0FBSy9ELEdBQUtzdEIsQ0FDakIsQ0FFQSxPQURBNXJCLEtBQUs2YixTQUFXLEVBQ1Q3YixJQUNULEdFam5ESyxTQUErQjJkLEVBQWdCSyxHQUNwREwsRUFBZXRFLFVBQVVoSixJQUFNLFNBQWF6TixHQUMxQyxNQUFxQixpQkFBVkEsRUFBMkI1QyxLQUFLOHJCLEtBQUtscEIsR0FDekM1QyxLQUFLK3JCLEtBQUtucEIsRUFDbkIsRUFFQSthLEVBQWV0RSxVQUFVeVMsS0FBTyxTQUFjbHBCLEdBQzVDLElBQUssSUFBSXRFLEVBQUksRUFBR0EsRUFBSTBCLEtBQUs0YixLQUFNdGQsSUFDN0IsSUFBSyxJQUFJVSxFQUFJLEVBQUdBLEVBQUlnQixLQUFLNmIsUUFBUzdjLElBQ2hDZ0IsS0FBS3lDLElBQUluRSxFQUFHVSxFQUFHZ0IsS0FBS2lRLElBQUkzUixFQUFHVSxHQUFLNEQsR0FHcEMsT0FBTzVDLElBQ1QsRUFFQTJkLEVBQWV0RSxVQUFVMFMsS0FBTyxTQUFjcHRCLEdBRTVDLEdBREFBLEVBQVNxZixFQUFPZSxZQUFZcGdCLEdBQ3hCcUIsS0FBSzRiLE9BQVNqZCxFQUFPaWQsTUFDdkI1YixLQUFLNmIsVUFBWWxkLEVBQU9rZCxRQUN4QixNQUFNLElBQUlkLFdBQVcscUNBRXZCLElBQUssSUFBSXpjLEVBQUksRUFBR0EsRUFBSTBCLEtBQUs0YixLQUFNdGQsSUFDN0IsSUFBSyxJQUFJVSxFQUFJLEVBQUdBLEVBQUlnQixLQUFLNmIsUUFBUzdjLElBQ2hDZ0IsS0FBS3lDLElBQUluRSxFQUFHVSxFQUFHZ0IsS0FBS2lRLElBQUkzUixFQUFHVSxHQUFLTCxFQUFPc1IsSUFBSTNSLEVBQUdVLElBR2xELE9BQU9nQixJQUNULEVBRUEyZCxFQUFldE4sSUFBTSxTQUFhMVIsRUFBUWlFLEdBRXhDLE9BRGtCLElBQUlvYixFQUFPcmYsR0FDWjBSLElBQUl6TixFQUN2QixFQUVBK2EsRUFBZXRFLFVBQVU2TixJQUFNLFNBQWF0a0IsR0FDMUMsTUFBcUIsaUJBQVZBLEVBQTJCNUMsS0FBS2dzQixLQUFLcHBCLEdBQ3pDNUMsS0FBS2lzQixLQUFLcnBCLEVBQ25CLEVBRUErYSxFQUFldEUsVUFBVTJTLEtBQU8sU0FBY3BwQixHQUM1QyxJQUFLLElBQUl0RSxFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQzdCLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJZ0IsS0FBSzZiLFFBQVM3YyxJQUNoQ2dCLEtBQUt5QyxJQUFJbkUsRUFBR1UsRUFBR2dCLEtBQUtpUSxJQUFJM1IsRUFBR1UsR0FBSzRELEdBR3BDLE9BQU81QyxJQUNULEVBRUEyZCxFQUFldEUsVUFBVTRTLEtBQU8sU0FBY3R0QixHQUU1QyxHQURBQSxFQUFTcWYsRUFBT2UsWUFBWXBnQixHQUN4QnFCLEtBQUs0YixPQUFTamQsRUFBT2lkLE1BQ3ZCNWIsS0FBSzZiLFVBQVlsZCxFQUFPa2QsUUFDeEIsTUFBTSxJQUFJZCxXQUFXLHFDQUV2QixJQUFLLElBQUl6YyxFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQzdCLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJZ0IsS0FBSzZiLFFBQVM3YyxJQUNoQ2dCLEtBQUt5QyxJQUFJbkUsRUFBR1UsRUFBR2dCLEtBQUtpUSxJQUFJM1IsRUFBR1UsR0FBS0wsRUFBT3NSLElBQUkzUixFQUFHVSxJQUdsRCxPQUFPZ0IsSUFDVCxFQUVBMmQsRUFBZXVKLElBQU0sU0FBYXZvQixFQUFRaUUsR0FFeEMsT0FEa0IsSUFBSW9iLEVBQU9yZixHQUNadW9CLElBQUl0a0IsRUFDdkIsRUFDQSthLEVBQWV0RSxVQUFVNlMsU0FBV3ZPLEVBQWV0RSxVQUFVNk4sSUFDN0R2SixFQUFldEUsVUFBVThTLFVBQVl4TyxFQUFldEUsVUFBVTJTLEtBQzlEck8sRUFBZXRFLFVBQVUrUyxVQUFZek8sRUFBZXRFLFVBQVU0UyxLQUM5RHRPLEVBQWV1TyxTQUFXdk8sRUFBZXVKLElBRXpDdkosRUFBZXRFLFVBQVVnVCxJQUFNLFNBQWF6cEIsR0FDMUMsTUFBcUIsaUJBQVZBLEVBQTJCNUMsS0FBSzBnQixLQUFLOWQsR0FDekM1QyxLQUFLc3NCLEtBQUsxcEIsRUFDbkIsRUFFQSthLEVBQWV0RSxVQUFVcUgsS0FBTyxTQUFjOWQsR0FDNUMsSUFBSyxJQUFJdEUsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzRiLEtBQU10ZCxJQUM3QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSWdCLEtBQUs2YixRQUFTN2MsSUFDaENnQixLQUFLeUMsSUFBSW5FLEVBQUdVLEVBQUdnQixLQUFLaVEsSUFBSTNSLEVBQUdVLEdBQUs0RCxHQUdwQyxPQUFPNUMsSUFDVCxFQUVBMmQsRUFBZXRFLFVBQVVpVCxLQUFPLFNBQWMzdEIsR0FFNUMsR0FEQUEsRUFBU3FmLEVBQU9lLFlBQVlwZ0IsR0FDeEJxQixLQUFLNGIsT0FBU2pkLEVBQU9pZCxNQUN2QjViLEtBQUs2YixVQUFZbGQsRUFBT2tkLFFBQ3hCLE1BQU0sSUFBSWQsV0FBVyxxQ0FFdkIsSUFBSyxJQUFJemMsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzRiLEtBQU10ZCxJQUM3QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSWdCLEtBQUs2YixRQUFTN2MsSUFDaENnQixLQUFLeUMsSUFBSW5FLEVBQUdVLEVBQUdnQixLQUFLaVEsSUFBSTNSLEVBQUdVLEdBQUtMLEVBQU9zUixJQUFJM1IsRUFBR1UsSUFHbEQsT0FBT2dCLElBQ1QsRUFFQTJkLEVBQWUwTyxJQUFNLFNBQWExdEIsRUFBUWlFLEdBRXhDLE9BRGtCLElBQUlvYixFQUFPcmYsR0FDWjB0QixJQUFJenBCLEVBQ3ZCLEVBQ0ErYSxFQUFldEUsVUFBVWtULFNBQVc1TyxFQUFldEUsVUFBVWdULElBQzdEMU8sRUFBZXRFLFVBQVVtVCxVQUFZN08sRUFBZXRFLFVBQVVxSCxLQUM5RC9DLEVBQWV0RSxVQUFVb1QsVUFBWTlPLEVBQWV0RSxVQUFVaVQsS0FDOUQzTyxFQUFlNE8sU0FBVzVPLEVBQWUwTyxJQUV6QzFPLEVBQWV0RSxVQUFVcVQsSUFBTSxTQUFhOXBCLEdBQzFDLE1BQXFCLGlCQUFWQSxFQUEyQjVDLEtBQUsyc0IsS0FBSy9wQixHQUN6QzVDLEtBQUs0c0IsS0FBS2hxQixFQUNuQixFQUVBK2EsRUFBZXRFLFVBQVVzVCxLQUFPLFNBQWMvcEIsR0FDNUMsSUFBSyxJQUFJdEUsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzRiLEtBQU10ZCxJQUM3QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSWdCLEtBQUs2YixRQUFTN2MsSUFDaENnQixLQUFLeUMsSUFBSW5FLEVBQUdVLEVBQUdnQixLQUFLaVEsSUFBSTNSLEVBQUdVLEdBQUs0RCxHQUdwQyxPQUFPNUMsSUFDVCxFQUVBMmQsRUFBZXRFLFVBQVV1VCxLQUFPLFNBQWNqdUIsR0FFNUMsR0FEQUEsRUFBU3FmLEVBQU9lLFlBQVlwZ0IsR0FDeEJxQixLQUFLNGIsT0FBU2pkLEVBQU9pZCxNQUN2QjViLEtBQUs2YixVQUFZbGQsRUFBT2tkLFFBQ3hCLE1BQU0sSUFBSWQsV0FBVyxxQ0FFdkIsSUFBSyxJQUFJemMsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzRiLEtBQU10ZCxJQUM3QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSWdCLEtBQUs2YixRQUFTN2MsSUFDaENnQixLQUFLeUMsSUFBSW5FLEVBQUdVLEVBQUdnQixLQUFLaVEsSUFBSTNSLEVBQUdVLEdBQUtMLEVBQU9zUixJQUFJM1IsRUFBR1UsSUFHbEQsT0FBT2dCLElBQ1QsRUFFQTJkLEVBQWUrTyxJQUFNLFNBQWEvdEIsRUFBUWlFLEdBRXhDLE9BRGtCLElBQUlvYixFQUFPcmYsR0FDWit0QixJQUFJOXBCLEVBQ3ZCLEVBQ0ErYSxFQUFldEUsVUFBVXdULE9BQVNsUCxFQUFldEUsVUFBVXFULElBQzNEL08sRUFBZXRFLFVBQVV5VCxRQUFVblAsRUFBZXRFLFVBQVVzVCxLQUM1RGhQLEVBQWV0RSxVQUFVMFQsUUFBVXBQLEVBQWV0RSxVQUFVdVQsS0FDNURqUCxFQUFla1AsT0FBU2xQLEVBQWUrTyxJQUV2Qy9PLEVBQWV0RSxVQUFVMlQsSUFBTSxTQUFhcHFCLEdBQzFDLE1BQXFCLGlCQUFWQSxFQUEyQjVDLEtBQUtpdEIsS0FBS3JxQixHQUN6QzVDLEtBQUtrdEIsS0FBS3RxQixFQUNuQixFQUVBK2EsRUFBZXRFLFVBQVU0VCxLQUFPLFNBQWNycUIsR0FDNUMsSUFBSyxJQUFJdEUsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzRiLEtBQU10ZCxJQUM3QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSWdCLEtBQUs2YixRQUFTN2MsSUFDaENnQixLQUFLeUMsSUFBSW5FLEVBQUdVLEVBQUdnQixLQUFLaVEsSUFBSTNSLEVBQUdVLEdBQUs0RCxHQUdwQyxPQUFPNUMsSUFDVCxFQUVBMmQsRUFBZXRFLFVBQVU2VCxLQUFPLFNBQWN2dUIsR0FFNUMsR0FEQUEsRUFBU3FmLEVBQU9lLFlBQVlwZ0IsR0FDeEJxQixLQUFLNGIsT0FBU2pkLEVBQU9pZCxNQUN2QjViLEtBQUs2YixVQUFZbGQsRUFBT2tkLFFBQ3hCLE1BQU0sSUFBSWQsV0FBVyxxQ0FFdkIsSUFBSyxJQUFJemMsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzRiLEtBQU10ZCxJQUM3QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSWdCLEtBQUs2YixRQUFTN2MsSUFDaENnQixLQUFLeUMsSUFBSW5FLEVBQUdVLEVBQUdnQixLQUFLaVEsSUFBSTNSLEVBQUdVLEdBQUtMLEVBQU9zUixJQUFJM1IsRUFBR1UsSUFHbEQsT0FBT2dCLElBQ1QsRUFFQTJkLEVBQWVxUCxJQUFNLFNBQWFydUIsRUFBUWlFLEdBRXhDLE9BRGtCLElBQUlvYixFQUFPcmYsR0FDWnF1QixJQUFJcHFCLEVBQ3ZCLEVBQ0ErYSxFQUFldEUsVUFBVThULFFBQVV4UCxFQUFldEUsVUFBVTJULElBQzVEclAsRUFBZXRFLFVBQVUrVCxTQUFXelAsRUFBZXRFLFVBQVU0VCxLQUM3RHRQLEVBQWV0RSxVQUFVZ1UsU0FBVzFQLEVBQWV0RSxVQUFVNlQsS0FDN0R2UCxFQUFld1AsUUFBVXhQLEVBQWVxUCxJQUV4Q3JQLEVBQWV0RSxVQUFVN0wsSUFBTSxTQUFhNUssR0FDMUMsTUFBcUIsaUJBQVZBLEVBQTJCNUMsS0FBS3N0QixLQUFLMXFCLEdBQ3pDNUMsS0FBS3V0QixLQUFLM3FCLEVBQ25CLEVBRUErYSxFQUFldEUsVUFBVWlVLEtBQU8sU0FBYzFxQixHQUM1QyxJQUFLLElBQUl0RSxFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQzdCLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJZ0IsS0FBSzZiLFFBQVM3YyxJQUNoQ2dCLEtBQUt5QyxJQUFJbkUsRUFBR1UsRUFBR2dCLEtBQUtpUSxJQUFJM1IsRUFBR1UsR0FBSzRELEdBR3BDLE9BQU81QyxJQUNULEVBRUEyZCxFQUFldEUsVUFBVWtVLEtBQU8sU0FBYzV1QixHQUU1QyxHQURBQSxFQUFTcWYsRUFBT2UsWUFBWXBnQixHQUN4QnFCLEtBQUs0YixPQUFTamQsRUFBT2lkLE1BQ3ZCNWIsS0FBSzZiLFVBQVlsZCxFQUFPa2QsUUFDeEIsTUFBTSxJQUFJZCxXQUFXLHFDQUV2QixJQUFLLElBQUl6YyxFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQzdCLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJZ0IsS0FBSzZiLFFBQVM3YyxJQUNoQ2dCLEtBQUt5QyxJQUFJbkUsRUFBR1UsRUFBR2dCLEtBQUtpUSxJQUFJM1IsRUFBR1UsR0FBS0wsRUFBT3NSLElBQUkzUixFQUFHVSxJQUdsRCxPQUFPZ0IsSUFDVCxFQUVBMmQsRUFBZW5RLElBQU0sU0FBYTdPLEVBQVFpRSxHQUV4QyxPQURrQixJQUFJb2IsRUFBT3JmLEdBQ1o2TyxJQUFJNUssRUFDdkIsRUFFQSthLEVBQWV0RSxVQUFVekwsR0FBSyxTQUFZaEwsR0FDeEMsTUFBcUIsaUJBQVZBLEVBQTJCNUMsS0FBS3d0QixJQUFJNXFCLEdBQ3hDNUMsS0FBS3l0QixJQUFJN3FCLEVBQ2xCLEVBRUErYSxFQUFldEUsVUFBVW1VLElBQU0sU0FBYTVxQixHQUMxQyxJQUFLLElBQUl0RSxFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQzdCLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJZ0IsS0FBSzZiLFFBQVM3YyxJQUNoQ2dCLEtBQUt5QyxJQUFJbkUsRUFBR1UsRUFBR2dCLEtBQUtpUSxJQUFJM1IsRUFBR1UsR0FBSzRELEdBR3BDLE9BQU81QyxJQUNULEVBRUEyZCxFQUFldEUsVUFBVW9VLElBQU0sU0FBYTl1QixHQUUxQyxHQURBQSxFQUFTcWYsRUFBT2UsWUFBWXBnQixHQUN4QnFCLEtBQUs0YixPQUFTamQsRUFBT2lkLE1BQ3ZCNWIsS0FBSzZiLFVBQVlsZCxFQUFPa2QsUUFDeEIsTUFBTSxJQUFJZCxXQUFXLHFDQUV2QixJQUFLLElBQUl6YyxFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQzdCLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJZ0IsS0FBSzZiLFFBQVM3YyxJQUNoQ2dCLEtBQUt5QyxJQUFJbkUsRUFBR1UsRUFBR2dCLEtBQUtpUSxJQUFJM1IsRUFBR1UsR0FBS0wsRUFBT3NSLElBQUkzUixFQUFHVSxJQUdsRCxPQUFPZ0IsSUFDVCxFQUVBMmQsRUFBZS9QLEdBQUssU0FBWWpQLEVBQVFpRSxHQUV0QyxPQURrQixJQUFJb2IsRUFBT3JmLEdBQ1ppUCxHQUFHaEwsRUFDdEIsRUFFQSthLEVBQWV0RSxVQUFVeEwsSUFBTSxTQUFhakwsR0FDMUMsTUFBcUIsaUJBQVZBLEVBQTJCNUMsS0FBSzB0QixLQUFLOXFCLEdBQ3pDNUMsS0FBSzJ0QixLQUFLL3FCLEVBQ25CLEVBRUErYSxFQUFldEUsVUFBVXFVLEtBQU8sU0FBYzlxQixHQUM1QyxJQUFLLElBQUl0RSxFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQzdCLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJZ0IsS0FBSzZiLFFBQVM3YyxJQUNoQ2dCLEtBQUt5QyxJQUFJbkUsRUFBR1UsRUFBR2dCLEtBQUtpUSxJQUFJM1IsRUFBR1UsR0FBSzRELEdBR3BDLE9BQU81QyxJQUNULEVBRUEyZCxFQUFldEUsVUFBVXNVLEtBQU8sU0FBY2h2QixHQUU1QyxHQURBQSxFQUFTcWYsRUFBT2UsWUFBWXBnQixHQUN4QnFCLEtBQUs0YixPQUFTamQsRUFBT2lkLE1BQ3ZCNWIsS0FBSzZiLFVBQVlsZCxFQUFPa2QsUUFDeEIsTUFBTSxJQUFJZCxXQUFXLHFDQUV2QixJQUFLLElBQUl6YyxFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQzdCLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJZ0IsS0FBSzZiLFFBQVM3YyxJQUNoQ2dCLEtBQUt5QyxJQUFJbkUsRUFBR1UsRUFBR2dCLEtBQUtpUSxJQUFJM1IsRUFBR1UsR0FBS0wsRUFBT3NSLElBQUkzUixFQUFHVSxJQUdsRCxPQUFPZ0IsSUFDVCxFQUVBMmQsRUFBZTlQLElBQU0sU0FBYWxQLEVBQVFpRSxHQUV4QyxPQURrQixJQUFJb2IsRUFBT3JmLEdBQ1prUCxJQUFJakwsRUFDdkIsRUFFQSthLEVBQWV0RSxVQUFVdVUsVUFBWSxTQUFtQmhyQixHQUN0RCxNQUFxQixpQkFBVkEsRUFBMkI1QyxLQUFLNnRCLFdBQVdqckIsR0FDL0M1QyxLQUFLOHRCLFdBQVdsckIsRUFDekIsRUFFQSthLEVBQWV0RSxVQUFVd1UsV0FBYSxTQUFvQmpyQixHQUN4RCxJQUFLLElBQUl0RSxFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQzdCLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJZ0IsS0FBSzZiLFFBQVM3YyxJQUNoQ2dCLEtBQUt5QyxJQUFJbkUsRUFBR1UsRUFBR2dCLEtBQUtpUSxJQUFJM1IsRUFBR1UsSUFBTTRELEdBR3JDLE9BQU81QyxJQUNULEVBRUEyZCxFQUFldEUsVUFBVXlVLFdBQWEsU0FBb0JudkIsR0FFeEQsR0FEQUEsRUFBU3FmLEVBQU9lLFlBQVlwZ0IsR0FDeEJxQixLQUFLNGIsT0FBU2pkLEVBQU9pZCxNQUN2QjViLEtBQUs2YixVQUFZbGQsRUFBT2tkLFFBQ3hCLE1BQU0sSUFBSWQsV0FBVyxxQ0FFdkIsSUFBSyxJQUFJemMsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzRiLEtBQU10ZCxJQUM3QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSWdCLEtBQUs2YixRQUFTN2MsSUFDaENnQixLQUFLeUMsSUFBSW5FLEVBQUdVLEVBQUdnQixLQUFLaVEsSUFBSTNSLEVBQUdVLElBQU1MLEVBQU9zUixJQUFJM1IsRUFBR1UsSUFHbkQsT0FBT2dCLElBQ1QsRUFFQTJkLEVBQWVpUSxVQUFZLFNBQW1CanZCLEVBQVFpRSxHQUVwRCxPQURrQixJQUFJb2IsRUFBT3JmLEdBQ1ppdkIsVUFBVWhyQixFQUM3QixFQUVBK2EsRUFBZXRFLFVBQVUwVSwwQkFBNEIsU0FBbUNuckIsR0FDdEYsTUFBcUIsaUJBQVZBLEVBQTJCNUMsS0FBS2d1QiwyQkFBMkJwckIsR0FDL0Q1QyxLQUFLaXVCLDJCQUEyQnJyQixFQUN6QyxFQUVBK2EsRUFBZXRFLFVBQVUyVSwyQkFBNkIsU0FBb0NwckIsR0FDeEYsSUFBSyxJQUFJdEUsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzRiLEtBQU10ZCxJQUM3QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSWdCLEtBQUs2YixRQUFTN2MsSUFDaENnQixLQUFLeUMsSUFBSW5FLEVBQUdVLEVBQUdnQixLQUFLaVEsSUFBSTNSLEVBQUdVLElBQU00RCxHQUdyQyxPQUFPNUMsSUFDVCxFQUVBMmQsRUFBZXRFLFVBQVU0VSwyQkFBNkIsU0FBb0N0dkIsR0FFeEYsR0FEQUEsRUFBU3FmLEVBQU9lLFlBQVlwZ0IsR0FDeEJxQixLQUFLNGIsT0FBU2pkLEVBQU9pZCxNQUN2QjViLEtBQUs2YixVQUFZbGQsRUFBT2tkLFFBQ3hCLE1BQU0sSUFBSWQsV0FBVyxxQ0FFdkIsSUFBSyxJQUFJemMsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzRiLEtBQU10ZCxJQUM3QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSWdCLEtBQUs2YixRQUFTN2MsSUFDaENnQixLQUFLeUMsSUFBSW5FLEVBQUdVLEVBQUdnQixLQUFLaVEsSUFBSTNSLEVBQUdVLElBQU1MLEVBQU9zUixJQUFJM1IsRUFBR1UsSUFHbkQsT0FBT2dCLElBQ1QsRUFFQTJkLEVBQWVvUSwwQkFBNEIsU0FBbUNwdkIsRUFBUWlFLEdBRXBGLE9BRGtCLElBQUlvYixFQUFPcmYsR0FDWm92QiwwQkFBMEJuckIsRUFDN0MsRUFFQSthLEVBQWV0RSxVQUFVNlUsV0FBYSxTQUFvQnRyQixHQUN4RCxNQUFxQixpQkFBVkEsRUFBMkI1QyxLQUFLbXVCLFlBQVl2ckIsR0FDaEQ1QyxLQUFLb3VCLFlBQVl4ckIsRUFDMUIsRUFFQSthLEVBQWV0RSxVQUFVOFUsWUFBYyxTQUFxQnZyQixHQUMxRCxJQUFLLElBQUl0RSxFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQzdCLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJZ0IsS0FBSzZiLFFBQVM3YyxJQUNoQ2dCLEtBQUt5QyxJQUFJbkUsRUFBR1UsRUFBR2dCLEtBQUtpUSxJQUFJM1IsRUFBR1UsS0FBTzRELEdBR3RDLE9BQU81QyxJQUNULEVBRUEyZCxFQUFldEUsVUFBVStVLFlBQWMsU0FBcUJ6dkIsR0FFMUQsR0FEQUEsRUFBU3FmLEVBQU9lLFlBQVlwZ0IsR0FDeEJxQixLQUFLNGIsT0FBU2pkLEVBQU9pZCxNQUN2QjViLEtBQUs2YixVQUFZbGQsRUFBT2tkLFFBQ3hCLE1BQU0sSUFBSWQsV0FBVyxxQ0FFdkIsSUFBSyxJQUFJemMsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzRiLEtBQU10ZCxJQUM3QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSWdCLEtBQUs2YixRQUFTN2MsSUFDaENnQixLQUFLeUMsSUFBSW5FLEVBQUdVLEVBQUdnQixLQUFLaVEsSUFBSTNSLEVBQUdVLEtBQU9MLEVBQU9zUixJQUFJM1IsRUFBR1UsSUFHcEQsT0FBT2dCLElBQ1QsRUFFQTJkLEVBQWV1USxXQUFhLFNBQW9CdnZCLEVBQVFpRSxHQUV0RCxPQURrQixJQUFJb2IsRUFBT3JmLEdBQ1p1dkIsV0FBV3RyQixFQUM5QixFQUNBK2EsRUFBZXRFLFVBQVVnVixtQkFBcUIxUSxFQUFldEUsVUFBVTZVLFdBQ3ZFdlEsRUFBZXRFLFVBQVVpVixvQkFBc0IzUSxFQUFldEUsVUFBVThVLFlBQ3hFeFEsRUFBZXRFLFVBQVVrVixvQkFBc0I1USxFQUFldEUsVUFBVStVLFlBQ3hFelEsRUFBZTBRLG1CQUFxQjFRLEVBQWV1USxXQUVuRHZRLEVBQWV0RSxVQUFVMUwsSUFBTSxXQUM3QixJQUFLLElBQUlyUCxFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQzdCLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJZ0IsS0FBSzZiLFFBQVM3YyxJQUNoQ2dCLEtBQUt5QyxJQUFJbkUsRUFBR1UsR0FBS2dCLEtBQUtpUSxJQUFJM1IsRUFBR1UsSUFHakMsT0FBT2dCLElBQ1QsRUFFQTJkLEVBQWVoUSxJQUFNLFNBQWFoUCxHQUVoQyxPQURrQixJQUFJcWYsRUFBT3JmLEdBQ1pnUCxLQUNuQixFQUVBZ1EsRUFBZXRFLFVBQVVyQyxJQUFNLFdBQzdCLElBQUssSUFBSTFZLEVBQUksRUFBR0EsRUFBSTBCLEtBQUs0YixLQUFNdGQsSUFDN0IsSUFBSyxJQUFJVSxFQUFJLEVBQUdBLEVBQUlnQixLQUFLNmIsUUFBUzdjLElBQ2hDZ0IsS0FBS3lDLElBQUluRSxFQUFHVSxFQUFHeEIsS0FBS3daLElBQUloWCxLQUFLaVEsSUFBSTNSLEVBQUdVLEtBR3hDLE9BQU9nQixJQUNULEVBRUEyZCxFQUFlM0csSUFBTSxTQUFhclksR0FFaEMsT0FEa0IsSUFBSXFmLEVBQU9yZixHQUNacVksS0FDbkIsRUFFQTJHLEVBQWV0RSxVQUFVbVYsS0FBTyxXQUM5QixJQUFLLElBQUlsd0IsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzRiLEtBQU10ZCxJQUM3QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSWdCLEtBQUs2YixRQUFTN2MsSUFDaENnQixLQUFLeUMsSUFBSW5FLEVBQUdVLEVBQUd4QixLQUFLZ3hCLEtBQUt4dUIsS0FBS2lRLElBQUkzUixFQUFHVSxLQUd6QyxPQUFPZ0IsSUFDVCxFQUVBMmQsRUFBZTZRLEtBQU8sU0FBYzd2QixHQUVsQyxPQURrQixJQUFJcWYsRUFBT3JmLEdBQ1o2dkIsTUFDbkIsRUFFQTdRLEVBQWV0RSxVQUFVb1YsTUFBUSxXQUMvQixJQUFLLElBQUlud0IsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzRiLEtBQU10ZCxJQUM3QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSWdCLEtBQUs2YixRQUFTN2MsSUFDaENnQixLQUFLeUMsSUFBSW5FLEVBQUdVLEVBQUd4QixLQUFLaXhCLE1BQU16dUIsS0FBS2lRLElBQUkzUixFQUFHVSxLQUcxQyxPQUFPZ0IsSUFDVCxFQUVBMmQsRUFBZThRLE1BQVEsU0FBZTl2QixHQUVwQyxPQURrQixJQUFJcWYsRUFBT3JmLEdBQ1o4dkIsT0FDbkIsRUFFQTlRLEVBQWV0RSxVQUFVcVYsS0FBTyxXQUM5QixJQUFLLElBQUlwd0IsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzRiLEtBQU10ZCxJQUM3QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSWdCLEtBQUs2YixRQUFTN2MsSUFDaENnQixLQUFLeUMsSUFBSW5FLEVBQUdVLEVBQUd4QixLQUFLa3hCLEtBQUsxdUIsS0FBS2lRLElBQUkzUixFQUFHVSxLQUd6QyxPQUFPZ0IsSUFDVCxFQUVBMmQsRUFBZStRLEtBQU8sU0FBYy92QixHQUVsQyxPQURrQixJQUFJcWYsRUFBT3JmLEdBQ1ordkIsTUFDbkIsRUFFQS9RLEVBQWV0RSxVQUFVc1YsTUFBUSxXQUMvQixJQUFLLElBQUlyd0IsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzRiLEtBQU10ZCxJQUM3QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSWdCLEtBQUs2YixRQUFTN2MsSUFDaENnQixLQUFLeUMsSUFBSW5FLEVBQUdVLEVBQUd4QixLQUFLbXhCLE1BQU0zdUIsS0FBS2lRLElBQUkzUixFQUFHVSxLQUcxQyxPQUFPZ0IsSUFDVCxFQUVBMmQsRUFBZWdSLE1BQVEsU0FBZWh3QixHQUVwQyxPQURrQixJQUFJcWYsRUFBT3JmLEdBQ1pnd0IsT0FDbkIsRUFFQWhSLEVBQWV0RSxVQUFVdVYsS0FBTyxXQUM5QixJQUFLLElBQUl0d0IsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzRiLEtBQU10ZCxJQUM3QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSWdCLEtBQUs2YixRQUFTN2MsSUFDaENnQixLQUFLeUMsSUFBSW5FLEVBQUdVLEVBQUd4QixLQUFLb3hCLEtBQUs1dUIsS0FBS2lRLElBQUkzUixFQUFHVSxLQUd6QyxPQUFPZ0IsSUFDVCxFQUVBMmQsRUFBZWlSLEtBQU8sU0FBY2p3QixHQUVsQyxPQURrQixJQUFJcWYsRUFBT3JmLEdBQ1ppd0IsTUFDbkIsRUFFQWpSLEVBQWV0RSxVQUFVd1YsTUFBUSxXQUMvQixJQUFLLElBQUl2d0IsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzRiLEtBQU10ZCxJQUM3QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSWdCLEtBQUs2YixRQUFTN2MsSUFDaENnQixLQUFLeUMsSUFBSW5FLEVBQUdVLEVBQUd4QixLQUFLcXhCLE1BQU03dUIsS0FBS2lRLElBQUkzUixFQUFHVSxLQUcxQyxPQUFPZ0IsSUFDVCxFQUVBMmQsRUFBZWtSLE1BQVEsU0FBZWx3QixHQUVwQyxPQURrQixJQUFJcWYsRUFBT3JmLEdBQ1prd0IsT0FDbkIsRUFFQWxSLEVBQWV0RSxVQUFVeVYsS0FBTyxXQUM5QixJQUFLLElBQUl4d0IsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzRiLEtBQU10ZCxJQUM3QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSWdCLEtBQUs2YixRQUFTN2MsSUFDaENnQixLQUFLeUMsSUFBSW5FLEVBQUdVLEVBQUd4QixLQUFLc3hCLEtBQUs5dUIsS0FBS2lRLElBQUkzUixFQUFHVSxLQUd6QyxPQUFPZ0IsSUFDVCxFQUVBMmQsRUFBZW1SLEtBQU8sU0FBY253QixHQUVsQyxPQURrQixJQUFJcWYsRUFBT3JmLEdBQ1ptd0IsTUFDbkIsRUFFQW5SLEVBQWV0RSxVQUFVbU8sS0FBTyxXQUM5QixJQUFLLElBQUlscEIsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzRiLEtBQU10ZCxJQUM3QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSWdCLEtBQUs2YixRQUFTN2MsSUFDaENnQixLQUFLeUMsSUFBSW5FLEVBQUdVLEVBQUd4QixLQUFLZ3FCLEtBQUt4bkIsS0FBS2lRLElBQUkzUixFQUFHVSxLQUd6QyxPQUFPZ0IsSUFDVCxFQUVBMmQsRUFBZTZKLEtBQU8sU0FBYzdvQixHQUVsQyxPQURrQixJQUFJcWYsRUFBT3JmLEdBQ1o2b0IsTUFDbkIsRUFFQTdKLEVBQWV0RSxVQUFVMFYsTUFBUSxXQUMvQixJQUFLLElBQUl6d0IsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzRiLEtBQU10ZCxJQUM3QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSWdCLEtBQUs2YixRQUFTN2MsSUFDaENnQixLQUFLeUMsSUFBSW5FLEVBQUdVLEVBQUd4QixLQUFLdXhCLE1BQU0vdUIsS0FBS2lRLElBQUkzUixFQUFHVSxLQUcxQyxPQUFPZ0IsSUFDVCxFQUVBMmQsRUFBZW9SLE1BQVEsU0FBZXB3QixHQUVwQyxPQURrQixJQUFJcWYsRUFBT3JmLEdBQ1pvd0IsT0FDbkIsRUFFQXBSLEVBQWV0RSxVQUFVMlYsSUFBTSxXQUM3QixJQUFLLElBQUkxd0IsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzRiLEtBQU10ZCxJQUM3QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSWdCLEtBQUs2YixRQUFTN2MsSUFDaENnQixLQUFLeUMsSUFBSW5FLEVBQUdVLEVBQUd4QixLQUFLd3hCLElBQUlodkIsS0FBS2lRLElBQUkzUixFQUFHVSxLQUd4QyxPQUFPZ0IsSUFDVCxFQUVBMmQsRUFBZXFSLElBQU0sU0FBYXJ3QixHQUVoQyxPQURrQixJQUFJcWYsRUFBT3JmLEdBQ1pxd0IsS0FDbkIsRUFFQXJSLEVBQWV0RSxVQUFVNFYsS0FBTyxXQUM5QixJQUFLLElBQUkzd0IsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzRiLEtBQU10ZCxJQUM3QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSWdCLEtBQUs2YixRQUFTN2MsSUFDaENnQixLQUFLeUMsSUFBSW5FLEVBQUdVLEVBQUd4QixLQUFLeXhCLEtBQUtqdkIsS0FBS2lRLElBQUkzUixFQUFHVSxLQUd6QyxPQUFPZ0IsSUFDVCxFQUVBMmQsRUFBZXNSLEtBQU8sU0FBY3R3QixHQUVsQyxPQURrQixJQUFJcWYsRUFBT3JmLEdBQ1pzd0IsTUFDbkIsRUFFQXRSLEVBQWV0RSxVQUFVdkMsSUFBTSxXQUM3QixJQUFLLElBQUl4WSxFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQzdCLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJZ0IsS0FBSzZiLFFBQVM3YyxJQUNoQ2dCLEtBQUt5QyxJQUFJbkUsRUFBR1UsRUFBR3hCLEtBQUtzWixJQUFJOVcsS0FBS2lRLElBQUkzUixFQUFHVSxLQUd4QyxPQUFPZ0IsSUFDVCxFQUVBMmQsRUFBZTdHLElBQU0sU0FBYW5ZLEdBRWhDLE9BRGtCLElBQUlxZixFQUFPcmYsR0FDWm1ZLEtBQ25CLEVBRUE2RyxFQUFldEUsVUFBVTZWLE1BQVEsV0FDL0IsSUFBSyxJQUFJNXdCLEVBQUksRUFBR0EsRUFBSTBCLEtBQUs0YixLQUFNdGQsSUFDN0IsSUFBSyxJQUFJVSxFQUFJLEVBQUdBLEVBQUlnQixLQUFLNmIsUUFBUzdjLElBQ2hDZ0IsS0FBS3lDLElBQUluRSxFQUFHVSxFQUFHeEIsS0FBSzB4QixNQUFNbHZCLEtBQUtpUSxJQUFJM1IsRUFBR1UsS0FHMUMsT0FBT2dCLElBQ1QsRUFFQTJkLEVBQWV1UixNQUFRLFNBQWV2d0IsR0FFcEMsT0FEa0IsSUFBSXFmLEVBQU9yZixHQUNadXdCLE9BQ25CLEVBRUF2UixFQUFldEUsVUFBVTNiLE1BQVEsV0FDL0IsSUFBSyxJQUFJWSxFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQzdCLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJZ0IsS0FBSzZiLFFBQVM3YyxJQUNoQ2dCLEtBQUt5QyxJQUFJbkUsRUFBR1UsRUFBR3hCLEtBQUtFLE1BQU1zQyxLQUFLaVEsSUFBSTNSLEVBQUdVLEtBRzFDLE9BQU9nQixJQUNULEVBRUEyZCxFQUFlamdCLE1BQVEsU0FBZWlCLEdBRXBDLE9BRGtCLElBQUlxZixFQUFPcmYsR0FDWmpCLE9BQ25CLEVBRUFpZ0IsRUFBZXRFLFVBQVU4VixPQUFTLFdBQ2hDLElBQUssSUFBSTd3QixFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQzdCLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJZ0IsS0FBSzZiLFFBQVM3YyxJQUNoQ2dCLEtBQUt5QyxJQUFJbkUsRUFBR1UsRUFBR3hCLEtBQUsyeEIsT0FBT252QixLQUFLaVEsSUFBSTNSLEVBQUdVLEtBRzNDLE9BQU9nQixJQUNULEVBRUEyZCxFQUFld1IsT0FBUyxTQUFnQnh3QixHQUV0QyxPQURrQixJQUFJcWYsRUFBT3JmLEdBQ1p3d0IsUUFDbkIsRUFFQXhSLEVBQWV0RSxVQUFVMUUsSUFBTSxXQUM3QixJQUFLLElBQUlyVyxFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQzdCLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJZ0IsS0FBSzZiLFFBQVM3YyxJQUNoQ2dCLEtBQUt5QyxJQUFJbkUsRUFBR1UsRUFBR3hCLEtBQUttWCxJQUFJM1UsS0FBS2lRLElBQUkzUixFQUFHVSxLQUd4QyxPQUFPZ0IsSUFDVCxFQUVBMmQsRUFBZWhKLElBQU0sU0FBYWhXLEdBRWhDLE9BRGtCLElBQUlxZixFQUFPcmYsR0FDWmdXLEtBQ25CLEVBRUFnSixFQUFldEUsVUFBVStWLE1BQVEsV0FDL0IsSUFBSyxJQUFJOXdCLEVBQUksRUFBR0EsRUFBSTBCLEtBQUs0YixLQUFNdGQsSUFDN0IsSUFBSyxJQUFJVSxFQUFJLEVBQUdBLEVBQUlnQixLQUFLNmIsUUFBUzdjLElBQ2hDZ0IsS0FBS3lDLElBQUluRSxFQUFHVSxFQUFHeEIsS0FBSzR4QixNQUFNcHZCLEtBQUtpUSxJQUFJM1IsRUFBR1UsS0FHMUMsT0FBT2dCLElBQ1QsRUFFQTJkLEVBQWV5UixNQUFRLFNBQWV6d0IsR0FFcEMsT0FEa0IsSUFBSXFmLEVBQU9yZixHQUNaeXdCLE9BQ25CLEVBRUF6UixFQUFldEUsVUFBVWdXLE1BQVEsV0FDL0IsSUFBSyxJQUFJL3dCLEVBQUksRUFBR0EsRUFBSTBCLEtBQUs0YixLQUFNdGQsSUFDN0IsSUFBSyxJQUFJVSxFQUFJLEVBQUdBLEVBQUlnQixLQUFLNmIsUUFBUzdjLElBQ2hDZ0IsS0FBS3lDLElBQUluRSxFQUFHVSxFQUFHeEIsS0FBSzZ4QixNQUFNcnZCLEtBQUtpUSxJQUFJM1IsRUFBR1UsS0FHMUMsT0FBT2dCLElBQ1QsRUFFQTJkLEVBQWUwUixNQUFRLFNBQWUxd0IsR0FFcEMsT0FEa0IsSUFBSXFmLEVBQU9yZixHQUNaMHdCLE9BQ25CLEVBRUExUixFQUFldEUsVUFBVWlXLEtBQU8sV0FDOUIsSUFBSyxJQUFJaHhCLEVBQUksRUFBR0EsRUFBSTBCLEtBQUs0YixLQUFNdGQsSUFDN0IsSUFBSyxJQUFJVSxFQUFJLEVBQUdBLEVBQUlnQixLQUFLNmIsUUFBUzdjLElBQ2hDZ0IsS0FBS3lDLElBQUluRSxFQUFHVSxFQUFHeEIsS0FBSzh4QixLQUFLdHZCLEtBQUtpUSxJQUFJM1IsRUFBR1UsS0FHekMsT0FBT2dCLElBQ1QsRUFFQTJkLEVBQWUyUixLQUFPLFNBQWMzd0IsR0FFbEMsT0FEa0IsSUFBSXFmLEVBQU9yZixHQUNaMndCLE1BQ25CLEVBRUEzUixFQUFldEUsVUFBVW9GLE1BQVEsV0FDL0IsSUFBSyxJQUFJbmdCLEVBQUksRUFBR0EsRUFBSTBCLEtBQUs0YixLQUFNdGQsSUFDN0IsSUFBSyxJQUFJVSxFQUFJLEVBQUdBLEVBQUlnQixLQUFLNmIsUUFBUzdjLElBQ2hDZ0IsS0FBS3lDLElBQUluRSxFQUFHVSxFQUFHeEIsS0FBS2loQixNQUFNemUsS0FBS2lRLElBQUkzUixFQUFHVSxLQUcxQyxPQUFPZ0IsSUFDVCxFQUVBMmQsRUFBZWMsTUFBUSxTQUFlOWYsR0FFcEMsT0FEa0IsSUFBSXFmLEVBQU9yZixHQUNaOGYsT0FDbkIsRUFFQWQsRUFBZXRFLFVBQVVsQyxLQUFPLFdBQzlCLElBQUssSUFBSTdZLEVBQUksRUFBR0EsRUFBSTBCLEtBQUs0YixLQUFNdGQsSUFDN0IsSUFBSyxJQUFJVSxFQUFJLEVBQUdBLEVBQUlnQixLQUFLNmIsUUFBUzdjLElBQ2hDZ0IsS0FBS3lDLElBQUluRSxFQUFHVSxFQUFHeEIsS0FBSzJaLEtBQUtuWCxLQUFLaVEsSUFBSTNSLEVBQUdVLEtBR3pDLE9BQU9nQixJQUNULEVBRUEyZCxFQUFleEcsS0FBTyxTQUFjeFksR0FFbEMsT0FEa0IsSUFBSXFmLEVBQU9yZixHQUNad1ksTUFDbkIsRUFFQXdHLEVBQWV0RSxVQUFVa1csSUFBTSxXQUM3QixJQUFLLElBQUlqeEIsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzRiLEtBQU10ZCxJQUM3QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSWdCLEtBQUs2YixRQUFTN2MsSUFDaENnQixLQUFLeUMsSUFBSW5FLEVBQUdVLEVBQUd4QixLQUFLK3hCLElBQUl2dkIsS0FBS2lRLElBQUkzUixFQUFHVSxLQUd4QyxPQUFPZ0IsSUFDVCxFQUVBMmQsRUFBZTRSLElBQU0sU0FBYTV3QixHQUVoQyxPQURrQixJQUFJcWYsRUFBT3JmLEdBQ1o0d0IsS0FDbkIsRUFFQTVSLEVBQWV0RSxVQUFVbVcsS0FBTyxXQUM5QixJQUFLLElBQUlseEIsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzRiLEtBQU10ZCxJQUM3QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSWdCLEtBQUs2YixRQUFTN2MsSUFDaENnQixLQUFLeUMsSUFBSW5FLEVBQUdVLEVBQUd4QixLQUFLZ3lCLEtBQUt4dkIsS0FBS2lRLElBQUkzUixFQUFHVSxLQUd6QyxPQUFPZ0IsSUFDVCxFQUVBMmQsRUFBZTZSLEtBQU8sU0FBYzd3QixHQUVsQyxPQURrQixJQUFJcWYsRUFBT3JmLEdBQ1o2d0IsTUFDbkIsRUFFQTdSLEVBQWV0RSxVQUFVL1osS0FBTyxXQUM5QixJQUFLLElBQUloQixFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQzdCLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJZ0IsS0FBSzZiLFFBQVM3YyxJQUNoQ2dCLEtBQUt5QyxJQUFJbkUsRUFBR1UsRUFBR3hCLEtBQUs4QixLQUFLVSxLQUFLaVEsSUFBSTNSLEVBQUdVLEtBR3pDLE9BQU9nQixJQUNULEVBRUEyZCxFQUFlcmUsS0FBTyxTQUFjWCxHQUVsQyxPQURrQixJQUFJcWYsRUFBT3JmLEdBQ1pXLE1BQ25CLEVBRUFxZSxFQUFldEUsVUFBVW9XLElBQU0sV0FDN0IsSUFBSyxJQUFJbnhCLEVBQUksRUFBR0EsRUFBSTBCLEtBQUs0YixLQUFNdGQsSUFDN0IsSUFBSyxJQUFJVSxFQUFJLEVBQUdBLEVBQUlnQixLQUFLNmIsUUFBUzdjLElBQ2hDZ0IsS0FBS3lDLElBQUluRSxFQUFHVSxFQUFHeEIsS0FBS2l5QixJQUFJenZCLEtBQUtpUSxJQUFJM1IsRUFBR1UsS0FHeEMsT0FBT2dCLElBQ1QsRUFFQTJkLEVBQWU4UixJQUFNLFNBQWE5d0IsR0FFaEMsT0FEa0IsSUFBSXFmLEVBQU9yZixHQUNaOHdCLEtBQ25CLEVBRUE5UixFQUFldEUsVUFBVXFXLEtBQU8sV0FDOUIsSUFBSyxJQUFJcHhCLEVBQUksRUFBR0EsRUFBSTBCLEtBQUs0YixLQUFNdGQsSUFDN0IsSUFBSyxJQUFJVSxFQUFJLEVBQUdBLEVBQUlnQixLQUFLNmIsUUFBUzdjLElBQ2hDZ0IsS0FBS3lDLElBQUluRSxFQUFHVSxFQUFHeEIsS0FBS2t5QixLQUFLMXZCLEtBQUtpUSxJQUFJM1IsRUFBR1UsS0FHekMsT0FBT2dCLElBQ1QsRUFFQTJkLEVBQWUrUixLQUFPLFNBQWMvd0IsR0FFbEMsT0FEa0IsSUFBSXFmLEVBQU9yZixHQUNaK3dCLE1BQ25CLEVBRUEvUixFQUFldEUsVUFBVXNXLE1BQVEsV0FDL0IsSUFBSyxJQUFJcnhCLEVBQUksRUFBR0EsRUFBSTBCLEtBQUs0YixLQUFNdGQsSUFDN0IsSUFBSyxJQUFJVSxFQUFJLEVBQUdBLEVBQUlnQixLQUFLNmIsUUFBUzdjLElBQ2hDZ0IsS0FBS3lDLElBQUluRSxFQUFHVSxFQUFHeEIsS0FBS215QixNQUFNM3ZCLEtBQUtpUSxJQUFJM1IsRUFBR1UsS0FHMUMsT0FBT2dCLElBQ1QsRUFFQTJkLEVBQWVnUyxNQUFRLFNBQWVoeEIsR0FFcEMsT0FEa0IsSUFBSXFmLEVBQU9yZixHQUNaZ3hCLE9BQ25CLEVBRUFoUyxFQUFleU0sSUFBTSxTQUFhenJCLEVBQVFpeEIsR0FFeEMsT0FEa0IsSUFBSTVSLEVBQU9yZixHQUNaeXJCLElBQUl3RixFQUN2QixFQUVBalMsRUFBZXRFLFVBQVUrUSxJQUFNLFNBQWF4bkIsR0FDMUMsTUFBcUIsaUJBQVZBLEVBQTJCNUMsS0FBSzZ2QixLQUFLanRCLEdBQ3pDNUMsS0FBSzh2QixLQUFLbHRCLEVBQ25CLEVBRUErYSxFQUFldEUsVUFBVXdXLEtBQU8sU0FBY2p0QixHQUM1QyxJQUFLLElBQUl0RSxFQUFJLEVBQUdBLEVBQUkwQixLQUFLNGIsS0FBTXRkLElBQzdCLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJZ0IsS0FBSzZiLFFBQVM3YyxJQUNoQ2dCLEtBQUt5QyxJQUFJbkUsRUFBR1UsRUFBR3hCLEtBQUs0c0IsSUFBSXBxQixLQUFLaVEsSUFBSTNSLEVBQUdVLEdBQUk0RCxJQUc1QyxPQUFPNUMsSUFDVCxFQUVBMmQsRUFBZXRFLFVBQVV5VyxLQUFPLFNBQWNueEIsR0FFNUMsR0FEQUEsRUFBU3FmLEVBQU9lLFlBQVlwZ0IsR0FDeEJxQixLQUFLNGIsT0FBU2pkLEVBQU9pZCxNQUN2QjViLEtBQUs2YixVQUFZbGQsRUFBT2tkLFFBQ3hCLE1BQU0sSUFBSWQsV0FBVyxxQ0FFdkIsSUFBSyxJQUFJemMsRUFBSSxFQUFHQSxFQUFJMEIsS0FBSzRiLEtBQU10ZCxJQUM3QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSWdCLEtBQUs2YixRQUFTN2MsSUFDaENnQixLQUFLeUMsSUFBSW5FLEVBQUdVLEVBQUd4QixLQUFLNHNCLElBQUlwcUIsS0FBS2lRLElBQUkzUixFQUFHVSxHQUFJTCxFQUFPc1IsSUFBSTNSLEVBQUdVLEtBRzFELE9BQU9nQixJQUNULENBQ0YsQ0Y4ekJBK3ZCLENBQXNCcFMsRUFBZ0JLLEdHbG5EdkIsTUFBTWdTLFVBQXdCclMsRUFDM0MsV0FBQWplLENBQVkyQyxHQUNWMkMsUUFDQWhGLEtBQUtxQyxLQUFPQSxFQUNackMsS0FBSzRiLEtBQU92WixFQUFLakUsT0FDakI0QixLQUFLNmIsUUFBVXhaLEVBQUssR0FBR2pFLE1BQ3pCLENBRUEsR0FBQXFFLENBQUlvbUIsRUFBVUMsRUFBYWxtQixHQUV6QixPQURBNUMsS0FBS3FDLEtBQUt3bUIsR0FBVUMsR0FBZWxtQixFQUM1QjVDLElBQ1QsQ0FFQSxHQUFBaVEsQ0FBSTRZLEVBQVVDLEdBQ1osT0FBTzlvQixLQUFLcUMsS0FBS3dtQixHQUFVQyxFQUM3QixFQ2RhLE1BQU1tSCxFQUNuQixXQUFBdndCLENBQVlmLEdBR1YsSUFLSUwsRUFBR1UsRUFBR3VPLEVBQUd2UCxFQUFHb04sRUFBRzhrQixFQUFHL3dCLEVBQ2xCZ3hCLEVBQVFDLEVBTlJDLEdBRkoxeEIsRUFBU3F4QixFQUFnQmpSLFlBQVlwZ0IsSUFFckJtTixRQUNaOFAsRUFBT3lVLEVBQUd6VSxLQUNWQyxFQUFVd1UsRUFBR3hVLFFBQ2J5VSxFQUFjLElBQUlwYixhQUFhMEcsR0FDL0IyVSxFQUFZLEVBSWhCLElBQUtqeUIsRUFBSSxFQUFHQSxFQUFJc2QsRUFBTXRkLElBQ3BCZ3lCLEVBQVloeUIsR0FBS0EsRUFLbkIsSUFGQTZ4QixFQUFTLElBQUlqYixhQUFhMEcsR0FFckI1YyxFQUFJLEVBQUdBLEVBQUk2YyxFQUFTN2MsSUFBSyxDQUM1QixJQUFLVixFQUFJLEVBQUdBLEVBQUlzZCxFQUFNdGQsSUFDcEI2eEIsRUFBTzd4QixHQUFLK3hCLEVBQUdwZ0IsSUFBSTNSLEVBQUdVLEdBR3hCLElBQUtWLEVBQUksRUFBR0EsRUFBSXNkLEVBQU10ZCxJQUFLLENBR3pCLElBRkE4eEIsRUFBTzV5QixLQUFLMEQsSUFBSTVDLEVBQUdVLEdBQ25Cb00sRUFBSSxFQUNDbUMsRUFBSSxFQUFHQSxFQUFJNmlCLEVBQU03aUIsSUFDcEJuQyxHQUFLaWxCLEVBQUdwZ0IsSUFBSTNSLEVBQUdpUCxHQUFLNGlCLEVBQU81aUIsR0FFN0I0aUIsRUFBTzd4QixJQUFNOE0sRUFDYmlsQixFQUFHNXRCLElBQUluRSxFQUFHVSxFQUFHbXhCLEVBQU83eEIsR0FDdEIsQ0FHQSxJQURBTixFQUFJZ0IsRUFDQ1YsRUFBSVUsRUFBSSxFQUFHVixFQUFJc2QsRUFBTXRkLElBQ3BCZCxLQUFLd1osSUFBSW1aLEVBQU83eEIsSUFBTWQsS0FBS3daLElBQUltWixFQUFPbnlCLE1BQ3hDQSxFQUFJTSxHQUlSLEdBQUlOLElBQU1nQixFQUFHLENBQ1gsSUFBS3VPLEVBQUksRUFBR0EsRUFBSXNPLEVBQVN0TyxJQUN2QjJpQixFQUFJRyxFQUFHcGdCLElBQUlqUyxFQUFHdVAsR0FDZDhpQixFQUFHNXRCLElBQUl6RSxFQUFHdVAsRUFBRzhpQixFQUFHcGdCLElBQUlqUixFQUFHdU8sSUFDdkI4aUIsRUFBRzV0QixJQUFJekQsRUFBR3VPLEVBQUcyaUIsR0FHZi93QixFQUFJbXhCLEVBQVl0eUIsR0FDaEJzeUIsRUFBWXR5QixHQUFLc3lCLEVBQVl0eEIsR0FDN0JzeEIsRUFBWXR4QixHQUFLRyxFQUVqQm94QixHQUFhQSxDQUNmLENBRUEsR0FBSXZ4QixFQUFJNGMsR0FBeUIsSUFBakJ5VSxFQUFHcGdCLElBQUlqUixFQUFHQSxHQUN4QixJQUFLVixFQUFJVSxFQUFJLEVBQUdWLEVBQUlzZCxFQUFNdGQsSUFDeEIreEIsRUFBRzV0QixJQUFJbkUsRUFBR1UsRUFBR3F4QixFQUFHcGdCLElBQUkzUixFQUFHVSxHQUFLcXhCLEVBQUdwZ0IsSUFBSWpSLEVBQUdBLEdBRzVDLENBRUFnQixLQUFLd3dCLEdBQUtILEVBQ1Zyd0IsS0FBS3N3QixZQUFjQSxFQUNuQnR3QixLQUFLdXdCLFVBQVlBLENBQ25CLENBRUEsVUFBQUUsR0FDRSxJQUFJcHVCLEVBQU9yQyxLQUFLd3dCLEdBQ1pFLEVBQU1ydUIsRUFBS3daLFFBQ2YsSUFBSyxJQUFJN2MsRUFBSSxFQUFHQSxFQUFJMHhCLEVBQUsxeEIsSUFDdkIsR0FBdUIsSUFBbkJxRCxFQUFLNE4sSUFBSWpSLEVBQUdBLEdBQ2QsT0FBTyxFQUdYLE9BQU8sQ0FDVCxDQUVBLEtBQUEyeEIsQ0FBTS90QixHQUNKQSxFQUFRb2IsRUFBT2UsWUFBWW5jLEdBRTNCLElBQUl5dEIsRUFBS3J3QixLQUFLd3dCLEdBR2QsR0FGV0gsRUFBR3pVLE9BRURoWixFQUFNZ1osS0FDakIsTUFBTSxJQUFJOWQsTUFBTSw2QkFFbEIsR0FBSWtDLEtBQUt5d0IsYUFDUCxNQUFNLElBQUkzeUIsTUFBTSx5QkFHbEIsSUFHSVEsRUFBR1UsRUFBR3VPLEVBSE56RCxFQUFRbEgsRUFBTWlaLFFBQ2QvRixFQUFJbFQsRUFBTXlsQixhQUFhcm9CLEtBQUtzd0IsWUFBYSxFQUFHeG1CLEVBQVEsR0FDcEQrUixFQUFVd1UsRUFBR3hVLFFBR2pCLElBQUt0TyxFQUFJLEVBQUdBLEVBQUlzTyxFQUFTdE8sSUFDdkIsSUFBS2pQLEVBQUlpUCxFQUFJLEVBQUdqUCxFQUFJdWQsRUFBU3ZkLElBQzNCLElBQUtVLEVBQUksRUFBR0EsRUFBSThLLEVBQU85SyxJQUNyQjhXLEVBQUVyVCxJQUFJbkUsRUFBR1UsRUFBRzhXLEVBQUU3RixJQUFJM1IsRUFBR1UsR0FBSzhXLEVBQUU3RixJQUFJMUMsRUFBR3ZPLEdBQUtxeEIsRUFBR3BnQixJQUFJM1IsRUFBR2lQLElBSXhELElBQUtBLEVBQUlzTyxFQUFVLEVBQUd0TyxHQUFLLEVBQUdBLElBQUssQ0FDakMsSUFBS3ZPLEVBQUksRUFBR0EsRUFBSThLLEVBQU85SyxJQUNyQjhXLEVBQUVyVCxJQUFJOEssRUFBR3ZPLEVBQUc4VyxFQUFFN0YsSUFBSTFDLEVBQUd2TyxHQUFLcXhCLEVBQUdwZ0IsSUFBSTFDLEVBQUdBLElBRXRDLElBQUtqUCxFQUFJLEVBQUdBLEVBQUlpUCxFQUFHalAsSUFDakIsSUFBS1UsRUFBSSxFQUFHQSxFQUFJOEssRUFBTzlLLElBQ3JCOFcsRUFBRXJULElBQUluRSxFQUFHVSxFQUFHOFcsRUFBRTdGLElBQUkzUixFQUFHVSxHQUFLOFcsRUFBRTdGLElBQUkxQyxFQUFHdk8sR0FBS3F4QixFQUFHcGdCLElBQUkzUixFQUFHaVAsR0FHeEQsQ0FDQSxPQUFPdUksQ0FDVCxDQUVBLGVBQUk4YSxHQUNGLElBQUl2dUIsRUFBT3JDLEtBQUt3d0IsR0FDaEIsSUFBS251QixFQUFLb2QsV0FDUixNQUFNLElBQUkzaEIsTUFBTSx5QkFFbEIsSUFBSTh5QixFQUFjNXdCLEtBQUt1d0IsVUFDbkJHLEVBQU1ydUIsRUFBS3daLFFBQ2YsSUFBSyxJQUFJN2MsRUFBSSxFQUFHQSxFQUFJMHhCLEVBQUsxeEIsSUFDdkI0eEIsR0FBZXZ1QixFQUFLNE4sSUFBSWpSLEVBQUdBLEdBRTdCLE9BQU80eEIsQ0FDVCxDQUVBLHlCQUFJQyxHQUNGLElBQUl4dUIsRUFBT3JDLEtBQUt3d0IsR0FDWjVVLEVBQU92WixFQUFLdVosS0FDWkMsRUFBVXhaLEVBQUt3WixRQUNmL0YsRUFBSSxJQUFJa0ksRUFBT3BDLEVBQU1DLEdBQ3pCLElBQUssSUFBSXZkLEVBQUksRUFBR0EsRUFBSXNkLEVBQU10ZCxJQUN4QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSTZjLEVBQVM3YyxJQUN2QlYsRUFBSVUsRUFDTjhXLEVBQUVyVCxJQUFJbkUsRUFBR1UsRUFBR3FELEVBQUs0TixJQUFJM1IsRUFBR1UsSUFDZlYsSUFBTVUsRUFDZjhXLEVBQUVyVCxJQUFJbkUsRUFBR1UsRUFBRyxHQUVaOFcsRUFBRXJULElBQUluRSxFQUFHVSxFQUFHLEdBSWxCLE9BQU84VyxDQUNULENBRUEseUJBQUlnYixHQUNGLElBQUl6dUIsRUFBT3JDLEtBQUt3d0IsR0FDWjVVLEVBQU92WixFQUFLdVosS0FDWkMsRUFBVXhaLEVBQUt3WixRQUNmL0YsRUFBSSxJQUFJa0ksRUFBT3BDLEVBQU1DLEdBQ3pCLElBQUssSUFBSXZkLEVBQUksRUFBR0EsRUFBSXNkLEVBQU10ZCxJQUN4QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSTZjLEVBQVM3YyxJQUN2QlYsR0FBS1UsRUFDUDhXLEVBQUVyVCxJQUFJbkUsRUFBR1UsRUFBR3FELEVBQUs0TixJQUFJM1IsRUFBR1UsSUFFeEI4VyxFQUFFclQsSUFBSW5FLEVBQUdVLEVBQUcsR0FJbEIsT0FBTzhXLENBQ1QsQ0FFQSwwQkFBSWliLEdBQ0YsT0FBT2x5QixNQUFNbU4sS0FBS2hNLEtBQUtzd0IsWUFDekIsRUN6S0ssU0FBU1UsRUFBVzVmLEVBQUdDLEdBQzVCLElBQUkxTSxFQUFJLEVBQ1IsT0FBSW5ILEtBQUt3WixJQUFJNUYsR0FBSzVULEtBQUt3WixJQUFJM0YsSUFDekIxTSxFQUFJME0sRUFBSUQsRUFDRDVULEtBQUt3WixJQUFJNUYsR0FBSzVULEtBQUs4QixLQUFLLEVBQUlxRixFQUFJQSxJQUUvQixJQUFOME0sR0FDRjFNLEVBQUl5TSxFQUFJQyxFQUNEN1QsS0FBS3daLElBQUkzRixHQUFLN1QsS0FBSzhCLEtBQUssRUFBSXFGLEVBQUlBLElBRWxDLENBQ1QsQ0NOZSxNQUFNc3NCLEVBQ25CLFdBQUF2eEIsQ0FBWWtELEdBR1YsSUFJSXRFLEVBQUdVLEVBQUd1TyxFQUFHbkMsRUFKVDhsQixHQUZKdHVCLEVBQVFvdEIsRUFBZ0JqUixZQUFZbmMsSUFFckJrSixRQUNYdVUsRUFBSXpkLEVBQU1nWixLQUNWeFcsRUFBSXhDLEVBQU1pWixRQUNWc1YsRUFBUSxJQUFJamMsYUFBYTlQLEdBRzdCLElBQUttSSxFQUFJLEVBQUdBLEVBQUluSSxFQUFHbUksSUFBSyxDQUN0QixJQUFJNmpCLEVBQU0sRUFDVixJQUFLOXlCLEVBQUlpUCxFQUFHalAsRUFBSStoQixFQUFHL2hCLElBQ2pCOHlCLEVBQU1KLEVBQVdJLEVBQUtGLEVBQUdqaEIsSUFBSTNSLEVBQUdpUCxJQUVsQyxHQUFZLElBQVI2akIsRUFBVyxDQUliLElBSElGLEVBQUdqaEIsSUFBSTFDLEVBQUdBLEdBQUssSUFDakI2akIsR0FBT0EsR0FFSjl5QixFQUFJaVAsRUFBR2pQLEVBQUkraEIsRUFBRy9oQixJQUNqQjR5QixFQUFHenVCLElBQUluRSxFQUFHaVAsRUFBRzJqQixFQUFHamhCLElBQUkzUixFQUFHaVAsR0FBSzZqQixHQUc5QixJQURBRixFQUFHenVCLElBQUk4SyxFQUFHQSxFQUFHMmpCLEVBQUdqaEIsSUFBSTFDLEVBQUdBLEdBQUssR0FDdkJ2TyxFQUFJdU8sRUFBSSxFQUFHdk8sRUFBSW9HLEVBQUdwRyxJQUFLLENBRTFCLElBREFvTSxFQUFJLEVBQ0M5TSxFQUFJaVAsRUFBR2pQLEVBQUkraEIsRUFBRy9oQixJQUNqQjhNLEdBQUs4bEIsRUFBR2poQixJQUFJM1IsRUFBR2lQLEdBQUsyakIsRUFBR2poQixJQUFJM1IsRUFBR1UsR0FHaEMsSUFEQW9NLEdBQUtBLEVBQUk4bEIsRUFBR2poQixJQUFJMUMsRUFBR0EsR0FDZGpQLEVBQUlpUCxFQUFHalAsRUFBSStoQixFQUFHL2hCLElBQ2pCNHlCLEVBQUd6dUIsSUFBSW5FLEVBQUdVLEVBQUdreUIsRUFBR2poQixJQUFJM1IsRUFBR1UsR0FBS29NLEVBQUk4bEIsRUFBR2poQixJQUFJM1IsRUFBR2lQLEdBRTlDLENBQ0YsQ0FDQTRqQixFQUFNNWpCLElBQU02akIsQ0FDZCxDQUVBcHhCLEtBQUtxeEIsR0FBS0gsRUFDVmx4QixLQUFLc3hCLE1BQVFILENBQ2YsQ0FFQSxLQUFBUixDQUFNL3RCLEdBQ0pBLEVBQVFvYixFQUFPZSxZQUFZbmMsR0FFM0IsSUFBSXN1QixFQUFLbHhCLEtBQUtxeEIsR0FDVmhSLEVBQUk2USxFQUFHdFYsS0FFWCxHQUFJaFosRUFBTWdaLE9BQVN5RSxFQUNqQixNQUFNLElBQUl2aUIsTUFBTSxvQ0FFbEIsSUFBS2tDLEtBQUt1eEIsYUFDUixNQUFNLElBQUl6ekIsTUFBTSw0QkFHbEIsSUFHSVEsRUFBR1UsRUFBR3VPLEVBQUduQyxFQUhUdEIsRUFBUWxILEVBQU1pWixRQUNkL0YsRUFBSWxULEVBQU1rSixRQUNWMUcsRUFBSThyQixFQUFHclYsUUFHWCxJQUFLdE8sRUFBSSxFQUFHQSxFQUFJbkksRUFBR21JLElBQ2pCLElBQUt2TyxFQUFJLEVBQUdBLEVBQUk4SyxFQUFPOUssSUFBSyxDQUUxQixJQURBb00sRUFBSSxFQUNDOU0sRUFBSWlQLEVBQUdqUCxFQUFJK2hCLEVBQUcvaEIsSUFDakI4TSxHQUFLOGxCLEVBQUdqaEIsSUFBSTNSLEVBQUdpUCxHQUFLdUksRUFBRTdGLElBQUkzUixFQUFHVSxHQUcvQixJQURBb00sR0FBS0EsRUFBSThsQixFQUFHamhCLElBQUkxQyxFQUFHQSxHQUNkalAsRUFBSWlQLEVBQUdqUCxFQUFJK2hCLEVBQUcvaEIsSUFDakJ3WCxFQUFFclQsSUFBSW5FLEVBQUdVLEVBQUc4VyxFQUFFN0YsSUFBSTNSLEVBQUdVLEdBQUtvTSxFQUFJOGxCLEVBQUdqaEIsSUFBSTNSLEVBQUdpUCxHQUU1QyxDQUVGLElBQUtBLEVBQUluSSxFQUFJLEVBQUdtSSxHQUFLLEVBQUdBLElBQUssQ0FDM0IsSUFBS3ZPLEVBQUksRUFBR0EsRUFBSThLLEVBQU85SyxJQUNyQjhXLEVBQUVyVCxJQUFJOEssRUFBR3ZPLEVBQUc4VyxFQUFFN0YsSUFBSTFDLEVBQUd2TyxHQUFLZ0IsS0FBS3N4QixNQUFNL2pCLElBRXZDLElBQUtqUCxFQUFJLEVBQUdBLEVBQUlpUCxFQUFHalAsSUFDakIsSUFBS1UsRUFBSSxFQUFHQSxFQUFJOEssRUFBTzlLLElBQ3JCOFcsRUFBRXJULElBQUluRSxFQUFHVSxFQUFHOFcsRUFBRTdGLElBQUkzUixFQUFHVSxHQUFLOFcsRUFBRTdGLElBQUkxQyxFQUFHdk8sR0FBS2t5QixFQUFHamhCLElBQUkzUixFQUFHaVAsR0FHeEQsQ0FFQSxPQUFPdUksRUFBRW1SLFVBQVUsRUFBRzdoQixFQUFJLEVBQUcsRUFBRzBFLEVBQVEsRUFDMUMsQ0FFQSxVQUFBeW5CLEdBQ0UsSUFBSTFWLEVBQVU3YixLQUFLcXhCLEdBQUd4VixRQUN0QixJQUFLLElBQUl2ZCxFQUFJLEVBQUdBLEVBQUl1ZCxFQUFTdmQsSUFDM0IsR0FBc0IsSUFBbEIwQixLQUFLc3hCLE1BQU1oekIsR0FDYixPQUFPLEVBR1gsT0FBTyxDQUNULENBRUEseUJBQUl3eUIsR0FDRixJQUdJeHlCLEVBQUdVLEVBSEhreUIsRUFBS2x4QixLQUFLcXhCLEdBQ1Zqc0IsRUFBSThyQixFQUFHclYsUUFDUC9GLEVBQUksSUFBSWtJLEVBQU81WSxFQUFHQSxHQUV0QixJQUFLOUcsRUFBSSxFQUFHQSxFQUFJOEcsRUFBRzlHLElBQ2pCLElBQUtVLEVBQUksRUFBR0EsRUFBSW9HLEVBQUdwRyxJQUNiVixFQUFJVSxFQUNOOFcsRUFBRXJULElBQUluRSxFQUFHVSxFQUFHa3lCLEVBQUdqaEIsSUFBSTNSLEVBQUdVLElBQ2JWLElBQU1VLEVBQ2Y4VyxFQUFFclQsSUFBSW5FLEVBQUdVLEVBQUdnQixLQUFLc3hCLE1BQU1oekIsSUFFdkJ3WCxFQUFFclQsSUFBSW5FLEVBQUdVLEVBQUcsR0FJbEIsT0FBTzhXLENBQ1QsQ0FFQSxvQkFBSTBiLEdBQ0YsSUFJSWx6QixFQUFHVSxFQUFHdU8sRUFBR25DLEVBSlQ4bEIsRUFBS2x4QixLQUFLcXhCLEdBQ1Z6VixFQUFPc1YsRUFBR3RWLEtBQ1ZDLEVBQVVxVixFQUFHclYsUUFDYi9GLEVBQUksSUFBSWtJLEVBQU9wQyxFQUFNQyxHQUd6QixJQUFLdE8sRUFBSXNPLEVBQVUsRUFBR3RPLEdBQUssRUFBR0EsSUFBSyxDQUNqQyxJQUFLalAsRUFBSSxFQUFHQSxFQUFJc2QsRUFBTXRkLElBQ3BCd1gsRUFBRXJULElBQUluRSxFQUFHaVAsRUFBRyxHQUdkLElBREF1SSxFQUFFclQsSUFBSThLLEVBQUdBLEVBQUcsR0FDUHZPLEVBQUl1TyxFQUFHdk8sRUFBSTZjLEVBQVM3YyxJQUN2QixHQUFxQixJQUFqQmt5QixFQUFHamhCLElBQUkxQyxFQUFHQSxHQUFVLENBRXRCLElBREFuQyxFQUFJLEVBQ0M5TSxFQUFJaVAsRUFBR2pQLEVBQUlzZCxFQUFNdGQsSUFDcEI4TSxHQUFLOGxCLEVBQUdqaEIsSUFBSTNSLEVBQUdpUCxHQUFLdUksRUFBRTdGLElBQUkzUixFQUFHVSxHQUsvQixJQUZBb00sR0FBS0EsRUFBSThsQixFQUFHamhCLElBQUkxQyxFQUFHQSxHQUVkalAsRUFBSWlQLEVBQUdqUCxFQUFJc2QsRUFBTXRkLElBQ3BCd1gsRUFBRXJULElBQUluRSxFQUFHVSxFQUFHOFcsRUFBRTdGLElBQUkzUixFQUFHVSxHQUFLb00sRUFBSThsQixFQUFHamhCLElBQUkzUixFQUFHaVAsR0FFNUMsQ0FFSixDQUNBLE9BQU91SSxDQUNULEVDOUlhLE1BQU0yYixFQUNuQixXQUFBL3hCLENBQVlrRCxFQUFPSyxFQUFVLENBQUMsR0FHNUIsSUFGQUwsRUFBUW90QixFQUFnQmpSLFlBQVluYyxJQUUxQjhhLFVBQ1IsTUFBTSxJQUFJNWYsTUFBTSw0QkFHbEIsSUFBSXVpQixFQUFJemQsRUFBTWdaLEtBQ1Z4VyxFQUFJeEMsRUFBTWlaLFFBRWQsTUFBTSwyQkFDSjZWLEdBQTZCLEVBQUksNEJBQ2pDQyxHQUE4QixFQUFJLGNBQ2xDQyxHQUFnQixHQUNkM3VCLEVBRUosSUFJSW1PLEVBSkF5Z0IsRUFBUUMsUUFBUUosR0FDaEJLLEVBQVFELFFBQVFILEdBRWhCSyxHQUFVLEVBRWQsR0FBSTNSLEVBQUlqYixFQUNOLEdBQUt3c0IsRUFNRSxDQUNMeGdCLEVBQUl4TyxFQUFNcVEsWUFDVm9OLEVBQUlqUCxFQUFFd0ssS0FDTnhXLEVBQUlnTSxFQUFFeUssUUFDTm1XLEdBQVUsRUFDVixJQUFJQyxFQUFNSixFQUNWQSxFQUFRRSxFQUNSQSxFQUFRRSxDQUNWLE1BYkU3Z0IsRUFBSXhPLEVBQU1rSixRQUVWNE0sUUFBUWtPLEtBQ04sK0ZBWUp4VixFQUFJeE8sRUFBTWtKLFFBR1osSUFBSW9tQixFQUFLMTBCLEtBQUswRCxJQUFJbWYsRUFBR2piLEdBQ2pCK3NCLEVBQUszMEIsS0FBSzBELElBQUltZixFQUFJLEVBQUdqYixHQUNyQmdHLEVBQUksSUFBSThKLGFBQWFpZCxHQUNyQkMsRUFBSSxJQUFJcFUsRUFBT3FDLEVBQUc2UixHQUNsQkcsRUFBSSxJQUFJclUsRUFBTzVZLEVBQUdBLEdBRWxCdEMsRUFBSSxJQUFJb1MsYUFBYTlQLEdBQ3JCa3RCLEVBQU8sSUFBSXBkLGFBQWFtTCxHQUV4QmtTLEVBQUssSUFBSXJkLGFBQWFpZCxHQUMxQixJQUFLLElBQUk3ekIsRUFBSSxFQUFHQSxFQUFJNnpCLEVBQUk3ekIsSUFBS2kwQixFQUFHajBCLEdBQUtBLEVBRXJDLElBQUlrMEIsRUFBTWgxQixLQUFLMEQsSUFBSW1mLEVBQUksRUFBR2piLEdBQ3RCcXRCLEVBQU1qMUIsS0FBSzBDLElBQUksRUFBRzFDLEtBQUswRCxJQUFJa0UsRUFBSSxFQUFHaWIsSUFDbENxUyxFQUFNbDFCLEtBQUswQyxJQUFJc3lCLEVBQUtDLEdBRXhCLElBQUssSUFBSWxsQixFQUFJLEVBQUdBLEVBQUltbEIsRUFBS25sQixJQUFLLENBQzVCLEdBQUlBLEVBQUlpbEIsRUFBSyxDQUNYcG5CLEVBQUVtQyxHQUFLLEVBQ1AsSUFBSyxJQUFJalAsRUFBSWlQLEVBQUdqUCxFQUFJK2hCLEVBQUcvaEIsSUFDckI4TSxFQUFFbUMsR0FBS3lqQixFQUFXNWxCLEVBQUVtQyxHQUFJNkQsRUFBRW5CLElBQUkzUixFQUFHaVAsSUFFbkMsR0FBYSxJQUFUbkMsRUFBRW1DLEdBQVUsQ0FDVjZELEVBQUVuQixJQUFJMUMsRUFBR0EsR0FBSyxJQUNoQm5DLEVBQUVtQyxJQUFNbkMsRUFBRW1DLElBRVosSUFBSyxJQUFJalAsRUFBSWlQLEVBQUdqUCxFQUFJK2hCLEVBQUcvaEIsSUFDckI4UyxFQUFFM08sSUFBSW5FLEVBQUdpUCxFQUFHNkQsRUFBRW5CLElBQUkzUixFQUFHaVAsR0FBS25DLEVBQUVtQyxJQUU5QjZELEVBQUUzTyxJQUFJOEssRUFBR0EsRUFBRzZELEVBQUVuQixJQUFJMUMsRUFBR0EsR0FBSyxFQUM1QixDQUNBbkMsRUFBRW1DLElBQU1uQyxFQUFFbUMsRUFDWixDQUVBLElBQUssSUFBSXZPLEVBQUl1TyxFQUFJLEVBQUd2TyxFQUFJb0csRUFBR3BHLElBQUssQ0FDOUIsR0FBSXVPLEVBQUlpbEIsR0FBZ0IsSUFBVHBuQixFQUFFbUMsR0FBVSxDQUN6QixJQUFJMmlCLEVBQUksRUFDUixJQUFLLElBQUk1eEIsRUFBSWlQLEVBQUdqUCxFQUFJK2hCLEVBQUcvaEIsSUFDckI0eEIsR0FBSzllLEVBQUVuQixJQUFJM1IsRUFBR2lQLEdBQUs2RCxFQUFFbkIsSUFBSTNSLEVBQUdVLEdBRTlCa3hCLEdBQUtBLEVBQUk5ZSxFQUFFbkIsSUFBSTFDLEVBQUdBLEdBQ2xCLElBQUssSUFBSWpQLEVBQUlpUCxFQUFHalAsRUFBSStoQixFQUFHL2hCLElBQ3JCOFMsRUFBRTNPLElBQUluRSxFQUFHVSxFQUFHb1MsRUFBRW5CLElBQUkzUixFQUFHVSxHQUFLa3hCLEVBQUk5ZSxFQUFFbkIsSUFBSTNSLEVBQUdpUCxHQUUzQyxDQUNBekssRUFBRTlELEdBQUtvUyxFQUFFbkIsSUFBSTFDLEVBQUd2TyxFQUNsQixDQUVBLEdBQUk2eUIsR0FBU3RrQixFQUFJaWxCLEVBQ2YsSUFBSyxJQUFJbDBCLEVBQUlpUCxFQUFHalAsRUFBSStoQixFQUFHL2hCLElBQ3JCOHpCLEVBQUUzdkIsSUFBSW5FLEVBQUdpUCxFQUFHNkQsRUFBRW5CLElBQUkzUixFQUFHaVAsSUFJekIsR0FBSUEsRUFBSWtsQixFQUFLLENBQ1gzdkIsRUFBRXlLLEdBQUssRUFDUCxJQUFLLElBQUlqUCxFQUFJaVAsRUFBSSxFQUFHalAsRUFBSThHLEVBQUc5RyxJQUN6QndFLEVBQUV5SyxHQUFLeWpCLEVBQVdsdUIsRUFBRXlLLEdBQUl6SyxFQUFFeEUsSUFFNUIsR0FBYSxJQUFUd0UsRUFBRXlLLEdBQVUsQ0FDVnpLLEVBQUV5SyxFQUFJLEdBQUssSUFDYnpLLEVBQUV5SyxHQUFLLEVBQUl6SyxFQUFFeUssSUFFZixJQUFLLElBQUlqUCxFQUFJaVAsRUFBSSxFQUFHalAsRUFBSThHLEVBQUc5RyxJQUN6QndFLEVBQUV4RSxJQUFNd0UsRUFBRXlLLEdBRVp6SyxFQUFFeUssRUFBSSxJQUFNLENBQ2QsQ0FFQSxHQURBekssRUFBRXlLLElBQU16SyxFQUFFeUssR0FDTkEsRUFBSSxFQUFJOFMsR0FBYyxJQUFUdmQsRUFBRXlLLEdBQVUsQ0FDM0IsSUFBSyxJQUFJalAsRUFBSWlQLEVBQUksRUFBR2pQLEVBQUkraEIsRUFBRy9oQixJQUN6QmcwQixFQUFLaDBCLEdBQUssRUFFWixJQUFLLElBQUlBLEVBQUlpUCxFQUFJLEVBQUdqUCxFQUFJK2hCLEVBQUcvaEIsSUFDekIsSUFBSyxJQUFJVSxFQUFJdU8sRUFBSSxFQUFHdk8sRUFBSW9HLEVBQUdwRyxJQUN6QnN6QixFQUFLaDBCLElBQU13RSxFQUFFOUQsR0FBS29TLEVBQUVuQixJQUFJM1IsRUFBR1UsR0FHL0IsSUFBSyxJQUFJQSxFQUFJdU8sRUFBSSxFQUFHdk8sRUFBSW9HLEVBQUdwRyxJQUFLLENBQzlCLElBQUlreEIsR0FBS3B0QixFQUFFOUQsR0FBSzhELEVBQUV5SyxFQUFJLEdBQ3RCLElBQUssSUFBSWpQLEVBQUlpUCxFQUFJLEVBQUdqUCxFQUFJK2hCLEVBQUcvaEIsSUFDekI4UyxFQUFFM08sSUFBSW5FLEVBQUdVLEVBQUdvUyxFQUFFbkIsSUFBSTNSLEVBQUdVLEdBQUtreEIsRUFBSW9DLEVBQUtoMEIsR0FFdkMsQ0FDRixDQUNBLEdBQUl5ekIsRUFDRixJQUFLLElBQUl6ekIsRUFBSWlQLEVBQUksRUFBR2pQLEVBQUk4RyxFQUFHOUcsSUFDekIrekIsRUFBRTV2QixJQUFJbkUsRUFBR2lQLEVBQUd6SyxFQUFFeEUsR0FHcEIsQ0FDRixDQUVBLElBQUlOLEVBQUlSLEtBQUswRCxJQUFJa0UsRUFBR2liLEVBQUksR0FZeEIsR0FYSW1TLEVBQU1wdEIsSUFDUmdHLEVBQUVvbkIsR0FBT3BoQixFQUFFbkIsSUFBSXVpQixFQUFLQSxJQUVsQm5TLEVBQUlyaUIsSUFDTm9OLEVBQUVwTixFQUFJLEdBQUssR0FFVHkwQixFQUFNLEVBQUl6MEIsSUFDWjhFLEVBQUUydkIsR0FBT3JoQixFQUFFbkIsSUFBSXdpQixFQUFLejBCLEVBQUksSUFFMUI4RSxFQUFFOUUsRUFBSSxHQUFLLEVBRVA2ekIsRUFBTyxDQUNULElBQUssSUFBSTd5QixFQUFJd3pCLEVBQUt4ekIsRUFBSWt6QixFQUFJbHpCLElBQUssQ0FDN0IsSUFBSyxJQUFJVixFQUFJLEVBQUdBLEVBQUkraEIsRUFBRy9oQixJQUNyQjh6QixFQUFFM3ZCLElBQUluRSxFQUFHVSxFQUFHLEdBRWRvekIsRUFBRTN2QixJQUFJekQsRUFBR0EsRUFBRyxFQUNkLENBQ0EsSUFBSyxJQUFJdU8sRUFBSWlsQixFQUFNLEVBQUdqbEIsR0FBSyxFQUFHQSxJQUM1QixHQUFhLElBQVRuQyxFQUFFbUMsR0FBVSxDQUNkLElBQUssSUFBSXZPLEVBQUl1TyxFQUFJLEVBQUd2TyxFQUFJa3pCLEVBQUlsekIsSUFBSyxDQUMvQixJQUFJa3hCLEVBQUksRUFDUixJQUFLLElBQUk1eEIsRUFBSWlQLEVBQUdqUCxFQUFJK2hCLEVBQUcvaEIsSUFDckI0eEIsR0FBS2tDLEVBQUVuaUIsSUFBSTNSLEVBQUdpUCxHQUFLNmtCLEVBQUVuaUIsSUFBSTNSLEVBQUdVLEdBRTlCa3hCLEdBQUtBLEVBQUlrQyxFQUFFbmlCLElBQUkxQyxFQUFHQSxHQUNsQixJQUFLLElBQUlqUCxFQUFJaVAsRUFBR2pQLEVBQUkraEIsRUFBRy9oQixJQUNyQjh6QixFQUFFM3ZCLElBQUluRSxFQUFHVSxFQUFHb3pCLEVBQUVuaUIsSUFBSTNSLEVBQUdVLEdBQUtreEIsRUFBSWtDLEVBQUVuaUIsSUFBSTNSLEVBQUdpUCxHQUUzQyxDQUNBLElBQUssSUFBSWpQLEVBQUlpUCxFQUFHalAsRUFBSStoQixFQUFHL2hCLElBQ3JCOHpCLEVBQUUzdkIsSUFBSW5FLEVBQUdpUCxHQUFJNmtCLEVBQUVuaUIsSUFBSTNSLEVBQUdpUCxJQUV4QjZrQixFQUFFM3ZCLElBQUk4SyxFQUFHQSxFQUFHLEVBQUk2a0IsRUFBRW5pQixJQUFJMUMsRUFBR0EsSUFDekIsSUFBSyxJQUFJalAsRUFBSSxFQUFHQSxFQUFJaVAsRUFBSSxFQUFHalAsSUFDekI4ekIsRUFBRTN2QixJQUFJbkUsRUFBR2lQLEVBQUcsRUFFaEIsS0FBTyxDQUNMLElBQUssSUFBSWpQLEVBQUksRUFBR0EsRUFBSStoQixFQUFHL2hCLElBQ3JCOHpCLEVBQUUzdkIsSUFBSW5FLEVBQUdpUCxFQUFHLEdBRWQ2a0IsRUFBRTN2QixJQUFJOEssRUFBR0EsRUFBRyxFQUNkLENBRUosQ0FFQSxHQUFJd2tCLEVBQ0YsSUFBSyxJQUFJeGtCLEVBQUluSSxFQUFJLEVBQUdtSSxHQUFLLEVBQUdBLElBQUssQ0FDL0IsR0FBSUEsRUFBSWtsQixHQUFnQixJQUFUM3ZCLEVBQUV5SyxHQUNmLElBQUssSUFBSXZPLEVBQUl1TyxFQUFJLEVBQUd2TyxFQUFJb0csRUFBR3BHLElBQUssQ0FDOUIsSUFBSWt4QixFQUFJLEVBQ1IsSUFBSyxJQUFJNXhCLEVBQUlpUCxFQUFJLEVBQUdqUCxFQUFJOEcsRUFBRzlHLElBQ3pCNHhCLEdBQUttQyxFQUFFcGlCLElBQUkzUixFQUFHaVAsR0FBSzhrQixFQUFFcGlCLElBQUkzUixFQUFHVSxHQUU5Qmt4QixHQUFLQSxFQUFJbUMsRUFBRXBpQixJQUFJMUMsRUFBSSxFQUFHQSxHQUN0QixJQUFLLElBQUlqUCxFQUFJaVAsRUFBSSxFQUFHalAsRUFBSThHLEVBQUc5RyxJQUN6Qit6QixFQUFFNXZCLElBQUluRSxFQUFHVSxFQUFHcXpCLEVBQUVwaUIsSUFBSTNSLEVBQUdVLEdBQUtreEIsRUFBSW1DLEVBQUVwaUIsSUFBSTNSLEVBQUdpUCxHQUUzQyxDQUVGLElBQUssSUFBSWpQLEVBQUksRUFBR0EsRUFBSThHLEVBQUc5RyxJQUNyQit6QixFQUFFNXZCLElBQUluRSxFQUFHaVAsRUFBRyxHQUVkOGtCLEVBQUU1dkIsSUFBSThLLEVBQUdBLEVBQUcsRUFDZCxDQUdGLElBQUlvbEIsRUFBSzMwQixFQUFJLEVBQ1RtVyxFQUFPLEVBQ1B5ZSxFQUFNbHhCLE9BQU9teEIsUUFDakIsS0FBTzcwQixFQUFJLEdBQUcsQ0FDWixJQUFJdVAsRUFBR3VsQixFQUNQLElBQUt2bEIsRUFBSXZQLEVBQUksRUFBR3VQLElBQU0sSUFDVCxJQUFQQSxFQURtQkEsSUFBSyxDQUk1QixNQUFNd2xCLEVBQ0pyeEIsT0FBT0MsVUFBWWl4QixFQUFNcDFCLEtBQUt3WixJQUFJNUwsRUFBRW1DLEdBQUsvUCxLQUFLd1osSUFBSTVMLEVBQUVtQyxFQUFJLEtBQzFELEdBQUkvUCxLQUFLd1osSUFBSWxVLEVBQUV5SyxLQUFPd2xCLEdBQVNyeEIsT0FBT3NULE1BQU1sUyxFQUFFeUssSUFBSyxDQUNqRHpLLEVBQUV5SyxHQUFLLEVBQ1AsS0FDRixDQUNGLENBQ0EsR0FBSUEsSUFBTXZQLEVBQUksRUFDWjgwQixFQUFPLE1BQ0YsQ0FDTCxJQUFJRSxFQUNKLElBQUtBLEVBQUtoMUIsRUFBSSxFQUFHZzFCLEdBQU16bEIsR0FDakJ5bEIsSUFBT3psQixFQURheWxCLElBQU0sQ0FJOUIsSUFBSTlDLEdBQ0Q4QyxJQUFPaDFCLEVBQUlSLEtBQUt3WixJQUFJbFUsRUFBRWt3QixJQUFPLElBQzdCQSxJQUFPemxCLEVBQUksRUFBSS9QLEtBQUt3WixJQUFJbFUsRUFBRWt3QixFQUFLLElBQU0sR0FDeEMsR0FBSXgxQixLQUFLd1osSUFBSTVMLEVBQUU0bkIsS0FBUUosRUFBTTFDLEVBQUcsQ0FDOUI5a0IsRUFBRTRuQixHQUFNLEVBQ1IsS0FDRixDQUNGLENBQ0lBLElBQU96bEIsRUFDVHVsQixFQUFPLEVBQ0VFLElBQU9oMUIsRUFBSSxFQUNwQjgwQixFQUFPLEdBRVBBLEVBQU8sRUFDUHZsQixFQUFJeWxCLEVBRVIsQ0FJQSxPQUZBemxCLElBRVF1bEIsR0FDTixLQUFLLEVBQUcsQ0FDTixJQUFJRyxFQUFJbndCLEVBQUU5RSxFQUFJLEdBQ2Q4RSxFQUFFOUUsRUFBSSxHQUFLLEVBQ1gsSUFBSyxJQUFJZ0IsRUFBSWhCLEVBQUksRUFBR2dCLEdBQUt1TyxFQUFHdk8sSUFBSyxDQUMvQixJQUFJa3hCLEVBQUljLEVBQVc1bEIsRUFBRXBNLEdBQUlpMEIsR0FDckJDLEVBQUs5bkIsRUFBRXBNLEdBQUtreEIsRUFDWmlELEVBQUtGLEVBQUkvQyxFQU1iLEdBTEE5a0IsRUFBRXBNLEdBQUtreEIsRUFDSGx4QixJQUFNdU8sSUFDUjBsQixHQUFLRSxFQUFLcndCLEVBQUU5RCxFQUFJLEdBQ2hCOEQsRUFBRTlELEVBQUksR0FBS2swQixFQUFLcHdCLEVBQUU5RCxFQUFJLElBRXBCK3lCLEVBQ0YsSUFBSyxJQUFJenpCLEVBQUksRUFBR0EsRUFBSThHLEVBQUc5RyxJQUNyQjR4QixFQUFJZ0QsRUFBS2IsRUFBRXBpQixJQUFJM1IsRUFBR1UsR0FBS20wQixFQUFLZCxFQUFFcGlCLElBQUkzUixFQUFHTixFQUFJLEdBQ3pDcTBCLEVBQUU1dkIsSUFBSW5FLEVBQUdOLEVBQUksR0FBSW0xQixFQUFLZCxFQUFFcGlCLElBQUkzUixFQUFHVSxHQUFLazBCLEVBQUtiLEVBQUVwaUIsSUFBSTNSLEVBQUdOLEVBQUksSUFDdERxMEIsRUFBRTV2QixJQUFJbkUsRUFBR1UsRUFBR2t4QixFQUdsQixDQUNBLEtBQ0YsQ0FDQSxLQUFLLEVBQUcsQ0FDTixJQUFJK0MsRUFBSW53QixFQUFFeUssRUFBSSxHQUNkekssRUFBRXlLLEVBQUksR0FBSyxFQUNYLElBQUssSUFBSXZPLEVBQUl1TyxFQUFHdk8sRUFBSWhCLEVBQUdnQixJQUFLLENBQzFCLElBQUlreEIsRUFBSWMsRUFBVzVsQixFQUFFcE0sR0FBSWkwQixHQUNyQkMsRUFBSzluQixFQUFFcE0sR0FBS2t4QixFQUNaaUQsRUFBS0YsRUFBSS9DLEVBSWIsR0FIQTlrQixFQUFFcE0sR0FBS2t4QixFQUNQK0MsR0FBS0UsRUFBS3J3QixFQUFFOUQsR0FDWjhELEVBQUU5RCxHQUFLazBCLEVBQUtwd0IsRUFBRTlELEdBQ1Y2eUIsRUFDRixJQUFLLElBQUl2ekIsRUFBSSxFQUFHQSxFQUFJK2hCLEVBQUcvaEIsSUFDckI0eEIsRUFBSWdELEVBQUtkLEVBQUVuaUIsSUFBSTNSLEVBQUdVLEdBQUttMEIsRUFBS2YsRUFBRW5pQixJQUFJM1IsRUFBR2lQLEVBQUksR0FDekM2a0IsRUFBRTN2QixJQUFJbkUsRUFBR2lQLEVBQUksR0FBSTRsQixFQUFLZixFQUFFbmlCLElBQUkzUixFQUFHVSxHQUFLazBCLEVBQUtkLEVBQUVuaUIsSUFBSTNSLEVBQUdpUCxFQUFJLElBQ3RENmtCLEVBQUUzdkIsSUFBSW5FLEVBQUdVLEVBQUdreEIsRUFHbEIsQ0FDQSxLQUNGLENBQ0EsS0FBSyxFQUFHLENBQ04sTUFBTXh4QixFQUFRbEIsS0FBSzBDLElBQ2pCMUMsS0FBS3daLElBQUk1TCxFQUFFcE4sRUFBSSxJQUNmUixLQUFLd1osSUFBSTVMLEVBQUVwTixFQUFJLElBQ2ZSLEtBQUt3WixJQUFJbFUsRUFBRTlFLEVBQUksSUFDZlIsS0FBS3daLElBQUk1TCxFQUFFbUMsSUFDWC9QLEtBQUt3WixJQUFJbFUsRUFBRXlLLEtBRVA2bEIsRUFBS2hvQixFQUFFcE4sRUFBSSxHQUFLVSxFQUNoQjIwQixFQUFPam9CLEVBQUVwTixFQUFJLEdBQUtVLEVBQ2xCNDBCLEVBQU94d0IsRUFBRTlFLEVBQUksR0FBS1UsRUFDbEI2MEIsRUFBS25vQixFQUFFbUMsR0FBSzdPLEVBQ1o4MEIsRUFBSzF3QixFQUFFeUssR0FBSzdPLEVBQ1oyUyxJQUFNZ2lCLEVBQU9ELElBQU9DLEVBQU9ELEdBQU1FLEVBQU9BLEdBQVEsRUFDaEQ1ZSxFQUFJMGUsRUFBS0UsR0FBUUYsRUFBS0UsR0FDNUIsSUFBSUcsRUFBUSxFQUNGLElBQU5waUIsR0FBaUIsSUFBTnFELElBRVgrZSxFQURFcGlCLEVBQUksRUFDRSxFQUFJN1QsS0FBSzhCLEtBQUsrUixFQUFJQSxFQUFJcUQsR0FFdEJsWCxLQUFLOEIsS0FBSytSLEVBQUlBLEVBQUlxRCxHQUU1QitlLEVBQVEvZSxHQUFLckQsRUFBSW9pQixJQUVuQixJQUFJUixHQUFLTSxFQUFLSCxJQUFPRyxFQUFLSCxHQUFNSyxFQUM1QkMsRUFBSUgsRUFBS0MsRUFDYixJQUFLLElBQUl4MEIsRUFBSXVPLEVBQUd2TyxFQUFJaEIsRUFBSSxFQUFHZ0IsSUFBSyxDQUM5QixJQUFJa3hCLEVBQUljLEVBQVdpQyxFQUFHUyxHQUNaLElBQU54RCxJQUFTQSxFQUFJeHVCLE9BQU9DLFdBQ3hCLElBQUl1eEIsRUFBS0QsRUFBSS9DLEVBQ1RpRCxFQUFLTyxFQUFJeEQsRUFRYixHQVBJbHhCLElBQU11TyxJQUNSekssRUFBRTlELEVBQUksR0FBS2t4QixHQUViK0MsRUFBSUMsRUFBSzluQixFQUFFcE0sR0FBS20wQixFQUFLcndCLEVBQUU5RCxHQUN2QjhELEVBQUU5RCxHQUFLazBCLEVBQUtwd0IsRUFBRTlELEdBQUttMEIsRUFBSy9uQixFQUFFcE0sR0FDMUIwMEIsRUFBSVAsRUFBSy9uQixFQUFFcE0sRUFBSSxHQUNmb00sRUFBRXBNLEVBQUksR0FBS2swQixFQUFLOW5CLEVBQUVwTSxFQUFJLEdBQ2xCK3lCLEVBQ0YsSUFBSyxJQUFJenpCLEVBQUksRUFBR0EsRUFBSThHLEVBQUc5RyxJQUNyQjR4QixFQUFJZ0QsRUFBS2IsRUFBRXBpQixJQUFJM1IsRUFBR1UsR0FBS20wQixFQUFLZCxFQUFFcGlCLElBQUkzUixFQUFHVSxFQUFJLEdBQ3pDcXpCLEVBQUU1dkIsSUFBSW5FLEVBQUdVLEVBQUksR0FBSW0wQixFQUFLZCxFQUFFcGlCLElBQUkzUixFQUFHVSxHQUFLazBCLEVBQUtiLEVBQUVwaUIsSUFBSTNSLEVBQUdVLEVBQUksSUFDdERxekIsRUFBRTV2QixJQUFJbkUsRUFBR1UsRUFBR2t4QixHQVloQixHQVRBQSxFQUFJYyxFQUFXaUMsRUFBR1MsR0FDUixJQUFOeEQsSUFBU0EsRUFBSXh1QixPQUFPQyxXQUN4QnV4QixFQUFLRCxFQUFJL0MsRUFDVGlELEVBQUtPLEVBQUl4RCxFQUNUOWtCLEVBQUVwTSxHQUFLa3hCLEVBQ1ArQyxFQUFJQyxFQUFLcHdCLEVBQUU5RCxHQUFLbTBCLEVBQUsvbkIsRUFBRXBNLEVBQUksR0FDM0JvTSxFQUFFcE0sRUFBSSxJQUFNbTBCLEVBQUtyd0IsRUFBRTlELEdBQUtrMEIsRUFBSzluQixFQUFFcE0sRUFBSSxHQUNuQzAwQixFQUFJUCxFQUFLcndCLEVBQUU5RCxFQUFJLEdBQ2Y4RCxFQUFFOUQsRUFBSSxHQUFLazBCLEVBQUtwd0IsRUFBRTlELEVBQUksR0FDbEI2eUIsR0FBUzd5QixFQUFJcWhCLEVBQUksRUFDbkIsSUFBSyxJQUFJL2hCLEVBQUksRUFBR0EsRUFBSStoQixFQUFHL2hCLElBQ3JCNHhCLEVBQUlnRCxFQUFLZCxFQUFFbmlCLElBQUkzUixFQUFHVSxHQUFLbTBCLEVBQUtmLEVBQUVuaUIsSUFBSTNSLEVBQUdVLEVBQUksR0FDekNvekIsRUFBRTN2QixJQUFJbkUsRUFBR1UsRUFBSSxHQUFJbTBCLEVBQUtmLEVBQUVuaUIsSUFBSTNSLEVBQUdVLEdBQUtrMEIsRUFBS2QsRUFBRW5pQixJQUFJM1IsRUFBR1UsRUFBSSxJQUN0RG96QixFQUFFM3ZCLElBQUluRSxFQUFHVSxFQUFHa3hCLEVBR2xCLENBQ0FwdEIsRUFBRTlFLEVBQUksR0FBS2kxQixFQUNYOWUsR0FBYyxFQUNkLEtBQ0YsQ0FDQSxLQUFLLEVBQ0gsR0FBSS9JLEVBQUVtQyxJQUFNLElBQ1ZuQyxFQUFFbUMsR0FBS25DLEVBQUVtQyxHQUFLLEdBQUtuQyxFQUFFbUMsR0FBSyxFQUN0QndrQixHQUNGLElBQUssSUFBSXp6QixFQUFJLEVBQUdBLEdBQUtxMEIsRUFBSXIwQixJQUN2Qit6QixFQUFFNXZCLElBQUluRSxFQUFHaVAsR0FBSThrQixFQUFFcGlCLElBQUkzUixFQUFHaVAsSUFJNUIsS0FBT0EsRUFBSW9sQixLQUNMdm5CLEVBQUVtQyxJQUFNbkMsRUFBRW1DLEVBQUksS0FETCxDQUliLElBQUkyaUIsRUFBSTlrQixFQUFFbUMsR0FHVixHQUZBbkMsRUFBRW1DLEdBQUtuQyxFQUFFbUMsRUFBSSxHQUNibkMsRUFBRW1DLEVBQUksR0FBSzJpQixFQUNQNkIsR0FBU3hrQixFQUFJbkksRUFBSSxFQUNuQixJQUFLLElBQUk5RyxFQUFJLEVBQUdBLEVBQUk4RyxFQUFHOUcsSUFDckI0eEIsRUFBSW1DLEVBQUVwaUIsSUFBSTNSLEVBQUdpUCxFQUFJLEdBQ2pCOGtCLEVBQUU1dkIsSUFBSW5FLEVBQUdpUCxFQUFJLEVBQUc4a0IsRUFBRXBpQixJQUFJM1IsRUFBR2lQLElBQ3pCOGtCLEVBQUU1dkIsSUFBSW5FLEVBQUdpUCxFQUFHMmlCLEdBR2hCLEdBQUkyQixHQUFTdGtCLEVBQUk4UyxFQUFJLEVBQ25CLElBQUssSUFBSS9oQixFQUFJLEVBQUdBLEVBQUkraEIsRUFBRy9oQixJQUNyQjR4QixFQUFJa0MsRUFBRW5pQixJQUFJM1IsRUFBR2lQLEVBQUksR0FDakI2a0IsRUFBRTN2QixJQUFJbkUsRUFBR2lQLEVBQUksRUFBRzZrQixFQUFFbmlCLElBQUkzUixFQUFHaVAsSUFDekI2a0IsRUFBRTN2QixJQUFJbkUsRUFBR2lQLEVBQUcyaUIsR0FHaEIzaUIsR0FDRixDQUNBNEcsRUFBTyxFQUNQblcsSUFLTixDQUVBLEdBQUlnMEIsRUFBUyxDQUNYLElBQUk3UixFQUFNa1MsRUFDVkEsRUFBSUQsRUFDSkEsRUFBSWpTLENBQ04sQ0FFQW5nQixLQUFLcWdCLEVBQUlBLEVBQ1RyZ0IsS0FBS29GLEVBQUlBLEVBQ1RwRixLQUFLb0wsRUFBSUEsRUFDVHBMLEtBQUtveUIsRUFBSUEsRUFDVHB5QixLQUFLcXlCLEVBQUlBLENBQ1gsQ0FFQSxLQUFBMUIsQ0FBTS90QixHQUNKLElBQUkyVSxFQUFJM1UsRUFDSkUsRUFBSTlDLEtBQUsyekIsVUFDVEMsRUFBUTV6QixLQUFLb0wsRUFBRWhOLE9BQ2Z5MUIsRUFBSzdWLEVBQU9qSixNQUFNNmUsRUFBT0EsR0FFN0IsSUFBSyxJQUFJdDFCLEVBQUksRUFBR0EsRUFBSXMxQixFQUFPdDFCLElBQ3JCZCxLQUFLd1osSUFBSWhYLEtBQUtvTCxFQUFFOU0sS0FBT3dFLEVBQ3pCK3dCLEVBQUdweEIsSUFBSW5FLEVBQUdBLEVBQUcsR0FFYnUxQixFQUFHcHhCLElBQUluRSxFQUFHQSxFQUFHLEVBQUkwQixLQUFLb0wsRUFBRTlNLElBSTVCLElBQUk4ekIsRUFBSXB5QixLQUFLb3lCLEVBQ1RDLEVBQUlyeUIsS0FBSzh6QixxQkFFVEMsRUFBSzFCLEVBQUVoUCxLQUFLd1EsR0FDWkcsRUFBUTNCLEVBQUV6VyxLQUNWcVksRUFBUTdCLEVBQUV4VyxLQUNWc1ksRUFBTWxXLEVBQU9qSixNQUFNaWYsRUFBT0MsR0FFOUIsSUFBSyxJQUFJMzFCLEVBQUksRUFBR0EsRUFBSTAxQixFQUFPMTFCLElBQ3pCLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJaTFCLEVBQU9qMUIsSUFBSyxDQUM5QixJQUFJaWtCLEVBQU0sRUFDVixJQUFLLElBQUkxVixFQUFJLEVBQUdBLEVBQUlxbUIsRUFBT3JtQixJQUN6QjBWLEdBQU84USxFQUFHOWpCLElBQUkzUixFQUFHaVAsR0FBSzZrQixFQUFFbmlCLElBQUlqUixFQUFHdU8sR0FFakMybUIsRUFBSXp4QixJQUFJbkUsRUFBR1UsRUFBR2lrQixFQUNoQixDQUdGLE9BQU9pUixFQUFJN1EsS0FBSzlMLEVBQ2xCLENBRUEsZ0JBQUE0YyxDQUFpQnZ4QixHQUNmLE9BQU81QyxLQUFLMndCLE1BQU0zUyxFQUFPVyxLQUFLL2IsR0FDaEMsQ0FFQSxPQUFBd3hCLEdBQ0UsSUFBSS9CLEVBQUlyeUIsS0FBS3F5QixFQUNUdnZCLEVBQUk5QyxLQUFLMnpCLFVBQ1RLLEVBQVEzQixFQUFFelcsS0FDVnlZLEVBQVFoQyxFQUFFeFcsUUFDVi9GLEVBQUksSUFBSWtJLEVBQU9nVyxFQUFPaDBCLEtBQUtvTCxFQUFFaE4sUUFFakMsSUFBSyxJQUFJRSxFQUFJLEVBQUdBLEVBQUkwMUIsRUFBTzExQixJQUN6QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSXExQixFQUFPcjFCLElBQ3JCeEIsS0FBS3daLElBQUloWCxLQUFLb0wsRUFBRXBNLElBQU04RCxHQUN4QmdULEVBQUVyVCxJQUFJbkUsRUFBR1UsRUFBR3F6QixFQUFFcGlCLElBQUkzUixFQUFHVSxHQUFLZ0IsS0FBS29MLEVBQUVwTSxJQUt2QyxJQUFJb3pCLEVBQUlweUIsS0FBS295QixFQUVUNkIsRUFBUTdCLEVBQUV4VyxLQUNWMFksRUFBUWxDLEVBQUV2VyxRQUNWdEUsRUFBSSxJQUFJeUcsRUFBT2dXLEVBQU9DLEdBRTFCLElBQUssSUFBSTMxQixFQUFJLEVBQUdBLEVBQUkwMUIsRUFBTzExQixJQUN6QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSWkxQixFQUFPajFCLElBQUssQ0FDOUIsSUFBSWlrQixFQUFNLEVBQ1YsSUFBSyxJQUFJMVYsRUFBSSxFQUFHQSxFQUFJK21CLEVBQU8vbUIsSUFDekIwVixHQUFPbk4sRUFBRTdGLElBQUkzUixFQUFHaVAsR0FBSzZrQixFQUFFbmlCLElBQUlqUixFQUFHdU8sR0FFaENnSyxFQUFFOVUsSUFBSW5FLEVBQUdVLEVBQUdpa0IsRUFDZCxDQUdGLE9BQU8xTCxDQUNULENBRUEsYUFBSTNaLEdBQ0YsT0FBT29DLEtBQUtvTCxFQUFFLEdBQUtwTCxLQUFLb0wsRUFBRTVOLEtBQUswRCxJQUFJbEIsS0FBS3FnQixFQUFHcmdCLEtBQUtvRixHQUFLLEVBQ3ZELENBRUEsU0FBSW12QixHQUNGLE9BQU92MEIsS0FBS29MLEVBQUUsRUFDaEIsQ0FFQSxRQUFJb3BCLEdBQ0YsSUFBSXZlLEVBQU16WSxLQUFLMEMsSUFBSUYsS0FBS3FnQixFQUFHcmdCLEtBQUtvRixHQUFLcEYsS0FBS29MLEVBQUUsR0FBSzFKLE9BQU9teEIsUUFDcERsdUIsRUFBSSxFQUNKeUcsRUFBSXBMLEtBQUtvTCxFQUNiLElBQUssSUFBSTlNLEVBQUksRUFBR20yQixFQUFLcnBCLEVBQUVoTixPQUFRRSxFQUFJbTJCLEVBQUluMkIsSUFDakM4TSxFQUFFOU0sR0FBSzJYLEdBQ1R0UixJQUdKLE9BQU9BLENBQ1QsQ0FFQSxZQUFJb21CLEdBQ0YsT0FBT2xzQixNQUFNbU4sS0FBS2hNLEtBQUtvTCxFQUN6QixDQUVBLGFBQUl1b0IsR0FDRixPQUFRanlCLE9BQU9teEIsUUFBVSxFQUFLcjFCLEtBQUswQyxJQUFJRixLQUFLcWdCLEVBQUdyZ0IsS0FBS29GLEdBQUtwRixLQUFLb0wsRUFBRSxFQUNsRSxDQUVBLHVCQUFJc3BCLEdBQ0YsT0FBTzEwQixLQUFLb3lCLENBQ2QsQ0FFQSx3QkFBSTBCLEdBQ0YsT0FBTzl6QixLQUFLcXlCLENBQ2QsQ0FFQSxrQkFBSXNDLEdBQ0YsT0FBTzNXLEVBQU9XLEtBQUszZSxLQUFLb0wsRUFDMUIsRUMzY2EsU0FBUzVHLEVBQ3RCbkMsRUFDQXV5QixFQUNBQyxFQUNBQyxFQUNBbGIsR0FFQSxJQUFJaFgsRUFBUWl5QixFQUFVQyxFQUFxQkEsRUFDdkM5SixFQUFXaE4sRUFBT1UsSUFBSWtXLEVBQU94MkIsT0FBUXcyQixFQUFPeDJCLE9BQVF3RSxHQUV4RCxNQUFNaVgsRUFBT0QsRUFBc0JnYixHQUVuQyxJQUFJRyxFQUFnQixJQUFJN2YsYUFBYTdTLEVBQUtnVCxFQUFFalgsUUFDNUMsSUFBSyxJQUFJRSxFQUFJLEVBQUdBLEVBQUkrRCxFQUFLZ1QsRUFBRWpYLE9BQVFFLElBQ2pDeTJCLEVBQWN6MkIsR0FBS3ViLEVBQUt4WCxFQUFLZ1QsRUFBRS9XLElBR2pDLElBQUkwMkIsRUF2RU4sU0FDRTN5QixFQUNBMHlCLEVBQ0FILEVBQ0FFLEVBQ0FHLEdBRUEsTUFBTTd2QixFQUFJd3ZCLEVBQU94MkIsT0FDWGlpQixFQUFJaGUsRUFBS2dULEVBQUVqWCxPQUVqQixJQUFJa1YsRUFBTSxJQUFJelUsTUFBTXVHLEdBRXBCLElBQUssSUFBSTh2QixFQUFRLEVBQUdBLEVBQVE5dkIsRUFBRzh2QixJQUFTLENBQ3RDNWhCLEVBQUk0aEIsR0FBUyxJQUFJcjJCLE1BQU13aEIsR0FDdkIsSUFBSThVLEVBQVlQLEVBQU9oWSxRQUN2QnVZLEVBQVVELElBQVVKLEVBQ3BCLElBQUlNLEVBQVlILEVBQWNFLEdBRTlCLElBQUssSUFBSUUsRUFBUSxFQUFHQSxFQUFRaFYsRUFBR2dWLElBQzdCL2hCLEVBQUk0aEIsR0FBT0csR0FBU04sRUFBY00sR0FBU0QsRUFBVS95QixFQUFLZ1QsRUFBRWdnQixHQUVoRSxDQUNBLE9BQU8sSUFBSXJYLEVBQU8xSyxFQUNwQixDQWdEcUJnaUIsQ0FDakJqekIsRUFDQTB5QixFQUNBSCxFQUNBRSxFQUNBbGIsR0FFRTJiLEVBOUNOLFNBQXdCbHpCLEVBQU0weUIsR0FDNUIsTUFBTTFVLEVBQUloZSxFQUFLZ1QsRUFBRWpYLE9BRWpCLElBQUlrVixFQUFNLElBQUl6VSxNQUFNd2hCLEdBRXBCLElBQUssSUFBSWdWLEVBQVEsRUFBR0EsRUFBUWhWLEVBQUdnVixJQUM3Qi9oQixFQUFJK2hCLEdBQVMsQ0FBQ2h6QixFQUFLeVgsRUFBRXViLEdBQVNOLEVBQWNNLElBRzlDLE9BQU8sSUFBSXJYLEVBQU8xSyxFQUNwQixDQW9DbUJraUIsQ0FBZW56QixFQUFNMHlCLEdBQ2xDVSxFQ3JGQyxTQUFpQjkyQixFQUFRKzJCLEdBQVMsR0FFdkMsT0FEQS8yQixFQUFTcXhCLEVBQWdCalIsWUFBWXBnQixHQUNqQysyQixFQUNLLElBQUlqRSxFQUEyQjl5QixHQUFReTFCLFVBTTNDLFNBQWV1QixFQUFjQyxFQUFlRixHQUFTLEdBRzFELE9BRkFDLEVBQWUzRixFQUFnQmpSLFlBQVk0VyxHQUMzQ0MsRUFBZ0I1RixFQUFnQmpSLFlBQVk2VyxHQUN4Q0YsRUFDSyxJQUFJakUsRUFBMkJrRSxHQUFjaEYsTUFBTWlGLEdBRW5ERCxFQUFhbFcsV0FDaEIsSUFBSXdRLEVBQWdCMEYsR0FBY2hGLE1BQU1pRixHQUN4QyxJQUFJM0UsRUFBZ0IwRSxHQUFjaEYsTUFBTWlGLEVBRWhELENBZFdqRixDQUFNaHlCLEVBQVFxZixFQUFPVSxJQUFJL2YsRUFBT2lkLE1BRTNDLENEOEVzQndZLENBQ2xCcEosRUFBUzNhLElBQUkya0IsRUFBYTNSLEtBQUsyUixFQUFhL2hCLGVBWTlDLE9BUkEyaEIsR0FEQUEsRUFBUyxJQUFJNVcsRUFBTyxDQUFDNFcsS0FDTDFOLElBQ2R1TyxFQUNHcFMsS0FBSzJSLEdBQ0wzUixLQUFLa1MsR0FDTGxKLElBQUl5SSxHQUNKN2hCLGNBR1NpSyxXQUNoQixDRXRGZSxTQUFTMlksRUFDdEJ4ekIsRUFDQXVYLEVBQ0EzVyxFQUFVLENBQUMsR0FFWCxJQUFJLGNBQ0Y2eUIsRUFBZ0IsSUFBRyxtQkFDbkJoQixFQUFxQixHQUFLLFFBQzFCRCxFQUFVLEVBQUMsZUFDWGtCLEVBQWlCLElBQUssVUFDdEJDLEVBQVMsVUFDVEMsRUFBUyxjQUNUQyxHQUNFanpCLEVBRUosR0FBSTR4QixHQUFXLEVBQ2IsTUFBTSxJQUFJLzJCLE1BQU0sZ0RBQ1gsSUFBS3VFLEVBQUtnVCxJQUFNaFQsRUFBS3lYLEVBQzFCLE1BQU0sSUFBSWhjLE1BQU0saURBQ1gsSUFDSixFQUFRdUUsRUFBS2dULElBQ2RoVCxFQUFLZ1QsRUFBRWpYLE9BQVMsSUFDZixFQUFRaUUsRUFBS3lYLElBQ2R6WCxFQUFLeVgsRUFBRTFiLE9BQVMsRUFFaEIsTUFBTSxJQUFJTixNQUNSLHdFQUVHLEdBQUl1RSxFQUFLZ1QsRUFBRWpYLFNBQVdpRSxFQUFLeVgsRUFBRTFiLE9BQ2xDLE1BQU0sSUFBSU4sTUFBTSx1REFHbEIsSUFBSTZiLEVBQ0Z1YyxHQUFpQixJQUFJcjNCLE1BQU0rYSxFQUFzQnhiLFFBQVFRLEtBQUssR0FDNUR1M0IsRUFBU3hjLEVBQVd2YixPQUl4QixHQUhBNjNCLEVBQVlBLEdBQWEsSUFBSXAzQixNQUFNczNCLEdBQVF2M0IsS0FBSzhDLE9BQU8wMEIsa0JBQ3ZESixFQUFZQSxHQUFhLElBQUluM0IsTUFBTXMzQixHQUFRdjNCLEtBQUs4QyxPQUFPMjBCLGtCQUVuREosRUFBVTczQixTQUFXNDNCLEVBQVU1M0IsT0FDakMsTUFBTSxJQUFJTixNQUFNLGlEQUdsQixJQUFLLEVBQVE2YixHQUNYLE1BQU0sSUFBSTdiLE1BQU0sa0NBR2xCLElBSUl3NEIsRUFKQWgwQixFQUFRb1gsRUFBaUJyWCxFQUFNc1gsRUFBWUMsR0FFM0MyYyxFQUFZajBCLEdBQVN5ekIsRUFHekIsSUFBS08sRUFBWSxFQUFHQSxFQUFZUixJQUFrQlMsRUFBV0QsSUFBYSxDQUN4RTNjLEVBQWFuVixFQUNYbkMsRUFDQXNYLEVBQ0FrYixFQUNBQyxFQUNBbGIsR0FHRixJQUFLLElBQUlyTSxFQUFJLEVBQUdBLEVBQUk0b0IsRUFBUTVvQixJQUMxQm9NLEVBQVdwTSxHQUFLL1AsS0FBSzBELElBQ25CMUQsS0FBSzBDLElBQUk4MUIsRUFBVXpvQixHQUFJb00sRUFBV3BNLElBQ2xDMG9CLEVBQVUxb0IsSUFLZCxHQURBakwsRUFBUW9YLEVBQWlCclgsRUFBTXNYLEVBQVlDLEdBQ3ZDNUUsTUFBTTFTLEdBQVEsTUFDbEJpMEIsRUFBWWowQixHQUFTeXpCLENBQ3ZCLENBRUEsTUFBTyxDQUNMUyxnQkFBaUI3YyxFQUNqQjhjLGVBQWdCbjBCLEVBQ2hCb1AsV0FBWTRrQixFQUVoQixDLHVCQy9GQSxJQUFJSSxFQUFnQjEyQixNQUFRQSxLQUFLMDJCLGNBQWlCLFNBQVUxSixHQUN4RCxHQUFJQSxHQUFPQSxFQUFJMkosV0FBWSxPQUFPM0osRUFDbEMsSUFBSWxlLEVBQVMsQ0FBQyxFQUNkLEdBQVcsTUFBUGtlLEVBQWEsSUFBSyxJQUFJemYsS0FBS3lmLEVBQVMxbEIsT0FBT1ksZUFBZXNSLEtBQUt3VCxFQUFLemYsS0FBSXVCLEVBQU92QixHQUFLeWYsRUFBSXpmLElBRTVGLE9BREF1QixFQUFnQixRQUFJa2UsRUFDYmxlLENBQ1gsRUFDQXhILE9BQU91TSxlQUFlRixFQUFTLGFBQWMsQ0FBRS9RLE9BQU8sSUFDdEQsSUFBSWcwQixFQUFRRixFQUFhLEVBQVEsT0FDakMsU0FBU0csRUFBU0MsRUFBU3QzQixHQUN2QixJQUFJdTNCLEVBQWEsU0FBVUMsR0FDdkIsT0FBT0osRUFBTUssTUFBTUgsR0FBU2g0QixLQUFJLFdBQzVCLE9BQU84M0IsRUFBTU0sT0FBTzEzQixFQUFNdzNCLEVBQzlCLEdBQ0osRUFDSUcsRUFBTyxHQUlYLE9BSEFBLEVBQUtscUIsS0FBSzhwQixHQUFZLElBQ3RCSSxFQUFLbHFCLEtBQUs4cEIsRUFBV3ZnQixNQUNyQjJnQixFQUFLbHFCLEtBQUs4cEIsRUFBVyxJQUNkSSxDQUNYLENBd0JBLFNBQVNDLEVBQVNELEVBQU1sWixFQUFLb1osRUFBUXgwQixFQUFPb0ksR0FDeENnVCxFQUFNemdCLEtBQUtFLE1BQU11Z0IsR0FDakIsSUFBSXFLLEVBQVU2TyxFQUFLLEdBQUdsWixHQUNsQnFaLEVBQVVILEVBQUssR0FBR2xaLEdBRXRCLEdBRFlrWixFQUFLLEdBQUdsWixHQUNoQm9aLEdBQVVDLEVBQVEsR0FDbEIsT0FBTyxFQUVYLElBQUssSUFBSWg1QixFQUFJLEVBQUdBLEVBQUlncUIsRUFBUWxxQixPQUFRRSxJQUNoQyxHQUFJdUUsSUFBVXlsQixFQUFRaHFCLEdBQ2xCLE9BQU8sRUFHZixPQUFPaTVCLEVBQWtCSixFQUFNbFosRUFBS29aLEVBQVF4MEIsRUFBT29JLEVBQ3ZELENBRUEsU0FBU3NzQixFQUFrQkosRUFBTWxaLEVBQUtvWixFQUFReDBCLEVBQU9vSSxHQUNqRCxJQUFJcWQsRUFBVTZPLEVBQUssR0FBR2xaLEdBQ2xCcVosRUFBVUgsRUFBSyxHQUFHbFosR0FDbEJ1WixFQUFRTCxFQUFLLEdBQUdsWixHQUNwQixHQUFJb1osR0FBVUMsRUFBUSxHQUNsQixPQUFPLEVBRVhBLEVBQVEsR0FBS0QsRUFDYi9PLEVBQVEsR0FBS3psQixFQUNiMjBCLEVBQU0sR0FBS3ZzQixFQUdYLElBRkEsSUFBSTNNLEVBQUksRUFDSm01QixFQUFRLElBQ0MsQ0FDVCxJQUFJQyxFQUFNLEVBQUlwNUIsRUFBSSxFQUNkcTVCLEVBQU1ELEVBQU0sRUFDWkUsRUFBYVQsRUFBSyxHQUFHLEdBQUcvNEIsT0FDNUIsR0FBSXM1QixHQUFPRSxFQUNQLE1BRUMsR0FBSUQsR0FBT0MsRUFBWSxDQUN4QixLQUFJTixFQUFRSSxHQUFPTCxHQUlmLE1BSEFJLEVBQVFDLENBS2hCLE1BQ0ssR0FBSUosRUFBUUksSUFBUUosRUFBUUssR0FBTSxDQUNuQyxLQUFJTixFQUFTQyxFQUFRSSxJQUlqQixNQUhBRCxFQUFRQyxDQUtoQixLQUNLLENBQ0QsS0FBSUwsRUFBU0MsRUFBUUssSUFJakIsTUFIQUYsRUFBUUUsQ0FLaEIsQ0FDQUwsRUFBUWg1QixHQUFLZzVCLEVBQVFHLEdBQ3JCblAsRUFBUWhxQixHQUFLZ3FCLEVBQVFtUCxHQUNyQkQsRUFBTWw1QixHQUFLazVCLEVBQU1DLEdBQ2pCbjVCLEVBQUltNUIsQ0FDUixDQUlBLE9BSEFILEVBQVFoNUIsR0FBSys0QixFQUNiL08sRUFBUWhxQixHQUFLdUUsRUFDYjIwQixFQUFNbDVCLEdBQUsyTSxFQUNKLENBQ1gsQ0F5Q0EsU0FBUzRzQixFQUFTQyxFQUFPQyxFQUFPQyxFQUFTQyxHQUNyQyxLQUFhLEVBQU5BLEVBQVUsRUFBSUQsR0FBUyxDQUMxQixJQUFJRSxFQUFrQixFQUFORCxFQUFVLEVBQ3RCRSxFQUFhRCxFQUFZLEVBQ3pCRSxFQUFPSCxFQU9YLEdBTklILEVBQU1NLEdBQVFOLEVBQU1JLEtBQ3BCRSxFQUFPRixHQUVQQyxFQUFhSCxHQUFXRixFQUFNTSxHQUFRTixFQUFNSyxLQUM1Q0MsRUFBT0QsR0FFUEMsSUFBU0gsRUFDVCxNQUdBLElBQUlJLEVBQVFQLEVBQU1HLEdBQ2xCSCxFQUFNRyxHQUFPSCxFQUFNTSxHQUNuQk4sRUFBTU0sR0FBUUMsRUFDZCxJQUFJQyxFQUFRUCxFQUFNRSxHQUNsQkYsRUFBTUUsR0FBT0YsRUFBTUssR0FDbkJMLEVBQU1LLEdBQVFFLEVBQ2RMLEVBQU1HLENBRWQsQ0FDSixDQTVKQXprQixFQUFRa2pCLFNBQVdBLEVBc0JuQmxqQixFQUFRNGtCLGdCQXJCUixTQUF5QkMsRUFBVUMsRUFBVWg3QixHQUV6QyxJQURBLElBQUlxUixFQUFTOG5CLEVBQU03aEIsTUFBTXlqQixHQUNoQmw2QixFQUFJLEVBQUdBLEVBQUlrNkIsRUFBVWw2QixJQUFLLENBRy9CLElBRkEsSUFBSW82QixHQUFlLEVBQ2YxNUIsRUFBSSxFQUNEMDVCLEdBQWMsQ0FDakIxNUIsRUFBSTQzQixFQUFNK0IsV0FBV0YsRUFBVWg3QixHQUUvQixJQURBLElBQUltN0IsR0FBUyxFQUNKcnJCLEVBQUksRUFBR0EsRUFBSWpQLEVBQUdpUCxJQUNuQixHQUFJdk8sSUFBTThQLEVBQU92QixHQUFJLENBQ2pCcXJCLEdBQVMsRUFDVCxLQUNKLENBRUNBLElBQ0RGLEdBQWUsRUFDdkIsQ0FDQTVwQixFQUFPeFEsR0FBS1UsQ0FDaEIsQ0FDQSxPQUFPOFAsQ0FDWCxFQWlCQTZFLEVBQVF5akIsU0FBV0EsRUFzRG5CempCLEVBQVE0akIsa0JBQW9CQSxFQWtCNUI1akIsRUFBUWtsQixnQkFqQlIsU0FBeUJDLEVBQWNDLEVBQVc5bkIsRUFBWStuQixFQUFldjdCLEdBRXpFLElBREEsSUFBSXc3QixFQUFxQnBDLEVBQVNrQyxFQUFXQyxHQUNwQzE2QixFQUFJLEVBQUdBLEVBQUl5NkIsRUFBV3o2QixJQUMzQixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSWlTLEVBQVlqUyxJQUM1QixLQUFJODVCLEVBQWEsR0FBR3g2QixHQUFHVSxHQUFLLEdBQTVCLENBR0EsSUFBSW9qQixFQUFNMFcsRUFBYSxHQUFHeDZCLEdBQUdVLEdBQ3pCazZCLEVBQU1KLEVBQWEsR0FBR3g2QixHQUFHVSxHQUN6QjRGLEVBQUlneUIsRUFBTXVDLFFBQVExN0IsR0FDdEIyNUIsRUFBUzZCLEVBQW9CMzZCLEVBQUdzRyxFQUFHd2QsRUFBSzhXLEdBQ3hDOUIsRUFBUzZCLEVBQW9CN1csRUFBS3hkLEVBQUd0RyxFQUFHNDZCLEdBQ3hDSixFQUFhLEdBQUd4NkIsR0FBR1UsR0FBSyxDQU54QixDQVNSLE9BQU9pNkIsQ0FDWCxFQXNCQXRsQixFQUFReWxCLFdBcEJSLFNBQW9CakMsR0FHaEIsSUFGQSxJQUFJN08sRUFBVTZPLEVBQUssR0FDZkcsRUFBVUgsRUFBSyxHQUNWNzRCLEVBQUksRUFBR0EsRUFBSWdxQixFQUFRbHFCLE9BQVFFLElBR2hDLElBRkEsSUFBSSs2QixFQUFVL1EsRUFBUWhxQixHQUNsQmc3QixFQUFXaEMsRUFBUWg1QixHQUNkVSxFQUFJLEVBQUdBLEVBQUlxNkIsRUFBUWo3QixPQUFTLEVBQUdZLElBQUssQ0FDekMsSUFBSXU2QixFQUFlRixFQUFRajdCLE9BQVNZLEVBQUksRUFDcEN3NkIsRUFBZ0JGLEVBQVNsN0IsT0FBU1ksRUFBSSxFQUN0Q3E1QixFQUFRZ0IsRUFBUSxHQUNwQkEsRUFBUSxHQUFLQSxFQUFRRSxHQUNyQkYsRUFBUUUsR0FBZ0JsQixFQUN4QixJQUFJQyxFQUFRZ0IsRUFBUyxHQUNyQkEsRUFBUyxHQUFLQSxFQUFTRSxHQUN2QkYsRUFBU0UsR0FBaUJsQixFQUMxQlQsRUFBU3lCLEVBQVVELEVBQVNHLEVBQWUsRUFDL0MsQ0FFSixNQUFPLENBQUVsUixRQUFTQSxFQUFTZ1AsUUFBU0EsRUFDeEMsRUErQ0EzakIsRUFBUThsQixnQkFwQlIsU0FBeUJ0QyxFQUFNbFosR0FNM0IsSUFMQSxJQUFJeWIsRUFBTXZDLEVBQUssR0FBR2xaLEdBQ2RuWSxFQUFPcXhCLEVBQUssR0FBR2xaLEdBQ2ZoVCxFQUFPa3NCLEVBQUssR0FBR2xaLEdBQ2YwYixFQUFVbmpCLElBQ1ZvakIsR0FBZSxFQUNWdDdCLEVBQUksRUFBR0EsRUFBSW83QixFQUFJdDdCLE9BQVFFLElBQ1osSUFBWjJNLEVBQUszTSxJQUFZd0gsRUFBS3hILEdBQUtxN0IsSUFDM0JBLEVBQVU3ekIsRUFBS3hILEdBQ2ZzN0IsRUFBY3Q3QixHQUd0QixPQUFJczdCLEdBQWUsR0FDZjN1QixFQUFLMnVCLEdBQWUsRUFDYnA4QixLQUFLRSxNQUFNZzhCLEVBQUlFLE1BR2QsQ0FFaEIsQyxpQkNwTUEsSUFBSUMsRUFBUyxFQUFRLE1BQ3JCbG1CLEVBQVEsRUFBT2ttQixFQUFPQyxJLHVCQ0Z0QixJQWtDSUMsRUFsQ0FDLEVBQVVoNkIsTUFBUUEsS0FBS2c2QixRQUFXLFNBQVVDLEVBQUc3MEIsR0FDL0MsSUFBSWliLEVBQXNCLG1CQUFYdUssUUFBeUJxUCxFQUFFclAsT0FBT3NQLFVBQ2pELElBQUs3WixFQUFHLE9BQU80WixFQUNmLElBQW1CdDFCLEVBQVk3QixFQUEzQnhFLEVBQUkraEIsRUFBRTdHLEtBQUt5Z0IsR0FBT0UsRUFBSyxHQUMzQixJQUNJLFdBQWMsSUFBTi8wQixHQUFnQkEsS0FBTSxNQUFRVCxFQUFJckcsRUFBRXRCLFFBQVEwWixNQUFNeWpCLEVBQUdsdEIsS0FBS3RJLEVBQUUvQixNQUN4RSxDQUNBLE1BQU9OLEdBQVNRLEVBQUksQ0FBRVIsTUFBT0EsRUFBUyxDQUN0QyxRQUNJLElBQ1FxQyxJQUFNQSxFQUFFK1IsT0FBUzJKLEVBQUkvaEIsRUFBVSxTQUFJK2hCLEVBQUU3RyxLQUFLbGIsRUFDbEQsQ0FDQSxRQUFVLEdBQUl3RSxFQUFHLE1BQU1BLEVBQUVSLEtBQU8sQ0FDcEMsQ0FDQSxPQUFPNjNCLENBQ1gsRUFDSUMsRUFBWXA2QixNQUFRQSxLQUFLbzZCLFVBQWEsU0FBVUgsR0FDaEQsSUFBSTVaLEVBQXNCLG1CQUFYdUssUUFBeUJxUCxFQUFFclAsT0FBT3NQLFVBQVc1N0IsRUFBSSxFQUNoRSxPQUFJK2hCLEVBQVVBLEVBQUU3RyxLQUFLeWdCLEdBQ2QsQ0FDSGo5QixLQUFNLFdBRUYsT0FESWk5QixHQUFLMzdCLEdBQUsyN0IsRUFBRTc3QixTQUFRNjdCLE9BQUksR0FDckIsQ0FBRXIzQixNQUFPcTNCLEdBQUtBLEVBQUUzN0IsS0FBTW9ZLE1BQU91akIsRUFDeEMsRUFFUixFQUNJdkQsRUFBZ0IxMkIsTUFBUUEsS0FBSzAyQixjQUFpQixTQUFVMUosR0FDeEQsR0FBSUEsR0FBT0EsRUFBSTJKLFdBQVksT0FBTzNKLEVBQ2xDLElBQUlsZSxFQUFTLENBQUMsRUFDZCxHQUFXLE1BQVBrZSxFQUFhLElBQUssSUFBSXpmLEtBQUt5ZixFQUFTMWxCLE9BQU9ZLGVBQWVzUixLQUFLd1QsRUFBS3pmLEtBQUl1QixFQUFPdkIsR0FBS3lmLEVBQUl6ZixJQUU1RixPQURBdUIsRUFBZ0IsUUFBSWtlLEVBQ2JsZSxDQUNYLEVBQ0F4SCxPQUFPdU0sZUFBZUYsRUFBUyxhQUFjLENBQUUvUSxPQUFPLElBRXRELElBQUlnMEIsRUFBUUYsRUFBYSxFQUFRLE9BQzdCMkQsRUFBZ0IsV0FDaEIsU0FBU0EsRUFBYXplLEVBQU04SyxFQUFNbG1CLEVBQVE4NUIsR0FJdEMsR0FIQXQ2QixLQUFLdTZCLFFBQVUsSUFBSUMsSUFDbkJ4NkIsS0FBS21yQixNQUFRLEVBQ2JuckIsS0FBS3k2QixNQUFRLEVBQ1Q3ZSxFQUFLeGQsU0FBV3NvQixFQUFLdG9CLFFBQVV3ZCxFQUFLeGQsU0FBV29DLEVBQU9wQyxPQUN0RCxNQUFNLElBQUlOLE1BQU0sOERBRXBCa0MsS0FBS21yQixNQUFRbVAsRUFBSyxHQUNsQnQ2QixLQUFLeTZCLE1BQVFILEVBQUssR0FDbEIsSUFBSyxJQUFJaDhCLEVBQUksRUFBR0EsRUFBSWtDLEVBQU9wQyxPQUFRRSxJQUFLLENBQ3BDLElBQUkyZixFQUFNckMsRUFBS3RkLEdBQ1hveUIsRUFBTWhLLEVBQUtwb0IsR0FDZjBCLEtBQUswNkIsVUFBVXpjLEVBQUt5UyxHQUNwQixJQUFJaHBCLEVBQU0xSCxLQUFLMjZCLFFBQVExYyxFQUFLeVMsR0FDNUIxd0IsS0FBS3U2QixRQUFROTNCLElBQUlpRixFQUFLLENBQUU5RSxNQUFPcEMsRUFBT2xDLEdBQUkyZixJQUFLQSxFQUFLeVMsSUFBS0EsR0FDN0QsQ0FDSixDQTRGQSxPQTNGQTJKLEVBQWFoaEIsVUFBVXNoQixRQUFVLFNBQVUxYyxFQUFLeVMsR0FDNUMsT0FBT3pTLEVBQU0sSUFBTXlTLENBQ3ZCLEVBQ0EySixFQUFhaGhCLFVBQVVxaEIsVUFBWSxTQUFVemMsRUFBS3lTLEdBRTlDLEtBRG1CelMsRUFBTWplLEtBQUttckIsT0FBU3VGLEVBQU0xd0IsS0FBS3k2QixPQUU5QyxNQUFNLElBQUkzOEIsTUFBTSx3REFFeEIsRUFDQXU4QixFQUFhaGhCLFVBQVU1VyxJQUFNLFNBQVV3YixFQUFLeVMsRUFBSzl0QixHQUM3QzVDLEtBQUswNkIsVUFBVXpjLEVBQUt5UyxHQUNwQixJQUFJaHBCLEVBQU0xSCxLQUFLMjZCLFFBQVExYyxFQUFLeVMsR0FDdkIxd0IsS0FBS3U2QixRQUFRSyxJQUFJbHpCLEdBSWxCMUgsS0FBS3U2QixRQUFRdHFCLElBQUl2SSxHQUFLOUUsTUFBUUEsRUFIOUI1QyxLQUFLdTZCLFFBQVE5M0IsSUFBSWlGLEVBQUssQ0FBRTlFLE1BQU9BLEVBQU9xYixJQUFLQSxFQUFLeVMsSUFBS0EsR0FLN0QsRUFDQTJKLEVBQWFoaEIsVUFBVXBKLElBQU0sU0FBVWdPLEVBQUt5UyxFQUFLbG9CLFFBQ3hCLElBQWpCQSxJQUEyQkEsRUFBZSxHQUM5Q3hJLEtBQUswNkIsVUFBVXpjLEVBQUt5UyxHQUNwQixJQUFJaHBCLEVBQU0xSCxLQUFLMjZCLFFBQVExYyxFQUFLeVMsR0FDNUIsT0FBSTF3QixLQUFLdTZCLFFBQVFLLElBQUlsekIsR0FDVjFILEtBQUt1NkIsUUFBUXRxQixJQUFJdkksR0FBSzlFLE1BR3RCNEYsQ0FFZixFQUNBNnhCLEVBQWFoaEIsVUFBVXdoQixPQUFTLFNBQVVDLFFBQ3RCLElBQVpBLElBQXNCQSxHQUFVLEdBQ3BDLElBQUlDLEVBQWUsR0FjbkIsT0FiQS82QixLQUFLdTZCLFFBQVE1M0IsU0FBUSxTQUFVQyxHQUMzQm00QixFQUFhOXRCLEtBQUtySyxFQUN0QixJQUNJazRCLEdBQ0FDLEVBQWE1UyxNQUFLLFNBQVUvVyxFQUFHQyxHQUMzQixPQUFJRCxFQUFFNk0sTUFBUTVNLEVBQUU0TSxJQUNMN00sRUFBRXNmLElBQU1yZixFQUFFcWYsSUFHVnRmLEVBQUU2TSxJQUFNNU0sRUFBRTRNLEdBRXpCLElBRUc4YyxDQUNYLEVBQ0FWLEVBQWFoaEIsVUFBVTJoQixRQUFVLFdBQzdCLE1BQU8sQ0FBQ2g3QixLQUFLbXJCLE1BQU9uckIsS0FBS3k2QixNQUM3QixFQUNBSixFQUFhaGhCLFVBQVU0aEIsUUFBVSxXQUM3QixPQUFPcDhCLE1BQU1tTixLQUFLaE0sS0FBS3U2QixTQUFTLFNBQVVSLEdBQ3RDLElBQUltQixFQUFLbEIsRUFBT0QsRUFBSSxHQUNwQixPQUQ4Qm1CLEVBQUcsR0FBWUEsRUFBRyxHQUNuQ2pkLEdBQ2pCLEdBQ0osRUFDQW9jLEVBQWFoaEIsVUFBVThoQixRQUFVLFdBQzdCLE9BQU90OEIsTUFBTW1OLEtBQUtoTSxLQUFLdTZCLFNBQVMsU0FBVVIsR0FDdEMsSUFBSW1CLEVBQUtsQixFQUFPRCxFQUFJLEdBQ3BCLE9BRDhCbUIsRUFBRyxHQUFZQSxFQUFHLEdBQ25DeEssR0FDakIsR0FDSixFQUNBMkosRUFBYWhoQixVQUFVK2hCLFVBQVksV0FDL0IsT0FBT3Y4QixNQUFNbU4sS0FBS2hNLEtBQUt1NkIsU0FBUyxTQUFVUixHQUN0QyxJQUFJbUIsRUFBS2xCLEVBQU9ELEVBQUksR0FDcEIsT0FEOEJtQixFQUFHLEdBQVlBLEVBQUcsR0FDbkN0NEIsS0FDakIsR0FDSixFQUNBeTNCLEVBQWFoaEIsVUFBVTFXLFFBQVUsU0FBVTA0QixHQUN2Q3I3QixLQUFLdTZCLFFBQVE1M0IsU0FBUSxTQUFVQyxHQUFTLE9BQU95NEIsRUFBR3o0QixFQUFNQSxNQUFPQSxFQUFNcWIsSUFBS3JiLEVBQU04dEIsSUFBTSxHQUMxRixFQUNBMkosRUFBYWhoQixVQUFVdmEsSUFBTSxTQUFVdThCLEdBQ25DLElBQUlDLEVBQU8sR0FDWHQ3QixLQUFLdTZCLFFBQVE1M0IsU0FBUSxTQUFVQyxHQUMzQjA0QixFQUFLcnVCLEtBQUtvdUIsRUFBR3o0QixFQUFNQSxNQUFPQSxFQUFNcWIsSUFBS3JiLEVBQU04dEIsS0FDL0MsSUFDQSxJQUFJNEosRUFBTyxDQUFDdDZCLEtBQUttckIsTUFBT25yQixLQUFLeTZCLE9BQzdCLE9BQU8sSUFBSUosRUFBYXI2QixLQUFLaTdCLFVBQVdqN0IsS0FBS203QixVQUFXRyxFQUFNaEIsRUFDbEUsRUFDQUQsRUFBYWhoQixVQUFVa2lCLFFBQVUsV0FDN0IsSUFBSUMsRUFBUXg3QixLQUVSbWEsRUFET3ljLEVBQU1LLE1BQU1qM0IsS0FBS21yQixPQUNWcnNCLEtBQUksV0FDbEIsT0FBTzgzQixFQUFNN2hCLE1BQU15bUIsRUFBTWYsTUFDN0IsSUFJQSxPQUhBejZCLEtBQUt1NkIsUUFBUTUzQixTQUFRLFNBQVVDLEdBQzNCdVgsRUFBT3ZYLEVBQU1xYixLQUFLcmIsRUFBTTh0QixLQUFPOXRCLEVBQU1BLEtBQ3pDLElBQ091WCxDQUNYLEVBQ09rZ0IsQ0FDWCxDQTlHbUIsR0ErR25CMW1CLEVBQVEwbUIsYUFBZUEsRUFhdkIxbUIsRUFBUVYsVUFaUixTQUFtQnRVLEdBQ2YsSUFBSStuQixFQUFPLEdBQ1A5SyxFQUFPLEdBQ1AwZixFQUFPLEdBQ1gzOEIsRUFBT2dFLFNBQVEsU0FBVUMsRUFBT3FiLEVBQUt5UyxHQUNqQ2hLLEVBQUt6WixLQUFLZ1IsR0FDVnJDLEVBQUszTyxLQUFLeWpCLEdBQ1Y0SyxFQUFLcnVCLEtBQUtySyxFQUNkLElBQ0EsSUFBSTAzQixFQUFPLENBQUMzN0IsRUFBTzg3QixNQUFPOTdCLEVBQU93c0IsT0FDakMsT0FBTyxJQUFJa1AsRUFBYXplLEVBQU04SyxFQUFNNFUsRUFBTWhCLEVBQzlDLEVBVUEzbUIsRUFBUXFYLFNBUlIsU0FBa0J4ckIsR0FHZCxJQUZBLElBQTBCb2MsRUFBakJvZSxFQUFPeDZCLEVBQU0sR0FBYyxHQUNoQ2IsRUFBUyxJQUFJMDdCLEVBQWEsR0FBSSxHQUFJLEdBQUk3NkIsR0FDakNsQixFQUFJLEVBQUdBLEVBQUlzZCxFQUFNdGQsSUFDdEJLLEVBQU84RCxJQUFJbkUsRUFBR0EsRUFBRyxHQUVyQixPQUFPSyxDQUNYLEVBS0FnVixFQUFROG5CLGlCQUhSLFNBQTBCcnFCLEVBQUdDLEdBQ3pCLE9BQU9xcUIsRUFBWXRxQixFQUFHQyxHQUFHLFNBQVVnRSxFQUFHeUUsR0FBSyxPQUFPekUsRUFBSXlFLENBQUcsR0FDN0QsRUFLQW5HLEVBQVF0RCxJQUhSLFNBQWFlLEVBQUdDLEdBQ1osT0FBT3FxQixFQUFZdHFCLEVBQUdDLEdBQUcsU0FBVWdFLEVBQUd5RSxHQUFLLE9BQU96RSxFQUFJeUUsQ0FBRyxHQUM3RCxFQUtBbkcsRUFBUXVZLFNBSFIsU0FBa0I5YSxFQUFHQyxHQUNqQixPQUFPcXFCLEVBQVl0cUIsRUFBR0MsR0FBRyxTQUFVZ0UsRUFBR3lFLEdBQUssT0FBT3pFLEVBQUl5RSxDQUFHLEdBQzdELEVBS0FuRyxFQUFRZ29CLFFBSFIsU0FBaUJ2cUIsRUFBR0MsR0FDaEIsT0FBT3FxQixFQUFZdHFCLEVBQUdDLEdBQUcsU0FBVWdFLEVBQUd5RSxHQUFLLE9BQVF6RSxFQUFJeUUsRUFBSXpFLEVBQUl5RSxDQUFJLEdBQ3ZFLEVBT0FuRyxFQUFRaW9CLGVBTFIsU0FBd0J4cUIsRUFBR3lxQixHQUN2QixPQUFPenFCLEVBQUV0UyxLQUFJLFNBQVU4RCxHQUNuQixPQUFPQSxFQUFRaTVCLENBQ25CLEdBQ0osRUFrQkFsb0IsRUFBUW1vQixlQWhCUixTQUF3QnpiLEdBS3BCLElBSkEsSUFBSTBiLEVBQWMsSUFBSUMsSUFDbEJ4N0IsRUFBUzZmLEVBQUUrYSxZQUNYeGYsRUFBT3lFLEVBQUU0YSxVQUNUdlUsRUFBT3JHLEVBQUU4YSxVQUNKNzhCLEVBQUksRUFBR0EsRUFBSWtDLEVBQU9wQyxPQUFRRSxJQUNiLElBQWRrQyxFQUFPbEMsSUFDUHk5QixFQUFZMXJCLElBQUkvUixHQUd4QixJQUFJMjlCLEVBQW9CLFNBQVV0ckIsRUFBRzlOLEdBQVMsT0FBUWs1QixFQUFZbkIsSUFBSS8zQixFQUFRLEVBQzFFcTVCLEVBQWExN0IsRUFBTzI3QixPQUFPRixHQUMzQkcsRUFBV3hnQixFQUFLdWdCLE9BQU9GLEdBQ3ZCSSxFQUFXM1YsRUFBS3lWLE9BQU9GLEdBQzNCLE9BQU8sSUFBSTVCLEVBQWErQixFQUFVQyxFQUFVSCxFQUFZN2IsRUFBRTJhLFVBQzlELEVBb0NBcm5CLEVBQVFqVCxVQWxDUixTQUFtQjJmLEVBQUdpYyxHQUVsQixJQUFJQyxFQUFLeEMsT0FEUSxJQUFidUMsSUFBdUJBLEVBQVcsTUFFdEMsSUFBSUUsRUFBU0MsRUFBUUgsR0FDakJJLEVBQVksSUFBSWxDLElBQ3BCbmEsRUFBRTFkLFNBQVEsU0FBVWdPLEVBQUdzTixFQUFLeVMsR0FDeEIsSUFBSWhLLEVBQU9nVyxFQUFVenNCLElBQUlnTyxJQUFRLEdBQ2pDeUksRUFBS3paLEtBQUt5akIsR0FDVmdNLEVBQVVqNkIsSUFBSXdiLEVBQUt5SSxFQUN2QixJQUNBLElBQUlpVyxFQUFhLElBQUl0QyxFQUFhLEdBQUksR0FBSSxHQUFJaGEsRUFBRTJhLFdBQzVDNEIsRUFBVSxTQUFVM2UsR0FJcEIsSUFIQSxJQUFJeUksRUFBT2dXLEVBQVV6c0IsSUFBSWdPLEdBQUtrSyxPQUMxQm1ULEVBQU81VSxFQUFLNW5CLEtBQUksU0FBVTR4QixHQUFPLE9BQU9yUSxFQUFFcFEsSUFBSWdPLEVBQUt5UyxFQUFNLElBQ3pENU4sRUFBTzBaLEVBQU9sQixHQUNUaDlCLEVBQUksRUFBR0EsRUFBSXdrQixFQUFLMWtCLE9BQVFFLElBQzdCcStCLEVBQVdsNkIsSUFBSXdiLEVBQUt5SSxFQUFLcG9CLEdBQUl3a0IsRUFBS3hrQixHQUUxQyxFQUNBLElBQ0ksSUFBSyxJQUFJNDhCLEVBQUtkLEVBQVNzQyxFQUFVbjFCLFFBQVNzMUIsRUFBSzNCLEVBQUdsK0IsUUFBUzYvQixFQUFHbm1CLEtBQU1tbUIsRUFBSzNCLEVBQUdsK0IsT0FFeEU0L0IsRUFEVUMsRUFBR2o2QixNQUdyQixDQUNBLE1BQU9rNkIsR0FBU1AsRUFBTSxDQUFFajZCLE1BQU93NkIsRUFBUyxDQUN4QyxRQUNJLElBQ1FELElBQU9BLEVBQUdubUIsT0FBU3FqQixFQUFLbUIsRUFBRzZCLFNBQVNoRCxFQUFHdmdCLEtBQUswaEIsRUFDcEQsQ0FDQSxRQUFVLEdBQUlxQixFQUFLLE1BQU1BLEVBQUlqNkIsS0FBTyxDQUN4QyxDQUNBLE9BQU9xNkIsQ0FDWCxFQUVBLElBQUlGLElBQVcxQyxFQUFLLENBQUMsR0FDVCxJQUFJLFNBQVVpRCxHQUVsQixJQURBLElBQUk5OEIsR0FBTSxJQUNENUIsRUFBSSxFQUFHQSxFQUFJMCtCLEVBQUc1K0IsT0FBUUUsSUFDM0I0QixFQUFNODhCLEVBQUcxK0IsR0FBSzRCLEVBQU04OEIsRUFBRzErQixHQUFLNEIsRUFFaEMsT0FBTzg4QixFQUFHbCtCLEtBQUksU0FBVXVXLEdBQUssT0FBT0EsRUFBSW5WLENBQUssR0FDakQsRUFDQTY1QixFQUFPLEdBQUksU0FBVWlELEdBRWpCLElBREEsSUFBSS9aLEVBQU0sRUFDRDNrQixFQUFJLEVBQUdBLEVBQUkwK0IsRUFBRzUrQixPQUFRRSxJQUMzQjJrQixHQUFPK1osRUFBRzErQixHQUVkLE9BQU8wK0IsRUFBR2wrQixLQUFJLFNBQVV1VyxHQUFLLE9BQU9BLEVBQUk0TixDQUFLLEdBQ2pELEVBQ0E4VyxFQUFPLEdBQUksU0FBVWlELEdBRWpCLElBREEsSUFBSS9aLEVBQU0sRUFDRDNrQixFQUFJLEVBQUdBLEVBQUkwK0IsRUFBRzUrQixPQUFRRSxJQUMzQjJrQixHQUFPemxCLEtBQUs0c0IsSUFBSTRTLEVBQUcxK0IsR0FBSSxHQUUzQixPQUFPMCtCLEVBQUdsK0IsS0FBSSxTQUFVdVcsR0FBSyxPQUFPN1gsS0FBSzhCLEtBQUs5QixLQUFLNHNCLElBQUkvVSxFQUFHLEdBQUs0TixFQUFNLEdBQ3pFLEVBQ0E4VyxHQUNKLFNBQVMyQixFQUFZdHFCLEVBQUdDLEVBQUc0ckIsR0FjdkIsSUFiQSxJQUFJQyxFQUFVLElBQUlsQixJQUNkcGdCLEVBQU8sR0FDUDhLLEVBQU8sR0FDUDRVLEVBQU8sR0FDUDZCLEVBQVUsU0FBVWxmLEVBQUt5UyxHQUN6QjlVLEVBQUszTyxLQUFLZ1IsR0FDVnlJLEVBQUt6WixLQUFLeWpCLEdBQ1YsSUFBSTBNLEVBQVlILEVBQUc3ckIsRUFBRW5CLElBQUlnTyxFQUFLeVMsR0FBTXJmLEVBQUVwQixJQUFJZ08sRUFBS3lTLElBQy9DNEssRUFBS3J1QixLQUFLbXdCLEVBQ2QsRUFDSUMsRUFBVWpzQixFQUFFZ3FCLFlBQ1prQyxFQUFRbHNCLEVBQUU2cEIsVUFDVnNDLEVBQVFuc0IsRUFBRStwQixVQUNMNzhCLEVBQUksRUFBR0EsRUFBSSsrQixFQUFRai9CLE9BQVFFLElBQUssQ0FDckMsSUFFSW9KLEdBRkF1VyxFQUFNcWYsRUFBTWgvQixJQUVBLEtBRFpveUIsRUFBTTZNLEVBQU1qL0IsSUFFaEI0K0IsRUFBUTdzQixJQUFJM0ksR0FDWnkxQixFQUFRbGYsRUFBS3lTLEVBQ2pCLENBQ0EsSUFBSThNLEVBQVVuc0IsRUFBRStwQixZQUNacUMsRUFBUXBzQixFQUFFNHBCLFVBQ1Z5QyxFQUFRcnNCLEVBQUU4cEIsVUFDZCxJQUFTNzhCLEVBQUksRUFBR0EsRUFBSWsvQixFQUFRcC9CLE9BQVFFLElBQUssQ0FDckMsSUFBSTJmLEVBQ0F5UyxFQUNBaHBCLEdBRkF1VyxFQUFNd2YsRUFBTW4vQixJQUVBLEtBRFpveUIsRUFBTWdOLEVBQU1wL0IsSUFFWjQrQixFQUFRdEMsSUFBSWx6QixJQUVoQnkxQixFQUFRbGYsRUFBS3lTLEVBQ2pCLENBQ0EsSUFBSTRKLEVBQU8sQ0FBQ2xwQixFQUFFK1osTUFBTy9aLEVBQUVxcEIsT0FDdkIsT0FBTyxJQUFJSixFQUFhemUsRUFBTThLLEVBQU00VSxFQUFNaEIsRUFDOUMsQ0E2QkEzbUIsRUFBUWdxQixPQTVCUixTQUFnQnRvQixHQUNaLElBQUlrbEIsRUFBVSxHQUNkbGxCLEVBQUUxUyxTQUFRLFNBQVVDLEVBQU9xYixFQUFLeVMsR0FDNUI2SixFQUFRdHRCLEtBQUssQ0FBRXJLLE1BQU9BLEVBQU9xYixJQUFLQSxFQUFLeVMsSUFBS0EsR0FDaEQsSUFDQTZKLEVBQVFwUyxNQUFLLFNBQVUvVyxFQUFHQyxHQUN0QixPQUFJRCxFQUFFNk0sTUFBUTVNLEVBQUU0TSxJQUNMN00sRUFBRXNmLElBQU1yZixFQUFFcWYsSUFHVnRmLEVBQUU2TSxJQUFNNU0sRUFBRTRNLEdBRXpCLElBS0EsSUFKQSxJQUFJcUssRUFBVSxHQUNWOW5CLEVBQVMsR0FDVG85QixFQUFTLEdBQ1RDLEdBQWMsRUFDVHYvQixFQUFJLEVBQUdBLEVBQUlpOEIsRUFBUW44QixPQUFRRSxJQUFLLENBQ3JDLElBQUl5N0IsRUFBS1EsRUFBUWo4QixHQUFJMmYsRUFBTThiLEVBQUc5YixJQUFLeVMsRUFBTXFKLEVBQUdySixJQUFLOXRCLEVBQVFtM0IsRUFBR24zQixNQUN4RHFiLElBQVE0ZixJQUNSQSxFQUFhNWYsRUFDYjJmLEVBQU8zd0IsS0FBSzNPLElBRWhCZ3FCLEVBQVFyYixLQUFLeWpCLEdBQ2Jsd0IsRUFBT3lNLEtBQUtySyxFQUNoQixDQUNBLE1BQU8sQ0FBRTBsQixRQUFTQSxFQUFTOW5CLE9BQVFBLEVBQVFvOUIsT0FBUUEsRUFDdkQsQyxzQkN6VUEsSUFBSXhELEVBQVlwNkIsTUFBUUEsS0FBS282QixVQUFhLFNBQVVILEdBQ2hELElBQUk1WixFQUFzQixtQkFBWHVLLFFBQXlCcVAsRUFBRXJQLE9BQU9zUCxVQUFXNTdCLEVBQUksRUFDaEUsT0FBSStoQixFQUFVQSxFQUFFN0csS0FBS3lnQixHQUNkLENBQ0hqOUIsS0FBTSxXQUVGLE9BRElpOUIsR0FBSzM3QixHQUFLMjdCLEVBQUU3N0IsU0FBUTY3QixPQUFJLEdBQ3JCLENBQUVyM0IsTUFBT3EzQixHQUFLQSxFQUFFMzdCLEtBQU1vWSxNQUFPdWpCLEVBQ3hDLEVBRVIsRUFDSXZELEVBQWdCMTJCLE1BQVFBLEtBQUswMkIsY0FBaUIsU0FBVTFKLEdBQ3hELEdBQUlBLEdBQU9BLEVBQUkySixXQUFZLE9BQU8zSixFQUNsQyxJQUFJbGUsRUFBUyxDQUFDLEVBQ2QsR0FBVyxNQUFQa2UsRUFBYSxJQUFLLElBQUl6ZixLQUFLeWYsRUFBUzFsQixPQUFPWSxlQUFlc1IsS0FBS3dULEVBQUt6ZixLQUFJdUIsRUFBT3ZCLEdBQUt5ZixFQUFJemYsSUFFNUYsT0FEQXVCLEVBQWdCLFFBQUlrZSxFQUNibGUsQ0FDWCxFQUNBeEgsT0FBT3VNLGVBQWVGLEVBQVMsYUFBYyxDQUFFL1EsT0FBTyxJQUN0RCxJQUFJdTBCLEVBQU9ULEVBQWEsRUFBUSxPQUM1Qi8zQixFQUFTKzNCLEVBQWEsRUFBUSxPQUM5Qm9ILEVBQU9wSCxFQUFhLEVBQVEsT0FDNUJFLEVBQVFGLEVBQWEsRUFBUSxPQWlFakMvaUIsRUFBUW9xQixjQWhFUixTQUF1QnZ0QixFQUFZL1MsR0FDL0IsT0FBTyxTQUFtQjRFLEVBQU0yN0IsRUFBVy9zQixFQUFZZ3RCLEVBQVFqRixFQUFla0YsRUFBT0MsRUFBS0MsUUFDdkUsSUFBWEgsSUFBcUJBLEVBQVMsU0FDWixJQUFsQmpGLElBQTRCQSxFQUFnQixTQUNsQyxJQUFWa0YsSUFBb0JBLEVBQVEsV0FDcEIsSUFBUkMsSUFBa0JBLEVBQU0sU0FDVCxJQUFmQyxJQUF5QkEsR0FBYSxHQUcxQyxJQUZBLElBQUlyRixFQUFZMTJCLEVBQUtqRSxPQUNqQjA2QixFQUFlM0IsRUFBS04sU0FBU3gwQixFQUFLakUsT0FBUTZTLEdBQ3JDM1MsRUFBSSxFQUFHQSxFQUFJK0QsRUFBS2pFLE9BQVFFLElBRTdCLElBREEsSUFBSWdxQixFQUFVNk8sRUFBS29CLGdCQUFnQnRuQixFQUFZNU8sRUFBS2pFLE9BQVFYLEdBQ25EdUIsRUFBSSxFQUFHQSxFQUFJc3BCLEVBQVFscUIsT0FBUVksSUFBSyxDQUNyQyxJQUFJNEYsRUFBSTRMLEVBQVduTyxFQUFLL0QsR0FBSStELEVBQUtpbUIsRUFBUXRwQixLQUN6Q200QixFQUFLQyxTQUFTMEIsRUFBY3g2QixFQUFHc0csRUFBRzBqQixFQUFRdHBCLEdBQUksR0FDOUNtNEIsRUFBS0MsU0FBUzBCLEVBQWN4USxFQUFRdHBCLEdBQUk0RixFQUFHdEcsRUFBRyxFQUNsRCxDQUVKLEdBQUk4L0IsRUFDQSxJQUFLLElBQUloNUIsRUFBSSxFQUFHQSxFQUFJNDRCLEVBQVU1L0IsT0FBUWdILElBQ2xDLElBQVM5RyxFQUFJLEVBQUdBLEVBQUkwL0IsRUFBVTU0QixHQUFHaEgsVUFDekI0L0IsRUFBVTU0QixHQUFHOUcsR0FBSyxHQURlQSxJQUlyQyxJQUFTVSxFQUFJVixFQUFJLEVBQUdVLEVBQUlnL0IsRUFBVTU0QixHQUFHaEgsVUFDN0I0L0IsRUFBVTU0QixHQUFHcEcsR0FBSyxHQURtQkEsSUFJckM0RixFQUFJNEwsRUFBV25PLEVBQUsyN0IsRUFBVTU0QixHQUFHOUcsSUFBSytELEVBQUsyN0IsRUFBVTU0QixHQUFHcEcsS0FDNURtNEIsRUFBS0MsU0FBUzBCLEVBQWNrRixFQUFVNTRCLEdBQUc5RyxHQUFJc0csRUFBR281QixFQUFVNTRCLEdBQUdwRyxHQUFJLEdBQ2pFbTRCLEVBQUtDLFNBQVMwQixFQUFja0YsRUFBVTU0QixHQUFHcEcsR0FBSTRGLEVBQUdvNUIsRUFBVTU0QixHQUFHOUcsR0FBSSxHQUtqRixJQUFTOEcsRUFBSSxFQUFHQSxFQUFJNjRCLEVBQVE3NEIsSUFBSyxDQUM3QixJQUFJNnpCLEVBQXFCOUIsRUFBSzBCLGdCQUFnQkMsRUFBY0MsRUFBVzluQixFQUFZK25CLEVBQWV2N0IsR0FDOUZpWCxFQUFJLEVBQ1IsSUFBU3BXLEVBQUksRUFBR0EsRUFBSXk2QixFQUFXejZCLElBQzNCLElBQVNVLEVBQUksRUFBR0EsRUFBSWc2QixFQUFlaDZCLElBQUssQ0FDcEMsSUFBSWhCLEVBQUlSLEtBQUtFLE1BQU11N0IsRUFBbUIsR0FBRzM2QixHQUFHVSxJQUM1QyxLQUFJaEIsRUFBSSxHQUFLNDRCLEVBQU11QyxRQUFRMTdCLEdBQVUwZ0MsR0FHckMsSUFBSyxJQUFJNXdCLEVBQUksRUFBR0EsRUFBSXlyQixFQUFlenJCLElBQUssQ0FDcEMsSUFBSXRQLEVBQUlULEtBQUtFLE1BQU11N0IsRUFBbUIsR0FBRzM2QixHQUFHaVAsSUFDeEM4d0IsRUFBS3BGLEVBQW1CLEdBQUczNkIsR0FBR1UsR0FDOUJzL0IsRUFBS3JGLEVBQW1CLEdBQUczNkIsR0FBR2lQLEdBQzlCdFAsRUFBSSxJQUFPb2dDLElBQU9DLElBR2xCMTVCLEVBQUk0TCxFQUFXbk8sRUFBS3JFLEdBQUlxRSxFQUFLcEUsSUFDakN5VyxHQUFLeWlCLEVBQUtDLFNBQVMwQixFQUFjOTZCLEVBQUc0RyxFQUFHM0csRUFBRyxHQUMxQ3lXLEdBQUt5aUIsRUFBS0MsU0FBUzBCLEVBQWM3NkIsRUFBRzJHLEVBQUc1RyxFQUFHLEdBQzlDLENBQ0osQ0FFSixHQUFJMFcsR0FBS3dwQixFQUFRanRCLEVBQWE1TyxFQUFLakUsT0FDL0IsS0FFUixDQUVBLE9BRGErNEIsRUFBS2lDLFdBQVdOLEVBRWpDLENBQ0osRUE4QkFubEIsRUFBUTRxQixvQkE1QlIsU0FBNkIvdEIsR0EwQnpCLE1BQU8sQ0FBRWd1QixlQXpCVCxTQUF3QnZ0QixFQUFZNU8sRUFBTW84QixFQUFhQyxFQUFPamhDLEdBQzFELElBQUssSUFBSWEsRUFBSSxFQUFHQSxFQUFJbWdDLEVBQVlyZ0MsT0FBUUUsSUFFcEMsSUFEQSxJQUFJZ3FCLEVBQVVzTyxFQUFNMkIsZ0JBQWdCdG5CLEVBQVk1TyxFQUFLakUsT0FBUVgsR0FDcER1QixFQUFJLEVBQUdBLEVBQUlzcEIsRUFBUWxxQixPQUFRWSxJQUNoQyxLQUFJc3BCLEVBQVF0cEIsR0FBSyxHQUFqQixDQUdBLElBQUk0RixFQUFJNEwsRUFBV25PLEVBQUtpbUIsRUFBUXRwQixJQUFLeS9CLEVBQVluZ0MsSUFDakQ2NEIsRUFBS0MsU0FBU3NILEVBQU9wZ0MsRUFBR3NHLEVBQUcwakIsRUFBUXRwQixHQUFJLEVBRnZDLENBS1osRUFjeUMyL0IsYUFiekMsU0FBc0JDLEVBQU92OEIsRUFBTW84QixFQUFhQyxFQUFPamhDLEdBQ25ELElBQUssSUFBSWEsRUFBSSxFQUFHQSxFQUFJbWdDLEVBQVlyZ0MsT0FBUUUsSUFFcEMsSUFEQSxJQUFJZ3FCLEVBQVV3VixFQUFLZSxlQUFlSixFQUFZbmdDLEdBQUlzZ0MsRUFBT25oQyxHQUNoRHVCLEVBQUksRUFBR0EsRUFBSXNwQixFQUFRbHFCLE9BQVFZLElBQUssQ0FDckMsR0FBSXNwQixFQUFRdHBCLEdBQUssRUFDYixPQUVKLElBQUk0RixFQUFJNEwsRUFBV25PLEVBQUtpbUIsRUFBUXRwQixJQUFLeS9CLEVBQVluZ0MsSUFDakQ2NEIsRUFBS0MsU0FBU3NILEVBQU9wZ0MsRUFBR3NHLEVBQUcwakIsRUFBUXRwQixHQUFJLEVBQzNDLENBR1IsRUFFSixFQXVDQTJVLEVBQVFtckIsd0JBckNSLFNBQWlDdHVCLEdBQzdCLE9BQU8sU0FBb0JuTyxFQUFNMDhCLEVBQU9DLEVBQWdCUCxHQUdwRCxJQUZBLElBQUlsQyxFQUFLeEMsRUFDTG1CLEVBQUt2OEIsRUFBT2cvQixPQUFPb0IsR0FBUXpXLEVBQVU0UyxFQUFHNVMsUUFBU3NWLEVBQVMxQyxFQUFHMEMsT0FDeER0L0IsRUFBSSxFQUFHQSxFQUFJbWdDLEVBQVlyZ0MsT0FBUUUsSUFFcEMsSUFEQSxJQUFJMmdDLEVBQVEsSUFBSWpELElBQUlnRCxFQUFlLEdBQUcxZ0MsTUFDekIsQ0FDVCxJQUFJNGdDLEVBQVMvSCxFQUFLc0MsZ0JBQWdCdUYsRUFBZ0IxZ0MsR0FDbEQsSUFBZ0IsSUFBWjRnQyxFQUNBLE1BRUosSUFBSUMsRUFBYTdXLEVBQVExTCxNQUFNZ2hCLEVBQU9zQixHQUFTdEIsRUFBT3NCLEVBQVMsSUFDL0QsSUFDSSxJQUFLLElBQUlFLEVBQWVoRixFQUFTK0UsR0FBYUUsRUFBaUJELEVBQWFwaUMsUUFBU3FpQyxFQUFlM29CLEtBQU0yb0IsRUFBaUJELEVBQWFwaUMsT0FBUSxDQUM1SSxJQUFJc2lDLEVBQVlELEVBQWV6OEIsTUFDL0IsR0FBSTA4QixJQUFjSixJQUNDLElBQWZJLElBQ0FMLEVBQU1yRSxJQUFJMEUsR0FGZCxDQUtBLElBQUkxNkIsRUFBSTRMLEVBQVduTyxFQUFLaTlCLEdBQVliLEVBQVluZ0MsSUFDaEQ2NEIsRUFBS0ksa0JBQWtCeUgsRUFBZ0IxZ0MsRUFBR3NHLEVBQUcwNkIsRUFBVyxHQUN4REwsRUFBTTV1QixJQUFJaXZCLEVBSFYsQ0FJSixDQUNKLENBQ0EsTUFBT3hDLEdBQVNQLEVBQU0sQ0FBRWo2QixNQUFPdzZCLEVBQVMsQ0FDeEMsUUFDSSxJQUNRdUMsSUFBbUJBLEVBQWUzb0IsT0FBU3FqQixFQUFLcUYsRUFBYXJDLFNBQVNoRCxFQUFHdmdCLEtBQUs0bEIsRUFDdEYsQ0FDQSxRQUFVLEdBQUk3QyxFQUFLLE1BQU1BLEVBQUlqNkIsS0FBTyxDQUN4QyxDQUNKLENBRUosT0FBTzA4QixDQUNYLENBQ0osRUF1QkFyckIsRUFBUTRyQixpQkFyQlIsU0FBMEJDLEVBQVFuOUIsRUFBTW84QixFQUFheHRCLEVBQVl1dEIsRUFBZ0JHLEVBQWNsaEMsR0FDM0YsSUFBSWdpQyxFQUFLMUYsRUFDTDJGLEVBQVV2SSxFQUFLTixTQUFTNEgsRUFBWXJnQyxPQUFRNlMsR0FFaEQsR0FEQXV0QixFQUFldnRCLEVBQVk1TyxFQUFNbzhCLEVBQWFpQixFQUFTamlDLEdBQ25EK2hDLEVBQ0EsSUFDSSxJQUFLLElBQUlHLEVBQVd2RixFQUFTb0YsR0FBU0ksRUFBYUQsRUFBUzNpQyxRQUFTNGlDLEVBQVdscEIsS0FBTWtwQixFQUFhRCxFQUFTM2lDLE9BRXhHMmhDLEVBRGFpQixFQUFXaDlCLE1BQ0hQLEVBQU1vOEIsRUFBYWlCLEVBQVNqaUMsRUFFekQsQ0FDQSxNQUFPb2lDLEdBQVNKLEVBQU0sQ0FBRW45QixNQUFPdTlCLEVBQVMsQ0FDeEMsUUFDSSxJQUNRRCxJQUFlQSxFQUFXbHBCLE9BQVNxakIsRUFBSzRGLEVBQVM1QyxTQUFTaEQsRUFBR3ZnQixLQUFLbW1CLEVBQzFFLENBQ0EsUUFBVSxHQUFJRixFQUFLLE1BQU1BLEVBQUluOUIsS0FBTyxDQUN4QyxDQUVKLE9BQU9vOUIsQ0FDWCxDLHVCQzlLQSxJQUFJMUYsRUFBVWg2QixNQUFRQSxLQUFLZzZCLFFBQVcsU0FBVUMsRUFBRzcwQixHQUMvQyxJQUFJaWIsRUFBc0IsbUJBQVh1SyxRQUF5QnFQLEVBQUVyUCxPQUFPc1AsVUFDakQsSUFBSzdaLEVBQUcsT0FBTzRaLEVBQ2YsSUFBbUJ0MUIsRUFBWTdCLEVBQTNCeEUsRUFBSStoQixFQUFFN0csS0FBS3lnQixHQUFPRSxFQUFLLEdBQzNCLElBQ0ksV0FBYyxJQUFOLzBCLEdBQWdCQSxLQUFNLE1BQVFULEVBQUlyRyxFQUFFdEIsUUFBUTBaLE1BQU15akIsRUFBR2x0QixLQUFLdEksRUFBRS9CLE1BQ3hFLENBQ0EsTUFBT04sR0FBU1EsRUFBSSxDQUFFUixNQUFPQSxFQUFTLENBQ3RDLFFBQ0ksSUFDUXFDLElBQU1BLEVBQUUrUixPQUFTMkosRUFBSS9oQixFQUFVLFNBQUkraEIsRUFBRTdHLEtBQUtsYixFQUNsRCxDQUNBLFFBQVUsR0FBSXdFLEVBQUcsTUFBTUEsRUFBRVIsS0FBTyxDQUNwQyxDQUNBLE9BQU82M0IsQ0FDWCxFQUNJMkYsRUFBWTkvQixNQUFRQSxLQUFLOC9CLFVBQWEsV0FDdEMsSUFBSyxJQUFJM0YsRUFBSyxHQUFJNzdCLEVBQUksRUFBR0EsRUFBSThiLFVBQVVoYyxPQUFRRSxJQUFLNjdCLEVBQUtBLEVBQUc0RixPQUFPL0YsRUFBTzVmLFVBQVU5YixLQUNwRixPQUFPNjdCLENBQ1gsRUFDSUMsRUFBWXA2QixNQUFRQSxLQUFLbzZCLFVBQWEsU0FBVUgsR0FDaEQsSUFBSTVaLEVBQXNCLG1CQUFYdUssUUFBeUJxUCxFQUFFclAsT0FBT3NQLFVBQVc1N0IsRUFBSSxFQUNoRSxPQUFJK2hCLEVBQVVBLEVBQUU3RyxLQUFLeWdCLEdBQ2QsQ0FDSGo5QixLQUFNLFdBRUYsT0FESWk5QixHQUFLMzdCLEdBQUsyN0IsRUFBRTc3QixTQUFRNjdCLE9BQUksR0FDckIsQ0FBRXIzQixNQUFPcTNCLEdBQUtBLEVBQUUzN0IsS0FBTW9ZLE1BQU91akIsRUFDeEMsRUFFUixFQUNJdkQsRUFBZ0IxMkIsTUFBUUEsS0FBSzAyQixjQUFpQixTQUFVMUosR0FDeEQsR0FBSUEsR0FBT0EsRUFBSTJKLFdBQVksT0FBTzNKLEVBQ2xDLElBQUlsZSxFQUFTLENBQUMsRUFDZCxHQUFXLE1BQVBrZSxFQUFhLElBQUssSUFBSXpmLEtBQUt5ZixFQUFTMWxCLE9BQU9ZLGVBQWVzUixLQUFLd1QsRUFBS3pmLEtBQUl1QixFQUFPdkIsR0FBS3lmLEVBQUl6ZixJQUU1RixPQURBdUIsRUFBZ0IsUUFBSWtlLEVBQ2JsZSxDQUNYLEVBQ0F4SCxPQUFPdU0sZUFBZUYsRUFBUyxhQUFjLENBQUUvUSxPQUFPLElBQ3RELElBQUlnMEIsRUFBUUYsRUFBYSxFQUFRLE9BQzdCc0osRUFDQSxTQUFrQkMsRUFBYUMsRUFBU0MsRUFBVTdYLEdBQzlDdG9CLEtBQUtpZ0MsWUFBY0EsRUFDbkJqZ0MsS0FBS2tnQyxRQUFVQSxFQUNmbGdDLEtBQUttZ0MsU0FBV0EsRUFDaEJuZ0MsS0FBS3NvQixRQUFVQSxDQUNuQixFQW1CSixTQUFTOFgsRUFBa0IvOUIsRUFBTWltQixFQUFTK1gsRUFBVXBpQyxFQUFHUixHQUVuRCxRQURpQixJQUFiNGlDLElBQXVCQSxFQUFXLElBQ2xDL1gsRUFBUWxxQixPQUFTaWlDLEVBQVUsQ0FDM0IsSUFBSUMsRUFZWixTQUF3Q2orQixFQUFNaW1CLEVBQVM3cUIsR0FDbkQsSUFBSTZXLEVBQU1qUyxFQUFLLEdBQUdqRSxPQUNkbWlDLEVBQVkzSixFQUFNK0IsV0FBV3JRLEVBQVFscUIsT0FBUVgsR0FDN0MraUMsRUFBYTVKLEVBQU0rQixXQUFXclEsRUFBUWxxQixPQUFRWCxHQUVsRCtpQyxHQURBQSxHQUFjRCxJQUFjQyxFQUFhLEVBQUksR0FDbkJsWSxFQUFRbHFCLE9BS2xDLElBSkEsSUFBSXFpQyxFQUFPblksRUFBUWlZLEdBQ2ZHLEVBQVFwWSxFQUFRa1ksR0FDaEJHLEVBQW1CLEVBQ25CQyxFQUFtQmhLLEVBQU03aEIsTUFBTVQsR0FDMUJoVyxFQUFJLEVBQUdBLEVBQUlzaUMsRUFBaUJ4aUMsT0FBUUUsSUFDekNzaUMsRUFBaUJ0aUMsR0FBSytELEVBQUtvK0IsR0FBTW5pQyxHQUFLK0QsRUFBS3ErQixHQUFPcGlDLEdBQ2xEcWlDLEdBQ0tDLEVBQWlCdGlDLElBQU0rRCxFQUFLbytCLEdBQU1uaUMsR0FBSytELEVBQUtxK0IsR0FBT3BpQyxJQUFPLEVBRW5FLElBQUl1aUMsRUFBUSxFQUNSQyxFQUFTLEVBQ1RDLEVBQU9uSyxFQUFNN2hCLE1BQU11VCxFQUFRbHFCLFFBQy9CLElBQVNFLEVBQUksRUFBR0EsRUFBSWdxQixFQUFRbHFCLE9BQVFFLElBQUssQ0FFckMsSUFEQSxJQUFJMGlDLEVBQVNMLEVBQ0ovN0IsRUFBSSxFQUFHQSxFQUFJMFAsRUFBSzFQLElBQ3JCbzhCLEdBQVVKLEVBQWlCaDhCLEdBQUt2QyxFQUFLaW1CLEVBQVFocUIsSUFBSXNHLEdBRXRDLElBQVhvOEIsR0FDQUQsRUFBS3ppQyxHQUFLczRCLEVBQU0rQixXQUFXLEVBQUdsN0IsR0FDZCxJQUFac2pDLEVBQUt6aUMsR0FDTHVpQyxHQUFTLEVBR1RDLEdBQVUsR0FHVEUsRUFBUyxHQUNkRCxFQUFLemlDLEdBQUssRUFDVnVpQyxHQUFTLElBR1RFLEVBQUt6aUMsR0FBSyxFQUNWd2lDLEdBQVUsRUFFbEIsQ0FDQSxJQUFJRyxFQUFjckssRUFBTTdoQixNQUFNOHJCLEdBQzFCSyxFQUFldEssRUFBTTdoQixNQUFNK3JCLEdBRy9CLElBRkFELEVBQVEsRUFDUkMsRUFBUyxFQUNBeGlDLEVBQUksRUFBR0EsRUFBSXlpQyxFQUFLM2lDLE9BQVFFLElBQ2IsSUFBWnlpQyxFQUFLemlDLElBQ0wyaUMsRUFBWUosR0FBU3ZZLEVBQVFocUIsR0FDN0J1aUMsR0FBUyxJQUdUSyxFQUFhSixHQUFVeFksRUFBUWhxQixHQUMvQndpQyxHQUFVLEdBR2xCLE1BQU8sQ0FDSEcsWUFBYUEsRUFDYkMsYUFBY0EsRUFDZEMsV0FBWVAsRUFDWlEsT0FBUVQsRUFFaEIsQ0F6RTJCVSxDQUErQmgvQixFQUFNaW1CLEVBQVM3cUIsR0FDN0R3akMsRUFBY1gsRUFBYVcsWUFBYUMsRUFBZVosRUFBYVksYUFBY0MsRUFBYWIsRUFBYWEsV0FBWUMsRUFBU2QsRUFBYWMsT0FJbEosTUFEVyxDQUFFbEosVUFGR2tJLEVBQWtCLzlCLEVBQU00K0IsRUFBYVosRUFBVXBpQyxFQUFJLEVBQUdSLEdBRW5DMDZCLFdBRGxCaUksRUFBa0IvOUIsRUFBTTYrQixFQUFjYixFQUFVcGlDLEVBQUksRUFBR1IsR0FDYjZqQyxRQUFRLEVBQU9ILFdBQVlBLEVBQVlDLE9BQVFBLEVBRTlHLENBR0ksTUFEVyxDQUFFOVksUUFBU0EsRUFBU2daLFFBQVEsRUFHL0MsQ0E2RUEsU0FBU0MsRUFBaUJ6RCxFQUFNbUMsRUFBYUMsRUFBU0MsRUFBVTdYLEVBQVNrWixFQUFTQyxHQUM5RSxJQUFJMUgsRUFDSixHQUFJK0QsRUFBS3dELE9BSUwsT0FIQW5CLEVBQVNxQixHQUFTLElBQU1DLEdBQ3ZCMUgsRUFBS3pSLEVBQVFtWixJQUFVaFcsT0FBT3ZNLE1BQU02YSxFQUFJK0YsRUFBUyxDQUFDLEVBQUdoQyxFQUFLeFYsUUFBUWxxQixRQUFTMC9CLEVBQUt4VixVQUUxRSxDQUFFa1osUUFBU0EsRUFBU0MsUUFEM0JBLEdBQVcsR0FJWHhCLEVBQVl1QixHQUFXMUQsRUFBS3FELFdBQzVCakIsRUFBUXNCLEdBQVcxRCxFQUFLc0QsT0FDeEJqQixFQUFTcUIsR0FBUyxHQUFLQSxFQUFVLEVBQ2pDLElBQUlFLEVBQWFGLEVBQ2JyeEIsRUFBTW94QixFQUFpQnpELEVBQUs1RixVQUFXK0gsRUFBYUMsRUFBU0MsRUFBVTdYLEVBQVNrWixFQUFVLEVBQUdDLEdBS2pHLE9BSkFELEVBQVVyeEIsRUFBSXF4QixRQUNkQyxFQUFVdHhCLEVBQUlzeEIsUUFDZHRCLEVBQVN1QixHQUFZLEdBQUtGLEVBQVUsRUFFN0IsQ0FBRUEsU0FEVHJ4QixFQUFNb3hCLEVBQWlCekQsRUFBSzNGLFdBQVk4SCxFQUFhQyxFQUFTQyxFQUFVN1gsRUFBU2taLEVBQVUsRUFBR0MsSUFDeEVELFFBQVNDLFFBQVN0eEIsRUFBSXN4QixRQUVwRCxDQUNBLFNBQVNFLEVBQVM3RCxHQUNkLE9BQUlBLEVBQUt3RCxPQUNFLEVBR0EsRUFBSUssRUFBUzdELEVBQUs1RixXQUFheUosRUFBUzdELEVBQUszRixXQUU1RCxDQUNBLFNBQVN5SixFQUFVOUQsR0FDZixPQUFJQSxFQUFLd0QsT0FDRSxFQUdBTSxFQUFVOUQsRUFBSzVGLFdBQWEwSixFQUFVOUQsRUFBSzNGLFdBRTFELENBeUJBLFNBQVMwSixFQUFXVixFQUFZQyxFQUFRL0wsRUFBTzUzQixHQUUzQyxJQURBLElBQUl1akMsRUFBU0ksRUFDSng4QixFQUFJLEVBQUdBLEVBQUl5d0IsRUFBTWozQixPQUFRd0csSUFDOUJvOEIsR0FBVUcsRUFBV3Y4QixHQUFLeXdCLEVBQU16d0IsR0FFcEMsT0FBZSxJQUFYbzhCLEVBQ1dwSyxFQUFNK0IsV0FBVyxFQUFHbDdCLEdBRzFCdWpDLEVBQVMsRUFDUCxFQUdBLENBRWYsQ0F2TEFydEIsRUFBUXFzQixTQUFXQSxFQVNuQnJzQixFQUFRbXVCLFdBUlIsU0FBb0J6L0IsRUFBTTRPLEVBQVk4d0IsRUFBUXRrQyxHQUMxQyxJQUFJNGlDLEVBQVc3aUMsS0FBSzBDLElBQUksR0FBSStRLEdBSzVCLE9BSlkybEIsRUFDUHI1QixNQUFNd2tDLEdBQ05qakMsS0FBSSxTQUFVNlIsRUFBR3JTLEdBQUssT0FLL0IsU0FBa0IrRCxFQUFNZytCLEVBQVVqN0IsRUFBRzNILEdBSWpDLFlBSGlCLElBQWI0aUMsSUFBdUJBLEVBQVcsSUFFM0JELEVBQWtCLzlCLEVBRGZ1MEIsRUFBTXI1QixNQUFNOEUsRUFBS2pFLFFBQ2FpaUMsRUFBVWo3QixFQUFHM0gsRUFFN0QsQ0FWc0N1a0MsQ0FBUzMvQixFQUFNZytCLEVBQVUvaEMsRUFBR2IsRUFBUyxJQUNwRHFCLEtBQUksU0FBVWcvQixHQUFRLE9BdUY3QyxTQUFxQkEsRUFBTXVDLEdBQ3ZCLElBQUk0QixFQUFTTixFQUFTN0QsR0FDbEJvRSxFQUFVTixFQUFVOUQsR0FDcEJtQyxFQUFjckosRUFDYnI1QixNQUFNMGtDLEdBQ05uakMsS0FBSSxXQUFjLE9BQU84M0IsRUFBTTdoQixNQUFNK29CLEVBQUtxRCxXQUFhckQsRUFBS3FELFdBQVcvaUMsT0FBUyxFQUFJLElBQ3JGOGhDLEVBQVV0SixFQUFNN2hCLE1BQU1rdEIsR0FDdEI5QixFQUFXdkosRUFBTXI1QixNQUFNMGtDLEdBQVFuakMsS0FBSSxXQUFjLE1BQU8sRUFBRSxHQUFJLEVBQUksSUFDbEV3cEIsRUFBVXNPLEVBQ1RyNUIsTUFBTTJrQyxHQUNOcGpDLEtBQUksV0FBYyxPQUFPODNCLEVBQU1yNUIsTUFBTThpQyxHQUFVdmhDLEtBQUksV0FBYyxPQUFRLENBQUcsR0FBSSxJQUVyRixPQURBeWlDLEVBQWlCekQsRUFBTW1DLEVBQWFDLEVBQVNDLEVBQVU3WCxFQUFTLEVBQUcsR0FDNUQsSUFBSTBYLEVBQVNDLEVBQWFDLEVBQVNDLEVBQVU3WCxFQUN4RCxDQXBHb0Q2WixDQUFZckUsRUFBTXVDLEVBQVcsR0FFakYsRUErSkExc0IsRUFBUXl1QixjQXZCUixTQUF1QkMsR0FDbkIsSUFBSTlGLEVBQUt4QyxFQUNULEdBQUlzSSxFQUFTamtDLE9BQVMsRUFBRyxDQUNyQixJQUFJK2IsRUFBUyxHQUNiLElBQ0ksSUFBSyxJQUFJbW9CLEVBQWFsSSxFQUFTaUksR0FBV0UsRUFBZUQsRUFBV3RsQyxRQUFTdWxDLEVBQWE3ckIsS0FBTTZyQixFQUFlRCxFQUFXdGxDLE9BQVEsQ0FDOUgsSUFBSThnQyxFQUFPeUUsRUFBYTMvQixNQUN4QnVYLEVBQU9sTixLQUFLaVMsTUFBTS9FLEVBQVEybEIsRUFBU2hDLEVBQUt4VixTQUM1QyxDQUNKLENBQ0EsTUFBT3dVLEdBQVNQLEVBQU0sQ0FBRWo2QixNQUFPdzZCLEVBQVMsQ0FDeEMsUUFDSSxJQUNReUYsSUFBaUJBLEVBQWE3ckIsT0FBU3FqQixFQUFLdUksRUFBV3ZGLFNBQVNoRCxFQUFHdmdCLEtBQUs4b0IsRUFDaEYsQ0FDQSxRQUFVLEdBQUkvRixFQUFLLE1BQU1BLEVBQUlqNkIsS0FBTyxDQUN4QyxDQUNBLE9BQU82WCxDQUNYLENBRUksTUFBTyxDQUFDLEVBQUUsR0FFbEIsRUFnQ0F4RyxFQUFRa3JCLGVBZFIsU0FBd0J4SixFQUFPeUksRUFBTXJnQyxHQUVqQyxJQURBLElBQUkra0MsRUFBTyxFQUNKMUUsRUFBS3FDLFNBQVNxQyxHQUFNLEdBQUssR0FHeEJBLEVBRFMsSUFERlgsRUFBVy9ELEVBQUttQyxZQUFZdUMsR0FBTzFFLEVBQUtvQyxRQUFRc0MsR0FBT25OLEVBQU81M0IsR0FFOURxZ0MsRUFBS3FDLFNBQVNxQyxHQUFNLEdBR3BCMUUsRUFBS3FDLFNBQVNxQyxHQUFNLEdBR25DLElBQUkzL0IsR0FBUyxFQUFJaTdCLEVBQUtxQyxTQUFTcUMsR0FBTSxHQUNyQyxPQUFPMUUsRUFBS3hWLFFBQVF6bEIsRUFDeEIsQyx1QkNyUEEsSUFBSTQvQixFQUFhemlDLE1BQVFBLEtBQUt5aUMsV0FBYyxTQUFVQyxFQUFTQyxFQUFZdnNCLEVBQUd3c0IsR0FDMUUsT0FBTyxJQUFLeHNCLElBQU1BLEVBQUl6VixXQUFVLFNBQVVFLEVBQVNDLEdBQy9DLFNBQVMraEMsRUFBVWpnQyxHQUFTLElBQU00QixFQUFLbytCLEVBQVU1bEMsS0FBSzRGLEdBQVMsQ0FBRSxNQUFPRSxHQUFLaEMsRUFBT2dDLEVBQUksQ0FBRSxDQUMxRixTQUFTZ2dDLEVBQVNsZ0MsR0FBUyxJQUFNNEIsRUFBS28rQixFQUFpQixNQUFFaGdDLEdBQVMsQ0FBRSxNQUFPRSxHQUFLaEMsRUFBT2dDLEVBQUksQ0FBRSxDQUM3RixTQUFTMEIsRUFBS3NLLEdBQVVBLEVBQU80SCxLQUFPN1YsRUFBUWlPLEVBQU9sTSxPQUFTLElBQUl3VCxHQUFFLFNBQVV2VixHQUFXQSxFQUFRaU8sRUFBT2xNLE1BQVEsSUFBR21nQyxLQUFLRixFQUFXQyxFQUFXLENBQzlJdCtCLEdBQU1vK0IsRUFBWUEsRUFBVTFqQixNQUFNd2pCLEVBQVNDLEdBQWMsS0FBSzNsQyxPQUNsRSxHQUNKLEVBQ0lnbUMsRUFBZWhqQyxNQUFRQSxLQUFLZ2pDLGFBQWdCLFNBQVVOLEVBQVNPLEdBQy9ELElBQXNHaFEsRUFBR25aLEVBQUdvVyxFQUFHd0QsRUFBM0cvaUIsRUFBSSxDQUFFdXlCLE1BQU8sRUFBR0MsS0FBTSxXQUFhLEdBQVcsRUFBUGpULEVBQUUsR0FBUSxNQUFNQSxFQUFFLEdBQUksT0FBT0EsRUFBRSxFQUFJLEVBQUdrVCxLQUFNLEdBQUlDLElBQUssSUFDaEcsT0FBTzNQLEVBQUksQ0FBRTEyQixLQUFNc21DLEVBQUssR0FBSSxNQUFTQSxFQUFLLEdBQUksT0FBVUEsRUFBSyxJQUF3QixtQkFBWDFZLFNBQTBCOEksRUFBRTlJLE9BQU9zUCxVQUFZLFdBQWEsT0FBT2w2QixJQUFNLEdBQUkwekIsRUFDdkosU0FBUzRQLEVBQUtsK0IsR0FBSyxPQUFPLFNBQVVqRyxHQUFLLE9BQ3pDLFNBQWM4OUIsR0FDVixHQUFJaEssRUFBRyxNQUFNLElBQUk1WSxVQUFVLG1DQUMzQixLQUFPMUosT0FDSCxHQUFJc2lCLEVBQUksRUFBR25aLElBQU1vVyxFQUFZLEVBQVIrTSxFQUFHLEdBQVNuakIsRUFBVSxPQUFJbWpCLEVBQUcsR0FBS25qQixFQUFTLFNBQU9vVyxFQUFJcFcsRUFBVSxTQUFNb1csRUFBRTFXLEtBQUtNLEdBQUksR0FBS0EsRUFBRTljLFNBQVdrekIsRUFBSUEsRUFBRTFXLEtBQUtNLEVBQUdtakIsRUFBRyxLQUFLdm1CLEtBQU0sT0FBT3daLEVBRTNKLE9BRElwVyxFQUFJLEVBQUdvVyxJQUFHK00sRUFBSyxDQUFTLEVBQVJBLEVBQUcsR0FBUS9NLEVBQUV0dEIsUUFDekJxNkIsRUFBRyxJQUNQLEtBQUssRUFBRyxLQUFLLEVBQUcvTSxFQUFJK00sRUFBSSxNQUN4QixLQUFLLEVBQWMsT0FBWHRzQixFQUFFdXlCLFFBQWdCLENBQUV0Z0MsTUFBT3E2QixFQUFHLEdBQUl2bUIsTUFBTSxHQUNoRCxLQUFLLEVBQUcvRixFQUFFdXlCLFFBQVNwcEIsRUFBSW1qQixFQUFHLEdBQUlBLEVBQUssQ0FBQyxHQUFJLFNBQ3hDLEtBQUssRUFBR0EsRUFBS3RzQixFQUFFMHlCLElBQUlFLE1BQU81eUIsRUFBRXl5QixLQUFLRyxNQUFPLFNBQ3hDLFFBQ0ksTUFBa0JyVCxHQUFaQSxFQUFJdmYsRUFBRXl5QixNQUFZaGxDLE9BQVMsR0FBSzh4QixFQUFFQSxFQUFFOXhCLE9BQVMsS0FBa0IsSUFBVjYrQixFQUFHLElBQXNCLElBQVZBLEVBQUcsSUFBVyxDQUFFdHNCLEVBQUksRUFBRyxRQUFVLENBQzNHLEdBQWMsSUFBVnNzQixFQUFHLE1BQWMvTSxHQUFNK00sRUFBRyxHQUFLL00sRUFBRSxJQUFNK00sRUFBRyxHQUFLL00sRUFBRSxJQUFNLENBQUV2ZixFQUFFdXlCLE1BQVFqRyxFQUFHLEdBQUksS0FBTyxDQUNyRixHQUFjLElBQVZBLEVBQUcsSUFBWXRzQixFQUFFdXlCLE1BQVFoVCxFQUFFLEdBQUksQ0FBRXZmLEVBQUV1eUIsTUFBUWhULEVBQUUsR0FBSUEsRUFBSStNLEVBQUksS0FBTyxDQUNwRSxHQUFJL00sR0FBS3ZmLEVBQUV1eUIsTUFBUWhULEVBQUUsR0FBSSxDQUFFdmYsRUFBRXV5QixNQUFRaFQsRUFBRSxHQUFJdmYsRUFBRTB5QixJQUFJcDJCLEtBQUtnd0IsR0FBSyxLQUFPLENBQzlEL00sRUFBRSxJQUFJdmYsRUFBRTB5QixJQUFJRSxNQUNoQjV5QixFQUFFeXlCLEtBQUtHLE1BQU8sU0FFdEJ0RyxFQUFLZ0csRUFBS3pwQixLQUFLa3BCLEVBQVMveEIsRUFDNUIsQ0FBRSxNQUFPN04sR0FBS202QixFQUFLLENBQUMsRUFBR242QixHQUFJZ1gsRUFBSSxDQUFHLENBQUUsUUFBVW1aLEVBQUkvQyxFQUFJLENBQUcsQ0FDekQsR0FBWSxFQUFSK00sRUFBRyxHQUFRLE1BQU1BLEVBQUcsR0FBSSxNQUFPLENBQUVyNkIsTUFBT3E2QixFQUFHLEdBQUtBLEVBQUcsUUFBSyxFQUFRdm1CLE1BQU0sRUFDOUUsQ0F0QmdEbFMsQ0FBSyxDQUFDWSxFQUFHakcsR0FBSyxDQUFHLENBdUJyRSxFQUNJNjZCLEVBQVVoNkIsTUFBUUEsS0FBS2c2QixRQUFXLFNBQVVDLEVBQUc3MEIsR0FDL0MsSUFBSWliLEVBQXNCLG1CQUFYdUssUUFBeUJxUCxFQUFFclAsT0FBT3NQLFVBQ2pELElBQUs3WixFQUFHLE9BQU80WixFQUNmLElBQW1CdDFCLEVBQVk3QixFQUEzQnhFLEVBQUkraEIsRUFBRTdHLEtBQUt5Z0IsR0FBT0UsRUFBSyxHQUMzQixJQUNJLFdBQWMsSUFBTi8wQixHQUFnQkEsS0FBTSxNQUFRVCxFQUFJckcsRUFBRXRCLFFBQVEwWixNQUFNeWpCLEVBQUdsdEIsS0FBS3RJLEVBQUUvQixNQUN4RSxDQUNBLE1BQU9OLEdBQVNRLEVBQUksQ0FBRVIsTUFBT0EsRUFBUyxDQUN0QyxRQUNJLElBQ1FxQyxJQUFNQSxFQUFFK1IsT0FBUzJKLEVBQUkvaEIsRUFBVSxTQUFJK2hCLEVBQUU3RyxLQUFLbGIsRUFDbEQsQ0FDQSxRQUFVLEdBQUl3RSxFQUFHLE1BQU1BLEVBQUVSLEtBQU8sQ0FDcEMsQ0FDQSxPQUFPNjNCLENBQ1gsRUFDSTJGLEVBQVk5L0IsTUFBUUEsS0FBSzgvQixVQUFhLFdBQ3RDLElBQUssSUFBSTNGLEVBQUssR0FBSTc3QixFQUFJLEVBQUdBLEVBQUk4YixVQUFVaGMsT0FBUUUsSUFBSzY3QixFQUFLQSxFQUFHNEYsT0FBTy9GLEVBQU81ZixVQUFVOWIsS0FDcEYsT0FBTzY3QixDQUNYLEVBQ0l6RCxFQUFnQjEyQixNQUFRQSxLQUFLMDJCLGNBQWlCLFNBQVUxSixHQUN4RCxHQUFJQSxHQUFPQSxFQUFJMkosV0FBWSxPQUFPM0osRUFDbEMsSUFBSWxlLEVBQVMsQ0FBQyxFQUNkLEdBQVcsTUFBUGtlLEVBQWEsSUFBSyxJQUFJemYsS0FBS3lmLEVBQVMxbEIsT0FBT1ksZUFBZXNSLEtBQUt3VCxFQUFLemYsS0FBSXVCLEVBQU92QixHQUFLeWYsRUFBSXpmLElBRTVGLE9BREF1QixFQUFnQixRQUFJa2UsRUFDYmxlLENBQ1gsRUFDSTAwQixFQUFtQnhqQyxNQUFRQSxLQUFLd2pDLGlCQUFvQixTQUFVeFcsR0FDOUQsT0FBUUEsR0FBT0EsRUFBSTJKLFdBQWMzSixFQUFNLENBQUUsUUFBV0EsRUFDeEQsRUFDQTFsQixPQUFPdU0sZUFBZUYsRUFBUyxhQUFjLENBQUUvUSxPQUFPLElBQ3RELElBQUl1MEIsRUFBT1QsRUFBYSxFQUFRLE9BQzVCLzNCLEVBQVMrM0IsRUFBYSxFQUFRLE9BQzlCK00sRUFBWS9NLEVBQWEsRUFBUSxNQUNqQ29ILEVBQU9wSCxFQUFhLEVBQVEsT0FDNUJFLEVBQVFGLEVBQWEsRUFBUSxPQUM3QmdOLEVBQTJCRixFQUFnQixFQUFRLE9BQ25ERyxFQUFxQixLQUNyQkMsRUFBbUIsS0FDbkI5SixFQUFRLFdBQ1IsU0FBU0EsRUFBS2xGLFFBQ0ssSUFBWEEsSUFBcUJBLEVBQVMsQ0FBQyxHQUNuQyxJQUFJNEcsRUFBUXg3QixLQUNaQSxLQUFLNmpDLGFBQWUsRUFDcEI3akMsS0FBSzhqQyxrQkFBb0IsRUFDekI5akMsS0FBSzI1QixRQUFVLEdBQ2YzNUIsS0FBSytqQyxZQUFjLEVBQ25CL2pDLEtBQUtnVCxRQUFVLEVBQ2ZoVCxLQUFLaVIsV0FBYSxHQUNsQmpSLEtBQUtna0MsbUJBQXFCLEVBQzFCaGtDLEtBQUt2QyxPQUFTRCxLQUFLQyxPQUNuQnVDLEtBQUtpa0Msa0JBQW9CLEVBQ3pCamtDLEtBQUtra0MsY0FBZ0IsRUFDckJsa0MsS0FBS21rQyxPQUFTLEVBQ2Rua0MsS0FBS29rQyxtQkFBcUIsRUFDMUJwa0MsS0FBS3FrQyxhQUFlLGNBQ3BCcmtDLEtBQUtza0MsYUFBZSxHQUNwQnRrQyxLQUFLdWtDLGlCQUFtQnZrQyxLQUFLaVIsV0FDN0JqUixLQUFLd1EsV0FBYWcwQixFQUNsQnhrQyxLQUFLeWtDLGVBQWdCLEVBQ3JCemtDLEtBQUtxaUMsU0FBVyxHQUNoQnJpQyxLQUFLd1IsVUFBWSxHQUNqQnhSLEtBQUswa0Msa0JBQW9CLElBQUlDLEVBQzdCLElBQUlDLEVBQVcsU0FBVWw5QixRQUNEb0ksSUFBaEI4a0IsRUFBT2x0QixLQUNQOHpCLEVBQU05ekIsR0FBT2t0QixFQUFPbHRCLEdBQzVCLEVBQ0FrOUIsRUFBUyxjQUNUQSxFQUFTLGdCQUNUQSxFQUFTLHFCQUNUQSxFQUFTLFdBQ1RBLEVBQVMsZUFDVEEsRUFBUyxXQUNUQSxFQUFTLGNBQ1RBLEVBQVMsc0JBQ1RBLEVBQVMsVUFDVEEsRUFBUyxxQkFDVEEsRUFBUyxpQkFDVEEsRUFBUyxVQUNUQSxFQUFTLHFCQUNiLENBbWZBLE9BbGZBOUssRUFBS3pnQixVQUFVNUgsSUFBTSxTQUFVcUUsR0FHM0IsT0FGQTlWLEtBQUs2a0MsY0FBYy91QixHQUNuQjlWLEtBQUs4a0MsaUJBQ0U5a0MsS0FBS3dSLFNBQ2hCLEVBQ0Fzb0IsRUFBS3pnQixVQUFVMHJCLFNBQVcsU0FBVWp2QixFQUFHcUosR0FFbkMsWUFEaUIsSUFBYkEsSUFBdUJBLEVBQVcsV0FBYyxPQUFPLENBQU0sR0FDMURzakIsRUFBVXppQyxVQUFNLE9BQVEsR0FBUSxXQUNuQyxPQUFPZ2pDLEVBQVloakMsTUFBTSxTQUFVKzVCLEdBQy9CLE9BQVFBLEVBQUdtSixPQUNQLEtBQUssRUFFRCxPQURBbGpDLEtBQUs2a0MsY0FBYy91QixHQUNaLENBQUMsRUFBRzlWLEtBQUtnbEMsb0JBQW9CN2xCLElBQ3hDLEtBQUssRUFFRCxPQURBNGEsRUFBR29KLE9BQ0ksQ0FBQyxFQUFHbmpDLEtBQUt3UixXQUU1QixHQUNKLEdBQ0osRUFDQXNvQixFQUFLemdCLFVBQVU0ckIsd0JBQTBCLFNBQVUxdEIsRUFBR3FkLFFBQ25DLElBQVhBLElBQXFCQSxFQUFTLENBQUMsR0FDbkM1MEIsS0FBS3VYLEVBQUlBLEVBQ1R2WCxLQUFLcWtDLGFBQWV6UCxFQUFPeVAsY0FBZ0Jya0MsS0FBS3FrQyxhQUNoRHJrQyxLQUFLc2tDLGFBQWUxUCxFQUFPMFAsY0FBZ0J0a0MsS0FBS3NrQyxhQUNoRHRrQyxLQUFLdWtDLGlCQUFtQjNQLEVBQU8yUCxrQkFBb0J2a0MsS0FBS3VrQyxnQkFDNUQsRUFDQXpLLEVBQUt6Z0IsVUFBVTZyQixrQkFBb0IsU0FBVUMsRUFBWUMsR0FDckRwbEMsS0FBS21sQyxXQUFhQSxFQUNsQm5sQyxLQUFLb2xDLGFBQWVBLENBQ3hCLEVBQ0F0TCxFQUFLemdCLFVBQVV3ckIsY0FBZ0IsU0FBVS91QixHQUNyQyxHQUFJQSxFQUFFMVgsUUFBVTRCLEtBQUtpUixXQUNqQixNQUFNLElBQUluVCxNQUFNLDJCQUE2QmdZLEVBQUUxWCxPQUFTLDJCQUE2QjRCLEtBQUtpUixXQUFhLHdEQUUzRyxHQUFJalIsS0FBSzhWLElBQU1BLEdBQUs5VixLQUFLeWtDLGNBQ3JCLE9BQU96a0MsS0FBS3FsQyxhQUdoQixHQURBcmxDLEtBQUs4VixFQUFJQSxHQUNKOVYsS0FBS21sQyxhQUFlbmxDLEtBQUtvbEMsYUFBYyxDQUN4QyxJQUFJRSxFQUFhdGxDLEtBQUt1bEMsaUJBQWlCenZCLEdBQ3ZDOVYsS0FBS21sQyxXQUFhRyxFQUFXSCxXQUM3Qm5sQyxLQUFLb2xDLGFBQWVFLEVBQVdGLFlBQ25DLENBQ0FwbEMsS0FBSysrQixNQUFRLytCLEtBQUt3bEMsbUJBQW1CMXZCLEVBQUc5VixLQUFLaVIsV0FBWWpSLEtBQUtra0MsZUFDOURsa0MsS0FBS3lsQyxnQkFDTHpsQyxLQUFLMGxDLFlBQWMxbEMsS0FBSzJsQyxnQkFBZ0I3dkIsR0FDeEM5VixLQUFLNGxDLHNDQUNMLElBQUk3TCxFQUFLLzVCLEtBQUs2bEMsbUNBQW9DQyxFQUFPL0wsRUFBRytMLEtBQU1DLEVBQU9oTSxFQUFHZ00sS0FBTUMsRUFBa0JqTSxFQUFHaU0sZ0JBT3ZHLE9BTkFobUMsS0FBSzBrQyxrQkFBa0JvQixLQUFPQSxFQUM5QjlsQyxLQUFLMGtDLGtCQUFrQnFCLEtBQU9BLEVBQzlCL2xDLEtBQUswa0Msa0JBQWtCc0IsZ0JBQWtCQSxFQUN6Q2htQyxLQUFLaW1DLHlCQUNMam1DLEtBQUtrbUMsNkJBQ0xsbUMsS0FBS3lrQyxlQUFnQixFQUNkemtDLEtBQUtxbEMsWUFDaEIsRUFDQXZMLEVBQUt6Z0IsVUFBVW9zQixjQUFnQixXQUMzQixJQUFJMUwsRUFBSzBKLEVBQVVsRixvQkFBb0J2K0IsS0FBS3dRLFlBQWFtdUIsRUFBZTVFLEVBQUc0RSxhQUFjSCxFQUFpQnpFLEVBQUd5RSxlQUM3R3grQixLQUFLMitCLGFBQWVBLEVBQ3BCMytCLEtBQUt3K0IsZUFBaUJBLEVBQ3RCeCtCLEtBQUttbUMsT0FBUzFDLEVBQVUzRSx3QkFBd0I5K0IsS0FBS3dRLFdBQ3pELEVBQ0FzcEIsRUFBS3pnQixVQUFVc3NCLGdCQUFrQixTQUFVN3ZCLEdBS3ZDLElBSkEsSUFBSXF2QixFQUFhbmxDLEtBQUttbEMsV0FDbEJDLEVBQWVwbEMsS0FBS29sQyxhQUNwQjlLLEVBQU8sQ0FBQ3hrQixFQUFFMVgsT0FBUTBYLEVBQUUxWCxRQUNwQnNuQyxFQUFjLElBQUkvbUMsRUFBTzA3QixhQUFhLEdBQUksR0FBSSxHQUFJQyxHQUM3Q2g4QixFQUFJLEVBQUdBLEVBQUk2bUMsRUFBVy9tQyxPQUFRRSxJQUduQyxJQUZBLElBQUk4bkMsRUFBTWpCLEVBQVc3bUMsR0FDakIrbkMsRUFBWWpCLEVBQWE5bUMsR0FDcEJVLEVBQUksRUFBR0EsRUFBSW9uQyxFQUFJaG9DLE9BQVFZLElBQUssQ0FDakMsSUFBSXNuQyxFQUFXRixFQUFJcG5DLEdBQ2YyRSxFQUFXMGlDLEVBQVVybkMsR0FDckIyRSxFQUFXLEdBQ1graEMsRUFBWWpqQyxJQUFJbkUsRUFBR2dvQyxFQUFVM2lDLEVBRXJDLENBRUosSUFBSXNQLEVBQVl0VSxFQUFPc1UsVUFBVXl5QixHQUNqQyxPQUFPL21DLEVBQU9nOUIsUUFBUStKLEVBQWF6eUIsRUFDdkMsRUFDQTZtQixFQUFLemdCLFVBQVUvSCxVQUFZLFNBQVVpMUIsR0FDakMsSUFBSS9LLEVBQVF4N0IsS0FDUndtQyxFQUFVeG1DLEtBQUs4VixFQUNuQixRQUFnQmhHLElBQVowMkIsR0FBNEMsSUFBbkJBLEVBQVFwb0MsT0FDakMsTUFBTSxJQUFJTixNQUFNLHlCQUVwQixJQUFJbVQsRUFBYXpULEtBQUtFLE1BQU1zQyxLQUFLaVIsV0FBYWpSLEtBQUtva0Msb0JBQ25EbnpCLEVBQWF6VCxLQUFLMEQsSUFBSXNsQyxFQUFRcG9DLE9BQVE2UyxHQUN0QyxJQUFJaEYsRUFBT3czQixFQUFVbEUsaUJBQWlCdi9CLEtBQUtxaUMsU0FBVW1FLEVBQVNELEVBQWF0MUIsRUFBWWpSLEtBQUt3K0IsZUFBZ0J4K0IsS0FBSzIrQixhQUFjMytCLEtBQUt2QyxRQUNoSXFSLEVBQVM5TyxLQUFLbW1DLE9BQU9LLEVBQVN4bUMsS0FBSzBsQyxZQUFhejVCLEVBQU1zNkIsR0FDdER4TSxFQUFLNUMsRUFBS2lDLFdBQVd0cUIsR0FBU3daLEVBQVV5UixFQUFHelIsUUFBUytkLEVBQVl0TSxFQUFHekMsUUFDdkVoUCxFQUFVQSxFQUFReHBCLEtBQUksU0FBVXVXLEdBQUssT0FBT0EsRUFBRXVILE1BQU0sRUFBRzRlLEVBQU12cUIsV0FBYSxJQUMxRW8xQixFQUFZQSxFQUFVdm5DLEtBQUksU0FBVXVXLEdBQUssT0FBT0EsRUFBRXVILE1BQU0sRUFBRzRlLEVBQU12cUIsV0FBYSxJQUM5RSxJQUFJdzFCLEVBQTRCanBDLEtBQUswQyxJQUFJLEVBQUdGLEtBQUs4akMsa0JBQW9CLEdBQ2pFNUksRUFBS2w3QixLQUFLMG1DLGtCQUFrQkwsRUFBV3JtQyxLQUFLaVIsV0FBWXcxQixHQUE0QkUsRUFBU3pMLEVBQUd5TCxPQUFRQyxFQUFPMUwsRUFBRzBMLEtBQ2xIL0osRUFBSzc4QixLQUFLNm1DLDJCQUEyQnZlLEVBQVMrZCxFQUFXTSxFQUFRQyxHQUFPaHJCLEVBQU9paEIsRUFBR2poQixLQUFNOEssRUFBT21XLEVBQUduVyxLQUFNNFUsRUFBT3VCLEVBQUd2QixLQUNsSDk3QixFQUFPLENBQUMrbUMsRUFBWW5vQyxPQUFRb29DLEVBQVFwb0MsUUFDcEMyZ0MsRUFBUSxJQUFJcGdDLEVBQU8wN0IsYUFBYXplLEVBQU04SyxFQUFNNFUsRUFBTTk3QixHQUNsRHNuQyxFQUFTbm9DLEVBQU8rQixVQUFVcStCLEVBQU8sTUFDakNnSSxFQUFZcG9DLEVBQU9nL0IsT0FBT21KLEdBQzFCaFEsRUFBVXlQLEVBQVlub0MsT0FHdEJvVCxFQUFZdzFCLEVBRkRwUSxFQUFNcVEsVUFBVUYsRUFBVXplLFFBQVN3TyxFQUFTOTJCLEtBQUtpUixZQUNqRDJsQixFQUFNcVEsVUFBVUYsRUFBVXZtQyxPQUFRczJCLEVBQVM5MkIsS0FBS2lSLFlBQ2JqUixLQUFLd1IsV0FDbkR3QixFQUFVaFQsS0FBS2dULFFBQ2JoVCxLQUFLZ1QsUUFBVSxFQUNmK3JCLEVBQU01VCxPQUFTLElBQ1gsSUFDQSxHQUNOK2IsRUFBV25JLEVBQ1YzRCxZQUNBNXpCLFFBQU8sU0FBVXRILEVBQUt5SCxHQUFPLE9BQVFBLEVBQU16SCxFQUFNeUgsRUFBTXpILENBQU0sR0FBRyxHQUNyRTYrQixFQUFRQSxFQUFNamdDLEtBQUksU0FBVThELEdBQVMsT0FBUUEsRUFBUXNrQyxFQUFXbDBCLEVBQVUsRUFBSXBRLENBQVEsSUFDdEZtOEIsRUFBUXBnQyxFQUFPbTlCLGVBQWVpRCxHQUM5QixJQUFJaUgsRUFBa0JobUMsS0FBS21uQyxvQkFBb0JwSSxFQUFNM0QsWUFBYXBvQixHQUM5RDh5QixFQUFPL0csRUFBTTlELFVBQ2I4SyxFQUFPaEgsRUFBTTVELFVBWWpCLE9BWEFuN0IsS0FBS29uQyxrQ0FBa0MsQ0FDbkNDLGNBQWU3MUIsRUFDZjgxQixjQUFldG5DLEtBQUt3UixVQUNwQnMwQixLQUFNQSxFQUNOQyxLQUFNQSxFQUNOd0IsYUFBYyxFQUNkdjBCLFFBQVNBLEVBQ1QrbEIsVUFBV2dHLEVBQU0vRCxVQUFVLEdBQzNCZ0wsZ0JBQWlCQSxJQUVyQmhtQyxLQUFLa21DLDZCQUNFbG1DLEtBQUs4a0MsZ0JBQ2hCLEVBQ0FoTCxFQUFLemdCLFVBQVV1c0Isb0NBQXNDLFdBQ2pELElBQWVydUIsRUFBTnZYLEtBQWF1WCxFQUFHekIsRUFBaEI5VixLQUF1QjhWLEVBQ2hDLEdBQUl5QixFQUFHLENBQ0gsR0FBSUEsRUFBRW5aLFNBQVcwWCxFQUFFMVgsT0FDZixNQUFNLElBQUlOLE1BQU0sbUNBRXBCLEdBQTBCLGdCQUF0QmtDLEtBQUtxa0MsYUFBZ0MsQ0FDckMsSUFDSW1ELEVBREt4bkMsS0FBS3NrQyxhQUFlLEVBQ0gsR0FBTyxFQUFNdGtDLEtBQUtza0MsY0FBekIsSUFBMEMsS0FDN0R0a0MsS0FBSysrQixNQUFRLytCLEtBQUt5bkMscUNBQXFDem5DLEtBQUsrK0IsTUFBT3huQixFQUFHaXdCLEVBQzFFLENBQ0osQ0FDSixFQUNBMU4sRUFBS3pnQixVQUFVN1UsS0FBTyxXQUNsQixJQUFJK2lDLEVBQWV2bkMsS0FBSzBrQyxrQkFBa0I2QyxhQUkxQyxPQUhJQSxFQUFldm5DLEtBQUtxbEMsY0FDcEJybEMsS0FBSzBuQyxtQkFBbUJILEdBRXJCdm5DLEtBQUswa0Msa0JBQWtCNkMsWUFDbEMsRUFDQXpOLEVBQUt6Z0IsVUFBVXN1QixhQUFlLFdBQzFCLE9BQU8zbkMsS0FBS3dSLFNBQ2hCLEVBQ0Fzb0IsRUFBS3pnQixVQUFVa3NCLGlCQUFtQixTQUFVenZCLEdBQ3hDLElBR3NCMVEsRUFIUG9MLEVBQU54USxLQUFzQndRLFdBQVlTLEVBQWxDalIsS0FBa0RpUixXQUV2RDIyQixFQUFrQm5FLEVBQVUxRixjQUFjdnRCLEVBQVl4USxLQUFLdkMsUUFJM0Rza0MsRUFBUyxFQUFJdmtDLEtBQUtFLE1BRkwsS0FESzBILEVBR1k1SCxLQUFLNHNCLElBQUl0VSxFQUFFMVgsT0FBUSxJQUFPLElBRnJDLEVBQUlaLEtBQUtpaEIsTUFBTXJaLElBR2xDNjRCLEVBQVN6Z0MsS0FBSzBDLElBQUksRUFBRzFDLEtBQUtFLE1BQU1GLEtBQUtpaEIsTUFOOUIsU0FBVXJaLEdBQUssT0FBTzVILEtBQUttWCxJQUFJdlAsR0FBSzVILEtBQUttWCxJQUFJLEVBQUksQ0FNYjJhLENBQUt4WixFQUFFMVgsV0FDdEQ0QixLQUFLcWlDLFNBQVd2RSxFQUFLZ0UsV0FBV2hzQixFQUFHN0UsRUFBWTh3QixFQUFRL2hDLEtBQUt2QyxRQUM1RCxJQUNJeTlCLEVBQUswTSxFQUFnQjl4QixFQURUZ29CLEVBQUtzRSxjQUFjcGlDLEtBQUtxaUMsVUFDRHB4QixFQUFZZ3RCLEdBQ25ELE1BQU8sQ0FBRWtILFdBRDZEakssRUFBRzVTLFFBQzNDOGMsYUFEOERsSyxFQUFHNUQsUUFFbkcsRUFDQXdDLEVBQUt6Z0IsVUFBVW1zQixtQkFBcUIsU0FBVTF2QixFQUFHN0UsRUFBWWl6QixRQUNuQyxJQUFsQkEsSUFBNEJBLEVBQWdCLEdBQ2hELElBQUluSyxFQUFLLzVCLEtBQU1rN0IsRUFBS25CLEVBQUdvTCxXQUFZQSxPQUFvQixJQUFQakssRUFBZ0IsR0FBS0EsRUFBSTJCLEVBQUs5QyxFQUFHcUwsYUFBY0EsT0FBc0IsSUFBUHZJLEVBQWdCLEdBQUtBLEVBQUlpSCxFQUFvQi9KLEVBQUcrSixrQkFDMUorRCxFQUFLN25DLEtBQUswbUMsa0JBQWtCdEIsRUFBY24wQixFQUFZNnlCLEdBQW9CNkMsRUFBU2tCLEVBQUdsQixPQUFRQyxFQUFPaUIsRUFBR2pCLEtBQ3hHa0IsRUFBSzluQyxLQUFLNm1DLDJCQUEyQjFCLEVBQVlDLEVBQWN1QixFQUFRQyxHQUFPaHJCLEVBQU9rc0IsRUFBR2xzQixLQUFNOEssRUFBT29oQixFQUFHcGhCLEtBQU00VSxFQUFPd00sRUFBR3hNLEtBQ3hIOTdCLEVBQU8sQ0FBQ3NXLEVBQUUxWCxPQUFRMFgsRUFBRTFYLFFBQ3BCMnBDLEVBQWUsSUFBSXBwQyxFQUFPMDdCLGFBQWF6ZSxFQUFNOEssRUFBTTRVLEVBQU05N0IsR0FDekR5VCxFQUFZdFUsRUFBT3NVLFVBQVU4MEIsR0FDN0JDLEVBQWFycEMsRUFBTzg4QixpQkFBaUJzTSxFQUFjOTBCLEdBQ25EN0IsRUFBSXpTLEVBQU91dEIsU0FBU3Z0QixFQUFPMFIsSUFBSTAzQixFQUFjOTBCLEdBQVkrMEIsR0FDekQzMkIsRUFBSTFTLEVBQU9pOUIsZUFBZXhxQixFQUFHOHlCLEdBQzdCeHZCLEVBQUkvVixFQUFPaTlCLGVBQWVvTSxFQUFZLEVBQU05RCxHQUVoRCxPQURhdmxDLEVBQU8wUixJQUFJZ0IsRUFBR3FELEVBRS9CLEVBQ0FvbEIsRUFBS3pnQixVQUFVb3VCLHFDQUF1QyxTQUFVUSxFQUFlLzFCLEVBQVFzMUIsRUFBU1UsUUFDeEUsSUFBaEJBLElBQTBCQSxFQUFjLEdBQzVDLElBQUlDLEVBQWVDLEVBQWlCSCxFQUFlLzFCLEVBQVFnMkIsRUFBYVYsR0FFeEUsT0FBT2EsRUFEUEYsRUFBZXhwQyxFQUFPbTlCLGVBQWVxTSxHQUV6QyxFQUNBck8sRUFBS3pnQixVQUFVcXRCLGtCQUFvQixTQUFVTCxFQUFXOTRCLEVBQUd1MkIsRUFBbUJ3RSxFQUFPQyxRQUN2RCxJQUF0QnpFLElBQWdDQSxFQUFvQixRQUMxQyxJQUFWd0UsSUFBb0JBLEVBQVEsU0FDZCxJQUFkQyxJQUF3QkEsRUFBWSxHQUl4QyxJQUhBLElBQUlyMkIsRUFBVTFVLEtBQUttWCxJQUFJcEgsR0FBSy9QLEtBQUttWCxJQUFJLEdBQU00ekIsRUFDdkNwSyxFQUFNdkgsRUFBTTdoQixNQUFNc3hCLEVBQVVqb0MsUUFDNUIwUSxFQUFTOG5CLEVBQU03aEIsTUFBTXN4QixFQUFVam9DLFFBQzFCRSxFQUFJLEVBQUdBLEVBQUkrbkMsRUFBVWpvQyxPQUFRRSxJQUFLLENBQ3ZDLElBQUlrcUMsRUFBSyxFQUNMQyxFQUFLanlCLElBQ0xreUIsRUFBTSxFQUNOQyxFQUFldEMsRUFBVS9uQyxHQUN6QnNxQyxFQUFlRCxFQUFheE0sUUFBTyxTQUFVdjNCLEdBQUssT0FBT0EsRUFBSSxDQUFLLElBQ3RFLEdBQUlna0MsRUFBYXhxQyxRQUFVMGxDLEVBQW1CLENBQzFDLElBQUlqaEMsRUFBUXJGLEtBQUtFLE1BQU1vbUMsR0FDbkIrRSxFQUFnQi9FLEVBQW9CamhDLEVBQ3BDQSxFQUFRLEdBQ1JzN0IsRUFBSTcvQixHQUFLc3FDLEVBQWEvbEMsRUFBUSxHQUMxQmdtQyxFQUFnQmxGLElBQ2hCeEYsRUFBSTcvQixJQUNBdXFDLEdBQWlCRCxFQUFhL2xDLEdBQVMrbEMsRUFBYS9sQyxFQUFRLE1BSXBFczdCLEVBQUk3L0IsR0FBS3VxQyxFQUFnQkQsRUFBYSxFQUU5QyxNQUNTQSxFQUFheHFDLE9BQVMsSUFDM0IrL0IsRUFBSTcvQixHQUFLczRCLEVBQU0xMkIsSUFBSTBvQyxJQUV2QixJQUFLLElBQUl4akMsRUFBSSxFQUFHQSxFQUFJa2pDLEVBQU9sakMsSUFBSyxDQUU1QixJQURBLElBQUl3UixFQUFPLEVBQ0Y1WCxFQUFJLEVBQUdBLEVBQUlxbkMsRUFBVS9uQyxHQUFHRixPQUFRWSxJQUFLLENBQzFDLElBQUk0RixFQUFJeWhDLEVBQVUvbkMsR0FBR1UsR0FBS20vQixFQUFJNy9CLEdBRTFCc1ksR0FEQWhTLEVBQUksRUFDSXBILEtBQUtzWixLQUFNbFMsRUFBSThqQyxHQUdmLENBRWhCLENBQ0EsR0FBSWxyQyxLQUFLd1osSUFBSUosRUFBTzFFLEdBQVV5eEIsRUFDMUIsTUFFQS9zQixFQUFPMUUsRUFFUHcyQixHQUFPRixHQURQQyxFQUFLQyxJQUNhLEdBR2xCRixFQUFLRSxFQUNERCxJQUFPanlCLElBQ1BreUIsR0FBTyxFQUdQQSxHQUFPRixFQUFLQyxHQUFNLEVBRzlCLENBRUEsR0FEQTM1QixFQUFPeFEsR0FBS29xQyxFQUNSdkssRUFBSTcvQixHQUFLLEVBQUssQ0FDZCxJQUFJd3FDLEVBQW1CbFMsRUFBTXJOLEtBQUtvZixHQUM5Qjc1QixFQUFPeFEsR0FBS3NsQyxFQUFtQmtGLElBQy9CaDZCLEVBQU94USxHQUFLc2xDLEVBQW1Ca0YsRUFFdkMsS0FDSyxDQUNELElBQUlDLEVBQWdCblMsRUFBTXJOLEtBQUs4YyxFQUFVdm5DLElBQUk4M0IsRUFBTXJOLE9BQy9DemEsRUFBT3hRLEdBQUtzbEMsRUFBbUJtRixJQUMvQmo2QixFQUFPeFEsR0FBS3NsQyxFQUFtQm1GLEVBRXZDLENBQ0osQ0FDQSxNQUFPLENBQUVwQyxPQUFRNzNCLEVBQVE4M0IsS0FBTXpJLEVBQ25DLEVBQ0FyRSxFQUFLemdCLFVBQVV3dEIsMkJBQTZCLFNBQVUxQixFQUFZQyxFQUFjdUIsRUFBUUMsR0FNcEYsSUFMQSxJQUFJcE8sRUFBVzJNLEVBQVcvbUMsT0FDdEI2UyxFQUFhazBCLEVBQVcsR0FBRy9tQyxPQUMzQndkLEVBQU9nYixFQUFNN2hCLE1BQU15akIsRUFBV3ZuQixHQUM5QnlWLEVBQU9rUSxFQUFNN2hCLE1BQU15akIsRUFBV3ZuQixHQUM5QnFxQixFQUFPMUUsRUFBTTdoQixNQUFNeWpCLEVBQVd2bkIsR0FDekIzUyxFQUFJLEVBQUdBLEVBQUlrNkIsRUFBVWw2QixJQUMxQixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSWlTLEVBQVlqUyxJQUFLLENBQ2pDLElBQUkySSxFQUFNLEdBQ2dCLElBQXRCdzlCLEVBQVc3bUMsR0FBR1UsS0FJZDJJLEVBREF3OUIsRUFBVzdtQyxHQUFHVSxLQUFPVixFQUNmLEVBRUQ4bUMsRUFBYTltQyxHQUFHVSxHQUFLNG5DLEVBQUt0b0MsSUFBTSxFQUMvQixFQUdBZCxLQUFLc1osTUFBT3N1QixFQUFhOW1DLEdBQUdVLEdBQUs0bkMsRUFBS3RvQyxJQUFNcW9DLEVBQU9yb0MsSUFFN0RzZCxFQUFLdGQsRUFBSTJTLEVBQWFqUyxHQUFLVixFQUMzQm9vQixFQUFLcG9CLEVBQUkyUyxFQUFhalMsR0FBS21tQyxFQUFXN21DLEdBQUdVLEdBQ3pDczhCLEVBQUtoOUIsRUFBSTJTLEVBQWFqUyxHQUFLMkksRUFDL0IsQ0FFSixNQUFPLENBQUVpVSxLQUFNQSxFQUFNOEssS0FBTUEsRUFBTTRVLEtBQU1BLEVBQzNDLEVBQ0F4QixFQUFLemdCLFVBQVV3c0IsaUNBQW1DLFdBTTlDLElBTEEsSUFBSXJLLEVBQVF4N0IsS0FDUmdULEVBQVVoVCxLQUFLcWxDLGFBQ2Z0QixFQUFjL2pDLEtBQUsrakMsWUFDbkJpRixFQUFjaHBDLEtBQUsrK0IsTUFBTTNELFlBQ3pCOEwsRUFBVyxFQUNONW9DLEVBQUksRUFBR0EsRUFBSTBxQyxFQUFZNXFDLE9BQVFFLElBQUssQ0FDekMsSUFBSXNFLEVBQVFvbUMsRUFBWTFxQyxHQUNwQjRvQyxFQUFXOEIsRUFBWTFxQyxLQUN2QjRvQyxFQUFXdGtDLEVBRW5CLENBQ0EsSUFBSW04QixFQUFRLytCLEtBQUsrK0IsTUFBTWpnQyxLQUFJLFNBQVU4RCxHQUNqQyxPQUFJQSxFQUFRc2tDLEVBQVdsMEIsRUFDWixFQUdBcFEsQ0FFZixJQUNBNUMsS0FBS3dSLFVBQVlvbEIsRUFBTTdoQixNQUFNZ3FCLEVBQU01VCxPQUFPcnNCLEtBQUksV0FDMUMsT0FBTzgzQixFQUFNN2hCLE1BQU1ndkIsR0FBYWpsQyxLQUFJLFdBQ2hDLE9BQXFDLEdBQTlCODNCLEVBQU11QyxRQUFRcUMsRUFBTS85QixRQUFnQixFQUMvQyxHQUNKLElBQ0EsSUFBSTY1QixFQUFVLEdBQ1Z3TyxFQUFPLEdBQ1BDLEVBQU8sR0FDUGhMLEVBQWVnRSxFQUFNbEUsU0FDekIsSUFBU3Y4QixFQUFJLEVBQUdBLEVBQUl5OEIsRUFBYTM4QixPQUFRRSxJQUFLLENBQzFDLElBQUkycUMsRUFBUWxPLEVBQWF6OEIsR0FDckIycUMsRUFBTXJtQyxRQUNOMDBCLEVBQVFycUIsS0FBS2c4QixFQUFNcm1DLE9BQ25CbWpDLEVBQUs5NEIsS0FBS2c4QixFQUFNaHJCLEtBQ2hCNm5CLEVBQUs3NEIsS0FBS2c4QixFQUFNdlksS0FFeEIsQ0FFQSxNQUFPLENBQUVvVixLQUFNQSxFQUFNQyxLQUFNQSxFQUFNQyxnQkFEWGhtQyxLQUFLbW5DLG9CQUFvQjdQLEVBQVN0a0IsR0FFNUQsRUFDQThtQixFQUFLemdCLFVBQVU4dEIsb0JBQXNCLFNBQVU3UCxFQUFTdGtCLEdBQ3BELElBQUlsRSxFQUFTOG5CLEVBQU1NLE9BQU9JLEVBQVFsNUIsUUFBUyxHQUN2QzhCLEVBQU0wMkIsRUFBTTEyQixJQUFJbzNCLEdBQ2hCa0IsRUFBV2xCLEVBQVF4NEIsS0FBSSxTQUFVb3FDLEdBQUssT0FBUUEsRUFBSWhwQyxFQUFPOFMsQ0FBUyxJQUt0RSxPQUpBd2xCLEVBQVM3MUIsU0FBUSxTQUFVeUMsRUFBRzlHLEdBQ3RCOEcsRUFBSSxJQUNKMEosRUFBT3hRLEdBQUswVSxFQUFVd2xCLEVBQVNsNkIsR0FDdkMsSUFDT3dRLENBQ1gsRUFDQWdyQixFQUFLemdCLFVBQVUrdEIsa0NBQW9DLFNBQVUrQixHQUN6RDdoQyxPQUFPOGhDLE9BQU9wcEMsS0FBSzBrQyxrQkFBbUJ5RSxFQUMxQyxFQUNBclAsRUFBS3pnQixVQUFVNnNCLDJCQUE2QixXQUN4QyxJQUFJbk0sRUFBSy81QixLQUFNaWtDLEVBQW9CbEssRUFBR2tLLGtCQUFtQkosRUFBZTlKLEVBQUc4SixhQUFjRyxFQUFxQmpLLEVBQUdpSyxtQkFDN0c5SSxFQUFLbDdCLEtBQUswa0Msa0JBQW1Cc0IsRUFBa0I5SyxFQUFHOEssZ0JBQWlCcUIsRUFBZ0JuTSxFQUFHbU0sY0FBZUMsRUFBZ0JwTSxFQUFHb00sY0FDeEhoekIsRUFBTSt5QixFQUFjLEdBQUdqcEMsT0FDdkJpckMsRUFBWWhDLEVBQWNqcEMsU0FBV2twQyxFQUFjbHBDLE9BQ25Ea3JDLEVBQTBCdEQsRUFBZ0JsbkMsS0FBSSxTQUFVZ0UsR0FBSyxPQUFPQSxFQUFJa2hDLENBQW9CLElBQzVGdUYsRUFBNEJ6SixFQUFTd0osR0FDckNFLEVBQW9CMUosRUFBU2tHLEdBQ2pDaG1DLEtBQUtvbkMsa0NBQWtDLENBQ25Db0Msa0JBQW1CQSxFQUNuQkQsMEJBQTJCQSxFQUMzQkQsd0JBQXlCQSxFQUN6QkQsVUFBV0EsRUFDWEksYUFBYzVGLEVBQ2Q5USxNQUFPOFEsRUFDUDZGLE1BQU96RixFQUNQM3ZCLElBQUtBLEdBRWIsRUFDQXdsQixFQUFLemdCLFVBQVU0c0IsdUJBQXlCLFdBQ3BDLElBQUlvQixFQUFnQnJuQyxLQUFLd1IsVUFDckI4MUIsRUFBZ0J0bkMsS0FBS3dSLFVBQ3JCdW9CLEVBQUsvNUIsS0FBSzBrQyxrQkFBbUJvQixFQUFPL0wsRUFBRytMLEtBQU1DLEVBQU9oTSxFQUFHZ00sS0FBTUMsRUFBa0JqTSxFQUFHaU0sZ0JBQ2xGaHpCLEVBQVVoVCxLQUFLcWxDLGFBQ2Z0TSxFQUFZLzRCLEtBQUsrK0IsTUFBTXRFLE1BQ3ZCUyxFQUFLeU8sRUFBYTNwQyxLQUFLbWtDLE9BQVFua0MsS0FBSzI1QixTQUFVdm9CLEVBQUk4cEIsRUFBRzlwQixFQUFHQyxFQUFJNnBCLEVBQUc3cEIsRUFDbkVyUixLQUFLb25DLGtDQUFrQyxDQUNuQ0MsY0FBZUEsRUFDZkMsY0FBZUEsRUFDZnhCLEtBQU1BLEVBQ05DLEtBQU1BLEVBQ05DLGdCQUFpQkEsRUFDakI1MEIsRUFBR0EsRUFDSEMsRUFBR0EsRUFDSDJCLFFBQVNBLEVBQ1QrbEIsVUFBV0EsR0FFbkIsRUFDQWUsRUFBS3pnQixVQUFVcXVCLG1CQUFxQixTQUFVdGlDLEdBSTFDLElBSEEsSUFBSXMvQixFQUFvQjFrQyxLQUFLMGtDLGtCQUN6Qm9CLEVBQU9wQixFQUFrQm9CLEtBQU1DLEVBQU9yQixFQUFrQnFCLEtBQU1zQixFQUFnQjNDLEVBQWtCMkMsY0FBZUMsRUFBZ0I1QyxFQUFrQjRDLGNBQWV0QixFQUFrQnRCLEVBQWtCc0IsZ0JBQWlCd0QsRUFBb0I5RSxFQUFrQjhFLGtCQUFtQkQsRUFBNEI3RSxFQUFrQjZFLDBCQUEyQkQsRUFBMEI1RSxFQUFrQjRFLHdCQUF5QkQsRUFBWTNFLEVBQWtCMkUsVUFBV0ksRUFBZS9FLEVBQWtCK0UsYUFBYzFXLEVBQVEyUixFQUFrQjNSLE1BQU8yVyxFQUFRaEYsRUFBa0JnRixNQUFPdDRCLEVBQUlzekIsRUFBa0J0ekIsRUFBR0MsRUFBSXF6QixFQUFrQnJ6QixFQUFHaUQsRUFBTW93QixFQUFrQnB3QixJQUFLdEIsRUFBVTB4QixFQUFrQjF4QixRQUFTK2xCLEVBQVkyTCxFQUFrQjNMLFVBRW5zQno2QixFQUFJLEVBQUdBLEVBQUkwbkMsRUFBZ0I1bkMsT0FBUUUsSUFDeEMsS0FBSWtyQyxFQUFrQmxyQyxHQUFLOEcsR0FBM0IsQ0FHQSxJQUFJcEcsRUFBSThtQyxFQUFLeG5DLEdBQ1RpUCxFQUFJdzRCLEVBQUt6bkMsR0FDVHNyQyxFQUFVdkMsRUFBY3JvQyxHQUN4QmdMLEVBQVFzOUIsRUFBYy81QixHQUN0QnM4QixFQUFjQyxFQUFNRixFQUFTNS9CLEdBQzdCKy9CLEVBQVksRUFDWkYsRUFBYyxJQUNkRSxHQUFhLEVBQU0zNEIsRUFBSUMsRUFBSTdULEtBQUs0c0IsSUFBSXlmLEVBQWF4NEIsRUFBSSxHQUNyRDA0QixHQUFhMzRCLEVBQUk1VCxLQUFLNHNCLElBQUl5ZixFQUFheDRCLEdBQUssR0FFaEQsSUFBSyxJQUFJek0sRUFBSSxFQUFHQSxFQUFJMFAsRUFBSzFQLElBQUssQ0FDMUIsSUFBSW9sQyxFQUFRQyxFQUFLRixHQUFhSCxFQUFRaGxDLEdBQUtvRixFQUFNcEYsSUFoQnpDLEdBaUJSZ2xDLEVBQVFobEMsSUFBTW9sQyxFQUFRalgsRUFDbEJzVyxJQUNBci9CLEVBQU1wRixLQUFPb2xDLEVBQVFqWCxFQUU3QixDQUNBeVcsRUFBa0JsckMsSUFBTTBuQyxFQUFnQjFuQyxHQUV4QyxJQURBLElBQUk0ckMsRUFBYzFzQyxLQUFLRSxPQUFPMEgsRUFBSW1rQyxFQUEwQmpyQyxJQUFNZ3JDLEVBQXdCaHJDLElBQ2pGTixFQUFJLEVBQUdBLEVBQUlrc0MsRUFBYWxzQyxJQUFLLENBQ2xDLElBQUltc0MsRUFBTXZULEVBQU0rQixXQUFXSSxFQUFXLzRCLEtBQUt2QyxRQUN2QzJzQyxFQUFVOUMsRUFBYzZDLEdBQ3hCRSxFQUFnQlAsRUFBTUYsRUFBU1EsR0FDL0JFLEVBQWMsRUFDbEIsR0FBSUQsRUFBZ0IsRUFDaEJDLEVBQWMsRUFBTVosRUFBUXI0QixFQUM1Qmk1QixJQUNLLEtBQVFELElBQWtCajVCLEVBQUk1VCxLQUFLNHNCLElBQUlpZ0IsRUFBZWg1QixHQUFLLFFBRS9ELEdBQUlyUyxJQUFNbXJDLEVBQ1gsU0FFSixJQUFTdmxDLEVBQUksRUFBR0EsRUFBSTBQLEVBQUsxUCxJQUNqQm9sQyxFQUFRLEVBQ1JNLEVBQWMsSUFDZE4sRUFBUUMsRUFBS0ssR0FBZVYsRUFBUWhsQyxHQUFLd2xDLEVBQVF4bEMsSUF4Q2pELElBMENKZ2xDLEVBQVFobEMsSUFBTW9sQyxFQUFRalgsQ0FFOUIsQ0FDQXdXLEVBQTBCanJDLElBQU00ckMsRUFBY1osRUFBd0JockMsRUF6Q3RFLENBNkNKLE9BRkFvbUMsRUFBa0IzUixNQUFRMFcsR0FBZ0IsRUFBTXJrQyxFQUFJNE4sR0FDcEQweEIsRUFBa0I2QyxjQUFnQixFQUMzQkYsQ0FDWCxFQUNBdk4sRUFBS3pnQixVQUFVMnJCLG9CQUFzQixTQUFVdUYsR0FDM0MsSUFBSS9PLEVBQVF4N0IsS0FFWixZQURzQixJQUFsQnVxQyxJQUE0QkEsRUFBZ0IsV0FBYyxPQUFPLENBQU0sR0FDcEUsSUFBSTVwQyxTQUFRLFNBQVVFLEVBQVNDLEdBQ2xDLElBQUkwRCxFQUFPLFdBQWMsT0FBT2krQixFQUFVakgsT0FBTyxPQUFRLEdBQVEsV0FDN0QsSUFBSXpCLEVBQUkvbUIsRUFBU3UwQixFQUFjaUQsRUFBZ0JDLEVBQVlDLEVBQzNELE9BQU8xSCxFQUFZaGpDLE1BQU0sU0FBVWs3QixHQUMvQixJQU1JLEdBTEFuQixFQUFLLzVCLEtBQUswa0Msa0JBQW1CMXhCLEVBQVUrbUIsRUFBRy9tQixRQUFTdTBCLEVBQWV4TixFQUFHd04sYUFDckV2bkMsS0FBS3dSLFVBQVl4UixLQUFLMG5DLG1CQUFtQkgsR0FDekNpRCxFQUFpQnhxQyxLQUFLMGtDLGtCQUFrQjZDLGFBQ3hDa0QsR0FBK0MsSUFBbENGLEVBQWNDLEdBQzNCRSxFQUFhRixJQUFtQngzQixFQUMzQnkzQixHQUFlQyxFQUloQixNQUFPLENBQUMsRUFBRzdwQyxFQUFRNnBDLElBSG5CQyxZQUFXLFdBQWMsT0FBT25tQyxHQUFRLEdBQUcsRUFLbkQsQ0FDQSxNQUFPb21DLEdBQ0g5cEMsRUFBTzhwQyxFQUNYLENBQ0EsTUFBTyxDQUFDLEVBQ1osR0FDSixHQUFJLEVBQ0pELFlBQVcsV0FBYyxPQUFPbm1DLEdBQVEsR0FBRyxFQUMvQyxHQUNKLEVBQ0FzMUIsRUFBS3pnQixVQUFVeXJCLGVBQWlCLFNBQVV5RixRQUNoQixJQUFsQkEsSUFBNEJBLEVBQWdCLFdBQWMsT0FBTyxDQUFNLEdBRzNFLElBRkEsSUFBSUcsR0FBYSxFQUNibDVCLEVBQVksSUFDUms1QixHQUFZLENBQ2hCLElBQUkzUSxFQUFLLzVCLEtBQUswa0Msa0JBQW1CMXhCLEVBQVUrbUIsRUFBRy9tQixRQUFTdTBCLEVBQWV4TixFQUFHd04sYUFDekUvMUIsRUFBWXhSLEtBQUswbkMsbUJBQW1CSCxHQUNwQyxJQUFJaUQsRUFBaUJ4cUMsS0FBSzBrQyxrQkFBa0I2QyxhQUN4Q2tELEdBQStDLElBQWxDRixFQUFjQyxHQUMvQkUsRUFBYUYsSUFBbUJ4M0IsR0FBV3kzQixDQUMvQyxDQUNBLE9BQU9qNUIsQ0FDWCxFQUNBc29CLEVBQUt6Z0IsVUFBVWdzQixXQUFhLFdBQ3hCLElBQUl0RyxFQUFRLytCLEtBQUsrK0IsTUFDakIsR0FBSS8rQixLQUFLZ1QsUUFBVSxFQUNmLE9BQU9oVCxLQUFLZ1QsUUFFaEIsSUFBSTVVLEVBQVMyZ0MsRUFBTTVULE1BQ25CLE9BQUkvc0IsR0FBVSxLQUNILElBRUZBLEdBQVUsSUFDUixJQUVGQSxHQUFVLEtBQ1IsSUFHQSxHQUVmLEVBQ08wN0IsQ0FDWCxDQTdoQlcsR0EraEJYLFNBQVMwSyxFQUFVbnZCLEVBQUd5RSxHQUVsQixJQURBLElBQUloTCxFQUFTLEVBQ0p4USxFQUFJLEVBQUdBLEVBQUkrVyxFQUFFalgsT0FBUUUsSUFDMUJ3USxHQUFVdFIsS0FBSzRzQixJQUFLL1UsRUFBRS9XLEdBQUt3YixFQUFFeGIsR0FBSyxHQUV0QyxPQUFPZCxLQUFLOEIsS0FBS3dQLEVBQ3JCLENBUEE2RSxFQUFRbW1CLEtBQU9BLEVBUWZubUIsRUFBUTZ3QixVQUFZQSxFQW9CcEI3d0IsRUFBUWszQixPQW5CUixTQUFnQngxQixFQUFHeUUsR0FJZixJQUhBLElBQUloTCxFQUFTLEVBQ1RnOEIsRUFBUSxFQUNSQyxFQUFRLEVBQ0h6c0MsRUFBSSxFQUFHQSxFQUFJK1csRUFBRWpYLE9BQVFFLElBQzFCd1EsR0FBVXVHLEVBQUUvVyxHQUFLd2IsRUFBRXhiLEdBQ25Cd3NDLEdBQVN0dEMsS0FBSzRzQixJQUFJL1UsRUFBRS9XLEdBQUksR0FDeEJ5c0MsR0FBU3Z0QyxLQUFLNHNCLElBQUl0USxFQUFFeGIsR0FBSSxHQUU1QixPQUFjLElBQVZ3c0MsR0FBeUIsSUFBVkMsRUFDUixFQUVRLElBQVZELEdBQXlCLElBQVZDLEVBQ2IsRUFHQSxFQUFNajhCLEVBQVN0UixLQUFLOEIsS0FBS3dyQyxFQUFRQyxFQUVoRCxFQUVBLElBQUlwRyxFQUNBLFdBQ0kza0MsS0FBS3VuQyxhQUFlLEVBQ3BCdm5DLEtBQUtxbkMsY0FBZ0IsR0FDckJybkMsS0FBS3NuQyxjQUFnQixHQUNyQnRuQyxLQUFLOGxDLEtBQU8sR0FDWjlsQyxLQUFLK2xDLEtBQU8sR0FDWi9sQyxLQUFLZ21DLGdCQUFrQixHQUN2QmhtQyxLQUFLd3BDLGtCQUFvQixHQUN6QnhwQyxLQUFLdXBDLDBCQUE0QixHQUNqQ3ZwQyxLQUFLc3BDLHdCQUEwQixHQUMvQnRwQyxLQUFLcXBDLFdBQVksRUFDakJycEMsS0FBS3lwQyxhQUFlLEVBQ3BCenBDLEtBQUsreUIsTUFBUSxFQUNiL3lCLEtBQUswcEMsTUFBUSxFQUNiMXBDLEtBQUtvUixFQUFJLG1CQUNUcFIsS0FBS3FSLEVBQUksa0JBQ1RyUixLQUFLc1UsSUFBTSxFQUNYdFUsS0FBS2dULFFBQVUsSUFDZmhULEtBQUsrNEIsVUFBWSxDQUNyQixFQUdKLFNBQVNrUixFQUFLNTBCLEVBQUcyMUIsR0FDYixPQUFJMzFCLEVBQUkyMUIsRUFDR0EsRUFDRjMxQixHQUFLMjFCLEdBQ0ZBLEVBRUQzMUIsQ0FDZixDQUNBLFNBQVN5MEIsRUFBTXowQixFQUFHeUUsR0FFZCxJQURBLElBQUloTCxFQUFTLEVBQ0p4USxFQUFJLEVBQUdBLEVBQUkrVyxFQUFFalgsT0FBUUUsSUFDMUJ3USxHQUFVdFIsS0FBSzRzQixJQUFJL1UsRUFBRS9XLEdBQUt3YixFQUFFeGIsR0FBSSxHQUVwQyxPQUFPd1EsQ0FDWCxDQUNBLFNBQVM2NkIsRUFBYXhGLEVBQVF4SyxHQUMxQixJQU1Jc1IsRUFBS3JVLEVBQ0pzVSxPQUFPLEVBQVksRUFBVC9HLEVBQVksS0FDdEJybEMsS0FBSSxTQUFVNkksR0FBTyxPQUFRQSxFQUFNZ3lCLEVBQVUsRUFBTWh5QixDQUFNLElBQzFEd2pDLEVBQUt2VSxFQUFNN2hCLE1BQU1rMkIsRUFBRzdzQyxRQUFRVSxLQUFJLFNBQVU2SSxFQUFLOUUsR0FFL0MsT0FEVW9vQyxFQUFHcG9DLElBQVU4MkIsRUFDVm44QixLQUFLc1osTUFBTW0wQixFQUFHcG9DLEdBQVM4MkIsR0FBV3dLLEdBQVV4OEIsQ0FDN0QsSUFFSXRGLEVBQU8sQ0FBRWdULEVBQUc0MUIsRUFBSW54QixFQUFHcXhCLEdBUW5CM1UsRUFBa0JrTixFQUF5QjBILFFBQVEvb0MsR0F0QjNDLFNBQVUwM0IsR0FDbEIsSUFBSW1CLEVBQUtsQixFQUFPRCxFQUFJLEdBQUkzb0IsRUFBSThwQixFQUFHLEdBQUk3cEIsRUFBSTZwQixFQUFHLEdBQzFDLE9BQU8sU0FBVTdsQixHQUNiLE9BQU8sR0FBTyxFQUFNakUsRUFBSTVULEtBQUs0c0IsSUFBSS9VLEVBQUksRUFBSWhFLEdBQzdDLENBQ0osR0FVYyxDQUNWd2pCLFFBQVMsSUFDVHFCLGNBSmdCLENBQUMsR0FBSyxJQUt0QnBCLG1CQUFvQixHQUNwQmdCLGNBQWUsSUFDZkMsZUFBZ0IsTUFFeURTLGdCQUN6RXVELEVBQUtDLEVBQU94RCxFQUFpQixHQUNqQyxNQUFPLENBQUVwbEIsRUFEZ0Myb0IsRUFBRyxHQUM3QjFvQixFQURxQzBvQixFQUFHLEdBRTNELENBRUEsU0FBU3FPLEVBQWlCckosRUFBTzdzQixFQUFRZzJCLEVBQWFWLEdBR2xELFlBRm9CLElBQWhCVSxJQUEwQkEsRUFBYyxRQUM1QixJQUFaVixJQUFzQkEsRUFBVSxHQUM3QnpJLEVBQU1qZ0MsS0FBSSxTQUFVOEQsRUFBT3FiLEVBQUt5UyxHQUNuQyxPQUFxQixJQUFqQnhlLEVBQU8rTCxLQUFnQyxJQUFqQi9MLEVBQU93ZSxHQUN0Qjl0QixFQUFRcEYsS0FBS3NaLEtBQUtveEIsR0FFcEJoMkIsRUFBTytMLEtBQVMvTCxFQUFPd2UsR0FDckI5dEIsRUFBUXBGLEtBQUtzWixLQUFLMHdCLEdBR2xCNWtDLENBRWYsR0FDSixDQUVBLFNBQVN5bEMsRUFBdUJKLEdBQzVCQSxFQUFnQnRwQyxFQUFPK0IsVUFBVXVuQyxFQUFlLE9BQ2hELElBQUloMUIsRUFBWXRVLEVBQU9zVSxVQUFVZzFCLEdBQzdCRCxFQUFhcnBDLEVBQU84OEIsaUJBQWlCeG9CLEVBQVdnMUIsR0FFcEQsT0FEQUEsRUFBZ0J0cEMsRUFBTzBSLElBQUk0M0IsRUFBZXRwQyxFQUFPdXRCLFNBQVNqWixFQUFXKzBCLElBQzlEcnBDLEVBQU9tOUIsZUFBZW1NLEVBQ2pDLENBRUEsU0FBU2pCLEVBQWMxZSxFQUFTZ1AsRUFBUzlsQixHQUlyQyxJQUhBLElBQUkxQyxFQUFTOG5CLEVBQ1I3aEIsTUFBTXVULEVBQVFscUIsUUFDZFUsS0FBSSxTQUFVdXNDLEdBQUssT0FBT3pVLEVBQU03aEIsTUFBTXZELEVBQVUsR0FBR3BULE9BQVMsSUFDeERFLEVBQUksRUFBR0EsRUFBSWdxQixFQUFRbHFCLE9BQVFFLElBQ2hDLElBQUssSUFBSVUsRUFBSSxFQUFHQSxFQUFJc3BCLEVBQVEsR0FBR2xxQixPQUFRWSxJQUNuQyxJQUFLLElBQUk0RixFQUFJLEVBQUdBLEVBQUk0TSxFQUFVLEdBQUdwVCxPQUFRd0csSUFBSyxDQUMxQyxJQUFJd00sRUFBSWtYLEVBQVFocUIsR0FBR1UsR0FDbkI4UCxFQUFPeFEsR0FBR3NHLElBQU0weUIsRUFBUWg1QixHQUFHVSxHQUFLd1MsRUFBVUosR0FBR3hNLEVBQ2pELENBR1IsT0FBT2tLLENBQ1gsQ0F0Q0E2RSxFQUFRZzJCLGFBQWVBLEVBZ0J2QmgyQixFQUFReTBCLGlCQUFtQkEsRUFRM0J6MEIsRUFBUTAwQix1QkFBeUJBLEVBZWpDMTBCLEVBQVFxekIsY0FBZ0JBLEMscUJDN3VCeEIsSUFBSTVNLEVBQVlwNkIsTUFBUUEsS0FBS282QixVQUFhLFNBQVVILEdBQ2hELElBQUk1WixFQUFzQixtQkFBWHVLLFFBQXlCcVAsRUFBRXJQLE9BQU9zUCxVQUFXNTdCLEVBQUksRUFDaEUsT0FBSStoQixFQUFVQSxFQUFFN0csS0FBS3lnQixHQUNkLENBQ0hqOUIsS0FBTSxXQUVGLE9BRElpOUIsR0FBSzM3QixHQUFLMjdCLEVBQUU3N0IsU0FBUTY3QixPQUFJLEdBQ3JCLENBQUVyM0IsTUFBT3EzQixHQUFLQSxFQUFFMzdCLEtBQU1vWSxNQUFPdWpCLEVBQ3hDLEVBRVIsRUFFQSxTQUFTdEIsRUFBV3Z6QixFQUFHM0gsR0FDbkIsT0FBT0QsS0FBS0UsTUFBTUQsSUFBVzJILEVBQ2pDLENBeUJBLFNBQVM2eEIsRUFBTTd4QixHQUVYLElBREEsSUFBSStVLEVBQVMsR0FDSjdiLEVBQUksRUFBR0EsRUFBSThHLEVBQUc5RyxJQUNuQjZiLEVBQU9sTixVQUFLNkMsR0FFaEIsT0FBT3FLLENBQ1gsQ0FNQSxTQUFTK2MsRUFBTzl4QixFQUFHakcsR0FDZixPQUFPODNCLEVBQU03eEIsR0FBR3RHLEtBQUksV0FBYyxPQUFPSyxDQUFHLEdBQ2hELENBRUEsU0FBUzRWLEVBQU0zUCxHQUNYLE9BQU84eEIsRUFBTzl4QixFQUFHLEVBQ3JCLENBWUEsU0FBUzZkLEVBQUkvSSxHQUNULE9BQU9BLEVBQU0xUyxRQUFPLFNBQVV5YixFQUFLdGIsR0FBTyxPQUFPc2IsRUFBTXRiLENBQUssR0FDaEUsQ0E1REFMLE9BQU91TSxlQUFlRixFQUFTLGFBQWMsQ0FBRS9RLE9BQU8sSUFJdEQrUSxFQUFRZ2xCLFdBQWFBLEVBSXJCaGxCLEVBQVF3bEIsUUFIUixTQUFpQjE3QixHQUNiLE9BQU9BLEdBQ1gsRUFvQkFrVyxFQUFRbVAsS0FsQlIsU0FBY3dvQixHQUNWLElBQUkvTyxFQUFLeEMsRUFDTGpyQixFQUFTLEVBQ2IsSUFDSSxJQUFLLElBQUl5OEIsRUFBUW5SLEVBQVNrUixHQUFNRSxFQUFVRCxFQUFNdnVDLFFBQVN3dUMsRUFBUTkwQixLQUFNODBCLEVBQVVELEVBQU12dUMsT0FBUSxDQUMzRixJQUFJeXVDLEVBQU9ELEVBQVE1b0MsTUFDbkJrTSxHQUFVdFIsS0FBSzRzQixJQUFJcWhCLEVBQU0sRUFDN0IsQ0FDSixDQUNBLE1BQU8zTyxHQUFTUCxFQUFNLENBQUVqNkIsTUFBT3c2QixFQUFTLENBQ3hDLFFBQ0ksSUFDUTBPLElBQVlBLEVBQVE5MEIsT0FBU3FqQixFQUFLd1IsRUFBTXhPLFNBQVNoRCxFQUFHdmdCLEtBQUsreEIsRUFDakUsQ0FDQSxRQUFVLEdBQUloUCxFQUFLLE1BQU1BLEVBQUlqNkIsS0FBTyxDQUN4QyxDQUNBLE9BQU85RSxLQUFLOEIsS0FBS3dQLEVBQ3JCLEVBU0E2RSxFQUFRc2pCLE1BQVFBLEVBSWhCdGpCLEVBQVFwVyxNQUhSLFNBQWU2SCxHQUNYLE9BQU82eEIsRUFBTTd4QixHQUFHdEcsS0FBSSxTQUFVNlIsRUFBR3JTLEdBQUssT0FBT0EsQ0FBRyxHQUNwRCxFQUtBcVYsRUFBUXVqQixPQUFTQSxFQUlqQnZqQixFQUFRb0IsTUFBUUEsRUFJaEJwQixFQUFRMEssS0FIUixTQUFjalosR0FDVixPQUFPOHhCLEVBQU85eEIsRUFBRyxFQUNyQixFQU9BdU8sRUFBUXUzQixPQUxSLFNBQWdCOTVCLEVBQUdDLEVBQUd0USxHQUNsQixPQUFPazJCLEVBQU1sMkIsR0FBS2pDLEtBQUksU0FBVTZSLEVBQUdyUyxHQUMvQixPQUFPOFMsRUFBSTlTLElBQU0rUyxFQUFJRCxJQUFNclEsRUFBTSxHQUNyQyxHQUNKLEVBS0E0UyxFQUFRc1AsSUFBTUEsRUFJZHRQLEVBQVE0VixLQUhSLFNBQWNyUCxHQUNWLE9BQU8rSSxFQUFJL0ksR0FBU0EsRUFBTTliLE1BQzlCLEVBU0F1VixFQUFRelQsSUFQUixTQUFhZ2EsR0FFVCxJQURBLElBQUloYSxFQUFNLEVBQ0Q1QixFQUFJLEVBQUdBLEVBQUk0YixFQUFNOWIsT0FBUUUsSUFDOUI0QixFQUFNZ2EsRUFBTTViLEdBQUs0QixFQUFNZ2EsRUFBTTViLEdBQUs0QixFQUV0QyxPQUFPQSxDQUNYLEVBV0F5VCxFQUFRKzNCLE1BVFIsU0FBZXh4QixHQUVYLElBREEsSUFBSWhhLEVBQU0sRUFDRDVCLEVBQUksRUFBR0EsRUFBSTRiLEVBQU05YixPQUFRRSxJQUM5QixJQUFLLElBQUlVLEVBQUksRUFBR0EsRUFBSWtiLEVBQU01YixHQUFHRixPQUFRWSxJQUNqQ2tCLEVBQU1nYSxFQUFNNWIsR0FBR1UsR0FBS2tCLEVBQU1nYSxFQUFNNWIsR0FBR1UsR0FBS2tCLEVBR2hELE9BQU9BLENBQ1gsRUF1QkF5VCxFQUFRNGtCLGdCQXJCUixTQUF5QkMsRUFBVUMsRUFBVWg3QixHQUV6QyxJQURBLElBQUlxUixFQUFTaUcsRUFBTXlqQixHQUNWbDZCLEVBQUksRUFBR0EsRUFBSWs2QixFQUFVbDZCLElBRTFCLElBREEsSUFBSW82QixHQUFlLEVBQ1pBLEdBQWMsQ0FHakIsSUFGQSxJQUFJMTVCLEVBQUkyNUIsRUFBV0YsRUFBVWg3QixHQUN6Qm03QixHQUFTLEVBQ0pyckIsRUFBSSxFQUFHQSxFQUFJalAsRUFBR2lQLElBQ25CLEdBQUl2TyxJQUFNOFAsRUFBT3ZCLEdBQUksQ0FDakJxckIsR0FBUyxFQUNULEtBQ0osQ0FFQ0EsSUFDREYsR0FBZSxHQUVuQjVwQixFQUFPeFEsR0FBS1UsQ0FDaEIsQ0FFSixPQUFPOFAsQ0FDWCxFQW9CQTZFLEVBQVFzekIsVUFsQlIsU0FBbUI1eEIsRUFBR2pFLEVBQUdDLEdBQ3JCLElBQUl1SyxFQUFPLEdBRVAvWSxFQUFRLEVBQ1osR0FBSXdTLEVBQUVqWCxTQUFXZ1QsRUFBSUMsRUFDakIsTUFBTSxJQUFJdlQsTUFBTSw2Q0FFcEIsSUFBSyxJQUFJUSxFQUFJLEVBQUdBLEVBQUk4UyxFQUFHOVMsSUFBSyxDQUV4QixJQURBLElBQUlveUIsRUFBTSxHQUNEMXhCLEVBQUksRUFBR0EsRUFBSXFTLEVBQUdyUyxJQUNuQjB4QixFQUFJempCLEtBQUtvSSxFQUFFeFMsSUFDWEEsR0FBUyxFQUViK1ksRUFBSzNPLEtBQUt5akIsRUFFZCxDQUNBLE9BQU85VSxDQUNYLEMsR0NySUkrdkIsRUFBMkIsQ0FBQyxFQUdoQyxTQUFTQyxFQUFvQkMsR0FFNUIsSUFBSUMsRUFBZUgsRUFBeUJFLEdBQzVDLFFBQXFCLzdCLElBQWpCZzhCLEVBQ0gsT0FBT0EsRUFBYW40QixRQUdyQixJQUFJbzRCLEVBQVNKLEVBQXlCRSxHQUFZLENBR2pEbDRCLFFBQVMsQ0FBQyxHQU9YLE9BSEFxNEIsRUFBb0JILEdBQVVyeUIsS0FBS3V5QixFQUFPcDRCLFFBQVNvNEIsRUFBUUEsRUFBT3A0QixRQUFTaTRCLEdBR3BFRyxFQUFPcDRCLE9BQ2YsQ0FHQWk0QixFQUFvQnZyQixFQUFJMnJCLEVBR3hCSixFQUFvQnYyQixFQUFJLEtBR3ZCLElBQUk0MkIsRUFBc0JMLEVBQW9CTSxPQUFFcDhCLEVBQVcsQ0FBQyxNQUFNLElBQU84N0IsRUFBb0IsUUFFN0YsT0FEc0JBLEVBQW9CTSxFQUFFRCxFQUNsQixFNUNqQ3ZCbHZDLEVBQVcsR0FDZjZ1QyxFQUFvQk0sRUFBSSxDQUFDcDlCLEVBQVFxOUIsRUFBVTlRLEVBQUkrUSxLQUM5QyxJQUFHRCxFQUFILENBTUEsSUFBSUUsRUFBZTcxQixJQUNuQixJQUFTbFksRUFBSSxFQUFHQSxFQUFJdkIsRUFBU3FCLE9BQVFFLElBQUssQ0FHekMsSUFGQSxJQUFLNnRDLEVBQVU5USxFQUFJK1EsR0FBWXJ2QyxFQUFTdUIsR0FDcEN1a0MsR0FBWSxFQUNQN2pDLEVBQUksRUFBR0EsRUFBSW10QyxFQUFTL3RDLE9BQVFZLE1BQ3BCLEVBQVhvdEMsR0FBc0JDLEdBQWdCRCxJQUFhOWtDLE9BQU9DLEtBQUtxa0MsRUFBb0JNLEdBQUc1Z0IsT0FBTzVqQixHQUFTa2tDLEVBQW9CTSxFQUFFeGtDLEdBQUt5a0MsRUFBU250QyxNQUM5SW10QyxFQUFTMWdCLE9BQU96c0IsSUFBSyxJQUVyQjZqQyxHQUFZLEVBQ1R1SixFQUFXQyxJQUFjQSxFQUFlRCxJQUc3QyxHQUFHdkosRUFBVyxDQUNiOWxDLEVBQVMwdUIsT0FBT250QixJQUFLLEdBQ3JCLElBQUlxRyxFQUFJMDJCLFNBQ0V2ckIsSUFBTm5MLElBQWlCbUssRUFBU25LLEVBQy9CLENBQ0QsQ0FDQSxPQUFPbUssQ0FuQlAsQ0FKQ3M5QixFQUFXQSxHQUFZLEVBQ3ZCLElBQUksSUFBSTl0QyxFQUFJdkIsRUFBU3FCLE9BQVFFLEVBQUksR0FBS3ZCLEVBQVN1QixFQUFJLEdBQUcsR0FBSzh0QyxFQUFVOXRDLElBQUt2QixFQUFTdUIsR0FBS3ZCLEVBQVN1QixFQUFJLEdBQ3JHdkIsRUFBU3VCLEdBQUssQ0FBQzZ0QyxFQUFVOVEsRUFBSStRLEVBcUJqQixFNkN6QmRSLEVBQW9CaG5DLEVBQUksQ0FBQytPLEVBQVMyNEIsS0FDakMsSUFBSSxJQUFJNWtDLEtBQU80a0MsRUFDWFYsRUFBb0IzUixFQUFFcVMsRUFBWTVrQyxLQUFTa2tDLEVBQW9CM1IsRUFBRXRtQixFQUFTak0sSUFDNUVKLE9BQU91TSxlQUFlRixFQUFTak0sRUFBSyxDQUFFb00sWUFBWSxFQUFNN0QsSUFBS3E4QixFQUFXNWtDLElBRTFFLEVDTkRra0MsRUFBb0IzWSxFQUFJLENBQUMsRUFHekIyWSxFQUFvQjlvQyxFQUFLeXBDLEdBQ2pCNXJDLFFBQVErQixJQUFJNEUsT0FBT0MsS0FBS3FrQyxFQUFvQjNZLEdBQUd6ckIsUUFBTyxDQUFDeEcsRUFBVTBHLEtBQ3ZFa2tDLEVBQW9CM1ksRUFBRXZyQixHQUFLNmtDLEVBQVN2ckMsR0FDN0JBLElBQ0wsS0NOSjRxQyxFQUFvQno2QixFQUFLbzdCLEdBRVpBLEVBQVUsTUNIdkJYLEVBQW9CbFksRUFBSSxXQUN2QixHQUEwQixpQkFBZjhZLFdBQXlCLE9BQU9BLFdBQzNDLElBQ0MsT0FBT3hzQyxNQUFRLElBQUl5c0MsU0FBUyxjQUFiLEVBQ2hCLENBQUUsTUFBTzNwQyxHQUNSLEdBQXNCLGlCQUFYNHBDLE9BQXFCLE9BQU9BLE1BQ3hDLENBQ0EsQ0FQdUIsR0NBeEJkLEVBQW9CM1IsRUFBSSxDQUFDMW1CLEVBQUtvNUIsSUFBVXJsQyxPQUFPK1IsVUFBVW5SLGVBQWVzUixLQUFLakcsRUFBS281QixHQ0NsRmYsRUFBb0JqbkMsRUFBS2dQLElBQ0gsb0JBQVhpWCxRQUEwQkEsT0FBT2dpQixhQUMxQ3RsQyxPQUFPdU0sZUFBZUYsRUFBU2lYLE9BQU9naUIsWUFBYSxDQUFFaHFDLE1BQU8sV0FFN0QwRSxPQUFPdU0sZUFBZUYsRUFBUyxhQUFjLENBQUUvUSxPQUFPLEdBQU8sRSxNQ0w5RCxJQUFJaXFDLEVBQ0FqQixFQUFvQmxZLEVBQUVvWixnQkFBZUQsRUFBWWpCLEVBQW9CbFksRUFBRXFaLFNBQVcsSUFDdEYsSUFBSUMsRUFBV3BCLEVBQW9CbFksRUFBRXNaLFNBQ3JDLElBQUtILEdBQWFHLElBQ2JBLEVBQVNDLGdCQUNaSixFQUFZRyxFQUFTQyxjQUFjcmpDLE1BQy9CaWpDLEdBQVcsQ0FDZixJQUFJSyxFQUFVRixFQUFTRyxxQkFBcUIsVUFDNUMsR0FBR0QsRUFBUTl1QyxPQUVWLElBREEsSUFBSUUsRUFBSTR1QyxFQUFROXVDLE9BQVMsRUFDbEJFLEdBQUssSUFBTXV1QyxHQUFXQSxFQUFZSyxFQUFRNXVDLEtBQUtzTCxHQUV4RCxDQUlELElBQUtpakMsRUFBVyxNQUFNLElBQUkvdUMsTUFBTSx5REFDaEMrdUMsRUFBWUEsRUFBVU8sUUFBUSxPQUFRLElBQUlBLFFBQVEsUUFBUyxJQUFJQSxRQUFRLFlBQWEsS0FDcEZ4QixFQUFvQjV0QyxFQUFJNnVDLEMsV0NsQnhCakIsRUFBb0J2NkIsRUFBSTlHLEtBQUt3aUMsU0FBVyxHQUl4QyxJQUFJTSxFQUFrQixDQUNyQixJQUFLLEdBZ0JOekIsRUFBb0IzWSxFQUFFMzBCLEVBQUksQ0FBQ2l1QyxFQUFTdnJDLEtBRS9CcXNDLEVBQWdCZCxJQUVsQk8sY0FBY2xCLEVBQW9CNXRDLEVBQUk0dEMsRUFBb0J6NkIsRUFBRW83QixHQUU5RCxFQUdELElBQUllLEVBQXFCL2lDLEtBQTJCLHFCQUFJQSxLQUEyQixzQkFBSyxHQUNwRmdqQyxFQUE2QkQsRUFBbUJyZ0MsS0FBSzhELEtBQUt1OEIsR0FDOURBLEVBQW1CcmdDLEtBdkJDNUssSUFDbkIsSUFBSzhwQyxFQUFVcUIsRUFBYUMsR0FBV3ByQyxFQUN2QyxJQUFJLElBQUl3cEMsS0FBWTJCLEVBQ2hCNUIsRUFBb0IzUixFQUFFdVQsRUFBYTNCLEtBQ3JDRCxFQUFvQnZyQixFQUFFd3JCLEdBQVkyQixFQUFZM0IsSUFJaEQsSUFERzRCLEdBQVNBLEVBQVE3QixHQUNkTyxFQUFTL3RDLFFBQ2RpdkMsRUFBZ0JsQixFQUFTNUksT0FBUyxFQUNuQ2dLLEVBQTJCbHJDLEVBQUssQyxLbkRuQjdCckYsRUFBTzR1QyxFQUFvQnYyQixFQUMvQnUyQixFQUFvQnYyQixFQUFJLElBQ2hCdTJCLEVBQW9COW9DLEVBQUUsS0FBS2lnQyxLQUFLL2xDLEdvRER4QyxJQUFJaXZDLEVBQXNCTCxFQUFvQnYyQixJIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcGVwdGlkZXMvd2VicGFjay9ydW50aW1lL2NodW5rIGxvYWRlZCIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3J1bnRpbWUvc3RhcnR1cCBjaHVuayBkZXBlbmRlbmNpZXMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvdHlwZWQtbWV0cmljcy9jb25zdHMuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvcmFuZG9tLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3ZlY3Rvci1vcGVyYXRpb25zLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL2Rpc3RhbmNlLW1hdHJpeC9wcm94eS5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy9kaXN0YW5jZS1tYXRyaXgvZGlzdGFuY2UtbWF0cml4LXNlcnZpY2UuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvc3BlLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3R5cGVkLW1ldHJpY3MvdHlwZWQtbWV0cmljcy5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy9iaXQtYXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvcmVkdWNlLWRpbWVuc2lvbmFsaXR5LmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL2Rpc3RhbmNlLW1hdHJpeC9kaXN0YW5jZS1tYXRyaXguanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvd29ya2Vycy9kaW1lbnNpb25hbGl0eS1yZWR1Y2VyLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL0BrZWNrZWx0L3RzbmUvbGliL2luZGV4LmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL0BrZWNrZWx0L3RzbmUvbGliL3RzbmUuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvaXMtYW55LWFycmF5L3NyYy9pbmRleC5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1sZXZlbmJlcmctbWFycXVhcmR0L3NyYy9lcnJvckNhbGN1bGF0aW9uLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL21sLW1hdHJpeC9ub2RlX21vZHVsZXMvaXMtYW55LWFycmF5L2xpYi1lc20vaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtYXJyYXktcmVzY2FsZS9ub2RlX21vZHVsZXMvaXMtYW55LWFycmF5L2xpYi1lc20vaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtYXJyYXktbWF4L25vZGVfbW9kdWxlcy9pcy1hbnktYXJyYXkvbGliLWVzbS9pbmRleC5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1hcnJheS1taW4vbm9kZV9tb2R1bGVzL2lzLWFueS1hcnJheS9saWItZXNtL2luZGV4LmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL21sLWFycmF5LXJlc2NhbGUvbGliLWVzNi9pbmRleC5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1hcnJheS1taW4vbGliLWVzNi9pbmRleC5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1hcnJheS1tYXgvbGliLWVzNi9pbmRleC5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1tYXRyaXgvc3JjL2luc3BlY3QuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtbWF0cml4L3NyYy91dGlsLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL21sLW1hdHJpeC9zcmMvbWF0cml4LmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL21sLW1hdHJpeC9zcmMvc3RhdC5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1tYXRyaXgvc3JjL21hdGhPcGVyYXRpb25zLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL21sLW1hdHJpeC9zcmMvd3JhcC9XcmFwcGVyTWF0cml4MkQuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtbWF0cml4L3NyYy9kYy9sdS5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1tYXRyaXgvc3JjL2RjL3V0aWwuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtbWF0cml4L3NyYy9kYy9xci5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1tYXRyaXgvc3JjL2RjL3N2ZC5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1sZXZlbmJlcmctbWFycXVhcmR0L3NyYy9zdGVwLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL21sLW1hdHJpeC9zcmMvZGVjb21wb3NpdGlvbnMuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtbGV2ZW5iZXJnLW1hcnF1YXJkdC9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvdW1hcC1qcy9kaXN0L2hlYXAuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvdW1hcC1qcy9kaXN0L2luZGV4LmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL3VtYXAtanMvZGlzdC9tYXRyaXguanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvdW1hcC1qcy9kaXN0L25uX2Rlc2NlbnQuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvdW1hcC1qcy9kaXN0L3RyZWUuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvdW1hcC1qcy9kaXN0L3VtYXAuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvdW1hcC1qcy9kaXN0L3V0aWxzLmpzIiwid2VicGFjazovL3BlcHRpZGVzL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL3BlcHRpZGVzL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3J1bnRpbWUvZW5zdXJlIGNodW5rIiwid2VicGFjazovL3BlcHRpZGVzL3dlYnBhY2svcnVudGltZS9nZXQgamF2YXNjcmlwdCBjaHVuayBmaWxlbmFtZSIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3J1bnRpbWUvZ2xvYmFsIiwid2VicGFjazovL3BlcHRpZGVzL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3J1bnRpbWUvcHVibGljUGF0aCIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3J1bnRpbWUvaW1wb3J0U2NyaXB0cyBjaHVuayBsb2FkaW5nIiwid2VicGFjazovL3BlcHRpZGVzL3dlYnBhY2svc3RhcnR1cCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZGVmZXJyZWQgPSBbXTtcbl9fd2VicGFja19yZXF1aXJlX18uTyA9IChyZXN1bHQsIGNodW5rSWRzLCBmbiwgcHJpb3JpdHkpID0+IHtcblx0aWYoY2h1bmtJZHMpIHtcblx0XHRwcmlvcml0eSA9IHByaW9yaXR5IHx8IDA7XG5cdFx0Zm9yKHZhciBpID0gZGVmZXJyZWQubGVuZ3RoOyBpID4gMCAmJiBkZWZlcnJlZFtpIC0gMV1bMl0gPiBwcmlvcml0eTsgaS0tKSBkZWZlcnJlZFtpXSA9IGRlZmVycmVkW2kgLSAxXTtcblx0XHRkZWZlcnJlZFtpXSA9IFtjaHVua0lkcywgZm4sIHByaW9yaXR5XTtcblx0XHRyZXR1cm47XG5cdH1cblx0dmFyIG5vdEZ1bGZpbGxlZCA9IEluZmluaXR5O1xuXHRmb3IgKHZhciBpID0gMDsgaSA8IGRlZmVycmVkLmxlbmd0aDsgaSsrKSB7XG5cdFx0dmFyIFtjaHVua0lkcywgZm4sIHByaW9yaXR5XSA9IGRlZmVycmVkW2ldO1xuXHRcdHZhciBmdWxmaWxsZWQgPSB0cnVlO1xuXHRcdGZvciAodmFyIGogPSAwOyBqIDwgY2h1bmtJZHMubGVuZ3RoOyBqKyspIHtcblx0XHRcdGlmICgocHJpb3JpdHkgJiAxID09PSAwIHx8IG5vdEZ1bGZpbGxlZCA+PSBwcmlvcml0eSkgJiYgT2JqZWN0LmtleXMoX193ZWJwYWNrX3JlcXVpcmVfXy5PKS5ldmVyeSgoa2V5KSA9PiAoX193ZWJwYWNrX3JlcXVpcmVfXy5PW2tleV0oY2h1bmtJZHNbal0pKSkpIHtcblx0XHRcdFx0Y2h1bmtJZHMuc3BsaWNlKGotLSwgMSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRmdWxmaWxsZWQgPSBmYWxzZTtcblx0XHRcdFx0aWYocHJpb3JpdHkgPCBub3RGdWxmaWxsZWQpIG5vdEZ1bGZpbGxlZCA9IHByaW9yaXR5O1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZihmdWxmaWxsZWQpIHtcblx0XHRcdGRlZmVycmVkLnNwbGljZShpLS0sIDEpXG5cdFx0XHR2YXIgciA9IGZuKCk7XG5cdFx0XHRpZiAociAhPT0gdW5kZWZpbmVkKSByZXN1bHQgPSByO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gcmVzdWx0O1xufTsiLCJ2YXIgbmV4dCA9IF9fd2VicGFja19yZXF1aXJlX18ueDtcbl9fd2VicGFja19yZXF1aXJlX18ueCA9ICgpID0+IHtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18uZSg1MzUpLnRoZW4obmV4dCk7XG59OyIsImV4cG9ydCB2YXIgU3RyaW5nTWV0cmljc05hbWVzO1xuKGZ1bmN0aW9uIChTdHJpbmdNZXRyaWNzTmFtZXMpIHtcbiAgICBTdHJpbmdNZXRyaWNzTmFtZXNbXCJMZXZlbnNodGVpblwiXSA9IFwiTGV2ZW5zaHRlaW5cIjtcbiAgICBTdHJpbmdNZXRyaWNzTmFtZXNbXCJKYXJvV2lua2xlclwiXSA9IFwiSmFyby1XaW5rbGVyXCI7XG4gICAgU3RyaW5nTWV0cmljc05hbWVzW1wiTWFuaGF0dGFuXCJdID0gXCJNYW5oYXR0YW5cIjtcbn0pKFN0cmluZ01ldHJpY3NOYW1lcyB8fCAoU3RyaW5nTWV0cmljc05hbWVzID0ge30pKTtcbmV4cG9ydCB2YXIgVmVjdG9yTWV0cmljc05hbWVzO1xuKGZ1bmN0aW9uIChWZWN0b3JNZXRyaWNzTmFtZXMpIHtcbiAgICBWZWN0b3JNZXRyaWNzTmFtZXNbXCJFdWNsaWRlYW5cIl0gPSBcIkV1Y2xpZGVhblwiO1xufSkoVmVjdG9yTWV0cmljc05hbWVzIHx8IChWZWN0b3JNZXRyaWNzTmFtZXMgPSB7fSkpO1xuZXhwb3J0IHZhciBCaXRBcnJheU1ldHJpY3NOYW1lcztcbihmdW5jdGlvbiAoQml0QXJyYXlNZXRyaWNzTmFtZXMpIHtcbiAgICBCaXRBcnJheU1ldHJpY3NOYW1lc1tcIlRhbmltb3RvXCJdID0gXCJUYW5pbW90b1wiO1xuICAgIEJpdEFycmF5TWV0cmljc05hbWVzW1wiRGljZVwiXSA9IFwiRGljZVwiO1xuICAgIEJpdEFycmF5TWV0cmljc05hbWVzW1wiQXN5bW1ldHJpY1wiXSA9IFwiQXN5bW1ldHJpY1wiO1xuICAgIEJpdEFycmF5TWV0cmljc05hbWVzW1wiQnJhdW5CbGFucXVldFwiXSA9IFwiQnJhdW4tQmxhbnF1ZXRcIjtcbiAgICBCaXRBcnJheU1ldHJpY3NOYW1lc1tcIkNvc2luZVwiXSA9IFwiQ29zaW5lXCI7XG4gICAgQml0QXJyYXlNZXRyaWNzTmFtZXNbXCJLdWxjenluc2tpXCJdID0gXCJLdWxjenluc2tpXCI7XG4gICAgQml0QXJyYXlNZXRyaWNzTmFtZXNbXCJNY0Nvbm5hdWdoZXlcIl0gPSBcIk1jLUNvbm5hdWdoZXlcIjtcbiAgICBCaXRBcnJheU1ldHJpY3NOYW1lc1tcIlJvZ290R29sZGJlcmdcIl0gPSBcIlJvZ290LUdvbGRiZXJnXCI7XG4gICAgQml0QXJyYXlNZXRyaWNzTmFtZXNbXCJSdXNzZWxcIl0gPSBcIlJ1c3NlbFwiO1xuICAgIEJpdEFycmF5TWV0cmljc05hbWVzW1wiU29rYWxcIl0gPSBcIlNva2FsXCI7XG4gICAgQml0QXJyYXlNZXRyaWNzTmFtZXNbXCJIYW1taW5nXCJdID0gXCJIYW1taW5nXCI7XG4gICAgQml0QXJyYXlNZXRyaWNzTmFtZXNbXCJFdWNsaWRlYW5cIl0gPSBcIkV1Y2xpZGVhblwiO1xufSkoQml0QXJyYXlNZXRyaWNzTmFtZXMgfHwgKEJpdEFycmF5TWV0cmljc05hbWVzID0ge30pKTtcbmV4cG9ydCB2YXIgRGlzdGFuY2VNZXRyaWNzU3ViamVjdHM7XG4oZnVuY3Rpb24gKERpc3RhbmNlTWV0cmljc1N1YmplY3RzKSB7XG4gICAgRGlzdGFuY2VNZXRyaWNzU3ViamVjdHNbXCJWZWN0b3JcIl0gPSBcIlZlY3RvclwiO1xuICAgIERpc3RhbmNlTWV0cmljc1N1YmplY3RzW1wiU3RyaW5nXCJdID0gXCJTdHJpbmdcIjtcbiAgICBEaXN0YW5jZU1ldHJpY3NTdWJqZWN0c1tcIkJpdEFycmF5XCJdID0gXCJCaXRBcnJheVwiO1xuICAgIERpc3RhbmNlTWV0cmljc1N1YmplY3RzW1wiTWFjcm9Nb2xlY3VsZVwiXSA9IFwiTWFjcm9Nb2xlY3VsZVwiO1xuICAgIERpc3RhbmNlTWV0cmljc1N1YmplY3RzW1wiTnVtYmVyXCJdID0gXCJOdW1iZXJcIjtcbn0pKERpc3RhbmNlTWV0cmljc1N1YmplY3RzIHx8IChEaXN0YW5jZU1ldHJpY3NTdWJqZWN0cyA9IHt9KSk7XG5leHBvcnQgdmFyIE51bWJlck1ldHJpY3NOYW1lcztcbihmdW5jdGlvbiAoTnVtYmVyTWV0cmljc05hbWVzKSB7XG4gICAgTnVtYmVyTWV0cmljc05hbWVzW1wiTnVtZXJpY0Rpc3RhbmNlXCJdID0gXCJOdW1lcmljRGlzdGFuY2VcIjtcbn0pKE51bWJlck1ldHJpY3NOYW1lcyB8fCAoTnVtYmVyTWV0cmljc05hbWVzID0ge30pKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVkyOXVjM1J6TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lZMjl1YzNSekxuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCTEUxQlFVMHNRMEZCVGl4SlFVRlpMR3RDUVVsVU8wRkJTa2dzVjBGQldTeHJRa0ZCYTBJN1NVRkRNVUlzYVVSQlFUSkNMRU5CUVVFN1NVRkRNMElzYTBSQlFUUkNMRU5CUVVFN1NVRkROVUlzTmtOQlFYVkNMRU5CUVVFN1FVRkRla0lzUTBGQlF5eEZRVXBUTEd0Q1FVRnJRaXhMUVVGc1FpeHJRa0ZCYTBJc1VVRkpNMEk3UVVGRlNDeE5RVUZOTEVOQlFVNHNTVUZCV1N4clFrRkZWRHRCUVVaSUxGZEJRVmtzYTBKQlFXdENPMGxCUXpGQ0xEWkRRVUYxUWl4RFFVRkJPMEZCUTNwQ0xFTkJRVU1zUlVGR1V5eHJRa0ZCYTBJc1MwRkJiRUlzYTBKQlFXdENMRkZCUlROQ08wRkJSVWdzVFVGQlRTeERRVUZPTEVsQlFWa3NiMEpCWVZRN1FVRmlTQ3hYUVVGWkxHOUNRVUZ2UWp0SlFVTTFRaXcyUTBGQmNVSXNRMEZCUVR0SlFVTnlRaXh4UTBGQllTeERRVUZCTzBsQlEySXNhVVJCUVhsQ0xFTkJRVUU3U1VGRGVrSXNkMFJCUVdkRExFTkJRVUU3U1VGRGFFTXNlVU5CUVdsQ0xFTkJRVUU3U1VGRGFrSXNhVVJCUVhsQ0xFTkJRVUU3U1VGRGVrSXNjMFJCUVRoQ0xFTkJRVUU3U1VGRE9VSXNkMFJCUVdkRExFTkJRVUU3U1VGRGFFTXNlVU5CUVdsQ0xFTkJRVUU3U1VGRGFrSXNkVU5CUVdVc1EwRkJRVHRKUVVObUxESkRRVUZ0UWl4RFFVRkJPMGxCUTI1Q0xDdERRVUYxUWl4RFFVRkJPMEZCUTNwQ0xFTkJRVU1zUlVGaVV5eHZRa0ZCYjBJc1MwRkJjRUlzYjBKQlFXOUNMRkZCWVRkQ08wRkJSVWdzVFVGQlRTeERRVUZPTEVsQlFWa3NkVUpCVFZRN1FVRk9TQ3hYUVVGWkxIVkNRVUYxUWp0SlFVTXZRaXcwUTBGQmFVSXNRMEZCUVR0SlFVTnFRaXcwUTBGQmFVSXNRMEZCUVR0SlFVTnFRaXhuUkVGQmNVSXNRMEZCUVR0SlFVTnlRaXd3UkVGQkswSXNRMEZCUVR0SlFVTXZRaXcwUTBGQmFVSXNRMEZCUVR0QlFVTnVRaXhEUVVGRExFVkJUbE1zZFVKQlFYVkNMRXRCUVhaQ0xIVkNRVUYxUWl4UlFVMW9RenRCUVVWSUxFMUJRVTBzUTBGQlRpeEpRVUZaTEd0Q1FVVllPMEZCUmtRc1YwRkJXU3hyUWtGQmEwSTdTVUZETlVJc2VVUkJRVzFETEVOQlFVRTdRVUZEY2tNc1EwRkJReXhGUVVaWExHdENRVUZyUWl4TFFVRnNRaXhyUWtGQmEwSXNVVUZGTjBJaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SmxlSEJ2Y25RZ1pXNTFiU0JUZEhKcGJtZE5aWFJ5YVdOelRtRnRaWE1nZTF4dUlDQWdJRXhsZG1WdWMyaDBaV2x1SUQwZ0oweGxkbVZ1YzJoMFpXbHVKeXhjYmlBZ0lDQktZWEp2VjJsdWEyeGxjaUE5SUNkS1lYSnZMVmRwYm10c1pYSW5MRnh1SUNBZ0lFMWhibWhoZEhSaGJpQTlJQ2ROWVc1b1lYUjBZVzRuTEZ4dUlDQjlYRzVjYm1WNGNHOXlkQ0JsYm5WdElGWmxZM1J2Y2sxbGRISnBZM05PWVcxbGN5QjdYRzRnSUNBZ1JYVmpiR2xrWldGdUlEMGdKMFYxWTJ4cFpHVmhiaWNzWEc0Z0lIMWNibHh1Wlhod2IzSjBJR1Z1ZFcwZ1FtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTWdlMXh1SUNBZ0lGUmhibWx0YjNSdklEMGdKMVJoYm1sdGIzUnZKeXhjYmlBZ0lDQkVhV05sSUQwZ0owUnBZMlVuTEZ4dUlDQWdJRUZ6ZVcxdFpYUnlhV01nUFNBblFYTjViVzFsZEhKcFl5Y3NYRzRnSUNBZ1FuSmhkVzVDYkdGdWNYVmxkQ0E5SUNkQ2NtRjFiaTFDYkdGdWNYVmxkQ2NzWEc0Z0lDQWdRMjl6YVc1bElEMGdKME52YzJsdVpTY3NYRzRnSUNBZ1MzVnNZM3A1Ym5OcmFTQTlJQ2RMZFd4amVubHVjMnRwSnl4Y2JpQWdJQ0JOWTBOdmJtNWhkV2RvWlhrZ1BTQW5UV010UTI5dWJtRjFaMmhsZVNjc1hHNGdJQ0FnVW05bmIzUkhiMnhrWW1WeVp5QTlJQ2RTYjJkdmRDMUhiMnhrWW1WeVp5Y3NYRzRnSUNBZ1VuVnpjMlZzSUQwZ0oxSjFjM05sYkNjc1hHNGdJQ0FnVTI5cllXd2dQU0FuVTI5cllXd25MRnh1SUNBZ0lFaGhiVzFwYm1jZ1BTQW5TR0Z0YldsdVp5Y3NYRzRnSUNBZ1JYVmpiR2xrWldGdUlEMGdKMFYxWTJ4cFpHVmhiaWNzWEc0Z0lIMWNibHh1Wlhod2IzSjBJR1Z1ZFcwZ1JHbHpkR0Z1WTJWTlpYUnlhV056VTNWaWFtVmpkSE1nZTF4dUlDQWdJRlpsWTNSdmNpQTlJQ2RXWldOMGIzSW5MRnh1SUNBZ0lGTjBjbWx1WnlBOUlDZFRkSEpwYm1jbkxGeHVJQ0FnSUVKcGRFRnljbUY1SUQwZ0owSnBkRUZ5Y21GNUp5eGNiaUFnSUNCTllXTnliMDF2YkdWamRXeGxJRDBnSjAxaFkzSnZUVzlzWldOMWJHVW5MRnh1SUNBZ0lFNTFiV0psY2lBOUlDZE9kVzFpWlhJbkxGeHVJQ0I5WEc1Y2JtVjRjRzl5ZENCbGJuVnRJRTUxYldKbGNrMWxkSEpwWTNOT1lXMWxjeUI3WEc0Z0lFNTFiV1Z5YVdORWFYTjBZVzVqWlNBOUlDZE9kVzFsY21salJHbHpkR0Z1WTJVbkxGeHVmVnh1WEc0aVhYMD0iLCIvKipcbiAqIEdlbmVyYXRlcyBzaW5nbGUgcmFuZG9tIGZsb2F0IGZyb20gMCB0byByYW5nZS5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge251bWJlcn0gcmFuZ2UgTWF4IGdlbmVyYXRpbmcgdmFsdWUuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IEEgcmFuZG9tIGZsb2F0IGdlbmVyYXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbUZsb2F0KHJhbmdlKSB7XG4gICAgcmV0dXJuIE1hdGgucmFuZG9tKCkgKiByYW5nZTtcbn1cbi8qKlxuICogR2VuZXJhdGVzIHNpbmdsZSByYW5kb20gaW50ZWdlciBmcm9tIDAgdG8gcmFuZ2UuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtudW1iZXJ9IHJhbmdlIE1heCBnZW5lcmF0aW5nIHZhbHVlLlxuICogQHJldHVybiB7bnVtYmVyfSBBIHJhbmRvbSBpbnRlZ2VyIGdlbmVyYXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbUludChyYW5nZSkge1xuICAgIHJldHVybiBNYXRoLmZsb29yKHJhbmRvbUZsb2F0KHJhbmdlKSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljbUZ1Wkc5dExtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpY21GdVpHOXRMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQk96czdPenM3UjBGTlJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4WFFVRlhMRU5CUVVNc1MwRkJZVHRKUVVOMlF5eFBRVUZQTEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhMUVVGTExFTkJRVU03UVVGREwwSXNRMEZCUXp0QlFVVkVPenM3T3pzN1IwRk5SenRCUVVOSUxFMUJRVTBzVlVGQlZTeFRRVUZUTEVOQlFVTXNTMEZCWVR0SlFVTnlReXhQUVVGUExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNWMEZCVnl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGVFTXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1IyVnVaWEpoZEdWeklITnBibWRzWlNCeVlXNWtiMjBnWm14dllYUWdabkp2YlNBd0lIUnZJSEpoYm1kbExseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQnlZVzVuWlNCTllYZ2daMlZ1WlhKaGRHbHVaeUIyWVd4MVpTNWNiaUFxSUVCeVpYUjFjbTRnZTI1MWJXSmxjbjBnUVNCeVlXNWtiMjBnWm14dllYUWdaMlZ1WlhKaGRHVmtMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2NtRnVaRzl0Um14dllYUW9jbUZ1WjJVNklHNTFiV0psY2lrNklHNTFiV0psY2lCN1hHNGdJSEpsZEhWeWJpQk5ZWFJvTG5KaGJtUnZiU2dwSUNvZ2NtRnVaMlU3WEc1OVhHNWNiaThxS2x4dUlDb2dSMlZ1WlhKaGRHVnpJSE5wYm1kc1pTQnlZVzVrYjIwZ2FXNTBaV2RsY2lCbWNtOXRJREFnZEc4Z2NtRnVaMlV1WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUhKaGJtZGxJRTFoZUNCblpXNWxjbUYwYVc1bklIWmhiSFZsTGx4dUlDb2dRSEpsZEhWeWJpQjdiblZ0WW1WeWZTQkJJSEpoYm1SdmJTQnBiblJsWjJWeUlHZGxibVZ5WVhSbFpDNWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhKaGJtUnZiVWx1ZENoeVlXNW5aVG9nYm5WdFltVnlLVG9nYm5WdFltVnlJSHRjYmlBZ2NtVjBkWEp1SUUxaGRHZ3VabXh2YjNJb2NtRnVaRzl0Um14dllYUW9jbUZ1WjJVcEtUdGNibjFjYmlKZGZRPT0iLCJpbXBvcnQgeyBWZWN0b3IgfSBmcm9tICcuL3R5cGUtZGVjbGFyYXRpb25zJztcbmltcG9ydCB7IHJhbmRvbUZsb2F0LCByYW5kb21JbnQgfSBmcm9tICcuL3JhbmRvbSc7XG4vKipcbiAqIEFzc2VydHMgYSBjb25kaXRpb24gYnkgdGhyb3dpbmcgYW4gRXJyb3IuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtib29sZWFufSBbY29uZGl0aW9uPWZhbHNlXSBDb25kaXRpb24gdG8gYXNzZXJ0LlxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlPSdBc3NlcnRpb24gZXJyb3IuJ10gTWVzc2FnZSB0byBvdXRwdXQuXG4gKiBAdGhyb3dzIHtFcnJvcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydChjb25kaXRpb24gPSBmYWxzZSwgbWVzc2FnZSA9ICdBc3NlcnRpb24gZXJyb3IuJykge1xuICAgIGlmICghY29uZGl0aW9uKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG59XG4vKipcbiAqIENyZWF0ZXMgbmV3IHR3by1kaW1lbnNpb25hbCBhcnJheSBhbmQgZmlsbHMgaXQgd2l0aCB0aGUgdmFsdWUgZ2l2ZW4uXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IGRpbWVuc2lvbjEgVGhlIGZpcnN0IGRpbWVuc2lvbiBvZiB0aGUgY29vcmRpbmF0ZXMgKG51bWJlciBvZiByb3dzKS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24yIFRoZSBzZWNvbmQgZGltZW5zaW9uIG9mIHRoZSBjb29yZGluYXRlcyAobnVtYmVyIG9mIGNvbHVtbnMpLlxuICogQHBhcmFtIHtudW1iZXJ9IFtmaWxsPTBdIEEgdmFsdWUgdG8gZmlsbCB0aGUgY29vcmRpbmF0ZXMgd2l0aC5cbiAqIEByZXR1cm4ge0Nvb3JkaW5hdGVzfSBBIHR3by1kaW1lbnNpb25hbCBmaWxsZWQgd2l0aCB0aGUgdmFsdWUgZ2l2ZW4uXG4gKiBAdG9kbyBNaWdodCBiZSBzbG93IHNpbmNlIHVzZWQgQXJyYXkubWFwLiBQcm9iYWJseSBuZWVkcyBwZXJmb3JtYW5jZSByZXZpc2lvbi5cbiAqL1xuZnVuY3Rpb24gaW5pdENvb3JkaW5hdGVzKGRpbWVuc2lvbjEsIGRpbWVuc2lvbjIsIGZpbGwgPSAwKSB7XG4gICAgcmV0dXJuIG5ldyBBcnJheShkaW1lbnNpb24xKS5maWxsKGZpbGwpLm1hcCgoKSA9PiAobmV3IFZlY3RvcihkaW1lbnNpb24yKS5maWxsKGZpbGwpKSk7XG59XG4vKipcbiAqIFRyYW5zcG9zZSBtYXRyaXguXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtNYXRyaXh9IG1hdHJpeCBUaGUgbWF0cml4IHRvIGJlIHRyYW5zcG9zZWQuXG4gKiBAcmV0dXJuIHtNYXRyaXh9IFRyYW5zcG9zZWQgbWF0cml4LlxuICogQHRvZG8gTWlnaHQgYmUgc2xvdyBzaW5jZSB1c2VkIEFycmF5Lm1hcC4gUHJvYmFibHkgbmVlZHMgcGVyZm9ybWFuY2UgcmV2aXNpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc3Bvc2VNYXRyaXgobWF0cml4KSB7XG4gICAgcmV0dXJuIG5ldyBBcnJheShtYXRyaXhbMF0ubGVuZ3RoKS5maWxsKDApXG4gICAgICAgIC5tYXAoKF8sIGkpID0+IChuZXcgVmVjdG9yKG1hdHJpeC5sZW5ndGgpLmZpbGwoMCkubWFwKChfLCBqKSA9PiAobWF0cml4W2pdW2ldKSkpKTtcbn1cbi8qKlxuICogQWRkcyB0d28gdmVjdG9ycyB3aXRoIHRoZSBzZWNvbmQgb25lIHRvIGJlIG11bHRpcGxpZWQgYnkgdGhlIGdpdmVuIHJhdGlvLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7VmVjdG9yfSBwIFRoZSBmaXJzdCB2ZWN0b3IgdG8gYWRkLlxuICogQHBhcmFtIHtWZWN0b3J9IHEgVGhlIHNlY29uZCB2ZWN0b3IgdG8gYWRkLlxuICogQHBhcmFtIHtudW1iZXJ9IFttdWx0aXBsaWVyPTFdIEEgbXVsdGlwbGllciB0byBiZSB1c2VkIGJlZm9yZSB0aGUgc2Vjb25kIHZlY3RvciBpcyBhZGRlZC5cbiAqIEByZXR1cm4ge1ZlY3Rvcn0gTmV3IHZlY3RvciBjb250YWluZWQgdGhlIHJlc3VsdCBvZiBvcGVyYXRpb24gcCttdWx0aXBsaWVyKnEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZWN0b3JBZGQocCwgcSwgbXVsdGlwbGllciA9IDEpIHtcbiAgICBjb25zdCBuSXRlbXMgPSBwLmxlbmd0aDtcbiAgICBhc3NlcnQobkl0ZW1zID09IHEubGVuZ3RoLCAnVmVjdG9yIGxlbmd0aHMgZG8gbm90IG1hdGNoLicpO1xuICAgIGNvbnN0IHRvdGFsID0gbmV3IFZlY3RvcihuSXRlbXMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcC5sZW5ndGg7ICsraSlcbiAgICAgICAgdG90YWxbaV0gPSBwW2ldICsgbXVsdGlwbGllciAqIHFbaV07XG4gICAgcmV0dXJuIHRvdGFsO1xufVxuLyoqXG4gKiBTdW1zIHRoZSB2ZWN0b3IncyBpdGVtcy5cbiAqXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gdiBUaGUgdmVjdG9yIHRvIGJlIHN1bW1lZC5cbiAqIEByZXR1cm4ge251bWJlcn0gVGhlIHZlY3RvcidzIGl0ZW1zIHN1bS5cbiAqL1xuZnVuY3Rpb24gaXRlbXNTdW0odikge1xuICAgIGxldCB0b3RhbCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgKytpKVxuICAgICAgICB0b3RhbCArPSB2W2ldO1xuICAgIHJldHVybiB0b3RhbDtcbn1cbi8qKlxuICogU3VxYXJlcyB0aGUgdmVjdG9yJ3MgaXRlbXMuXG4gKlxuICogQHBhcmFtIHtWZWN0b3J9IHYgVGhlIHZlY3RvciB0byBzcXVhcmUuXG4gKiBAcmV0dXJuIHtWZWN0b3J9IEEgbmV3IHZlY3RvciBjb250YWluaW5nIHRoZSBvcmlnaW5hbCdzIGl0ZW1zIHNxdWFyZWQuXG4gKi9cbmZ1bmN0aW9uIHZlY3RvclNxdWFyZSh2KSB7XG4gICAgY29uc3Qgbkl0ZW1zID0gdi5sZW5ndGg7XG4gICAgY29uc3QgdG90YWwgPSBuZXcgVmVjdG9yKG5JdGVtcyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgKytpKVxuICAgICAgICB0b3RhbFtpXSA9IHZbaV0gKiB2W2ldO1xuICAgIHJldHVybiB0b3RhbDtcbn1cbmV4cG9ydCBmdW5jdGlvbiB2ZWN0b3JMZW5ndGgodikge1xuICAgIGxldCBzcXJTdW0gPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKylcbiAgICAgICAgc3FyU3VtICs9IHZbaV0gKiB2W2ldO1xuICAgIHJldHVybiBNYXRoLnNxcnQoc3FyU3VtKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB2ZWN0b3JEb3RQcm9kdWN0KHYxLCB2Mikge1xuICAgIGlmICh2MS5sZW5ndGggIT0gdjIubGVuZ3RoKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBkaW1lbnNpb25hbGl0eSBvZiB0aGUgdmVjdG9ycyBtdXN0IG1hdGNoJyk7XG4gICAgbGV0IHByb2QgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdjEubGVuZ3RoOyBpKyspXG4gICAgICAgIHByb2QgKz0gdjFbaV0gKiB2MltpXTtcbiAgICByZXR1cm4gcHJvZDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG1hdHJpeCBmaWxsZWQgd2l0aCByYW5kb20gZmxvYXRpbmcgcG9pbnQgdmFsdWVzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24xIFRoZSBmaXJzdCBkaW1lbnNpb24gb2YgdGhlIG1hdHJpeC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24yIFRoZSBzZWNvbmQgZGltZW5zaW9uIG9mIHRoZSBtYXRyaXguXG4gKiBAcGFyYW0ge251bWJlcn0gW3NjYWxlPTEuXSBNYXggdmFsdWUgZ2l2ZW4gYnkgcmFuZG9tIGdlbmVyYXRvci5cbiAqIEByZXR1cm4ge01hdHJpeH0gQSBuZXcgbWF0cml4IGZpbGxlZCB3aXRoIHJhbmRvbSBmbG9hdGluZyBwb2ludCAgdmFsdWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsbFJhbmRvbU1hdHJpeChkaW1lbnNpb24xLCBkaW1lbnNpb24yLCBzY2FsZSA9IDEuKSB7XG4gICAgY29uc3QgbWF0cml4ID0gaW5pdENvb3JkaW5hdGVzKGRpbWVuc2lvbjEsIGRpbWVuc2lvbjIpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGltZW5zaW9uMTsgKytpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZGltZW5zaW9uMjsgKytqKVxuICAgICAgICAgICAgbWF0cml4W2ldW2pdID0gcmFuZG9tRmxvYXQoc2NhbGUpO1xuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xufVxuLyoqXG4gKiBDYWxjdWxhdGVzIEV1Y2xpZGVhbiBkaXN0YW5jZSBiZXR3ZWVuIHR3byB2ZWN0b3JzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7VmVjdG9yfSBwIFRoZSBmaXJzdCB2ZWN0b3IuXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gcSBUaGUgc2Vjb25kIHZlY3Rvci5cbiAqIEByZXR1cm4ge251bWJlcn0gRXVjbGlkZWFuIGRpc3RhbmNlIGJldHdlZW4gdGhlIGdpdmVuIHZlY3RvcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZShwLCBxKSB7XG4gICAgY29uc3QgZGlmZiA9IHZlY3RvckFkZChwLCBxLCAtMSk7XG4gICAgY29uc3Qgc3FkaWZmID0gdmVjdG9yU3F1YXJlKGRpZmYpO1xuICAgIGNvbnN0IHNxZGlmZlN1bW0gPSBpdGVtc1N1bShzcWRpZmYpO1xuICAgIHJldHVybiBNYXRoLnNxcnQoc3FkaWZmU3VtbSk7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBkaXN0YW5jZSBtYXRyaXggdXNpbmcgYSBjdXN0b20gZGlzdGFuY2UgZnVuY3Rpb24uXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtWZWN0b3JzfSBkYXRhIElucHV0IHZlY3RvcnMgdG8gY2FsY3VsYXRlIGRpc3RhbmNlcy5cbiAqIEBwYXJhbSB7RGlzdGFuY2VNZXRyaWN9IGRpc3RhbmNlIEN1c3RvbSBkaXN0YW5jZSBmdW5jdGlvbi5cbiAqIEByZXR1cm4ge01hdHJpeH0gQ2FsY3VsYXRlZCBjdXN0b20gZGlzdGFuY2UgbWF0cml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY0Rpc3RhbmNlTWF0cml4KGRhdGEsIGRpc3RhbmNlKSB7XG4gICAgY29uc3Qgbkl0ZW1zID0gZGF0YS5sZW5ndGg7XG4gICAgY29uc3QgbWF0cml4ID0gaW5pdENvb3JkaW5hdGVzKG5JdGVtcywgbkl0ZW1zLCAwKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5JdGVtczsgKytpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IG5JdGVtczsgKytqKSB7XG4gICAgICAgICAgICBjb25zdCBkID0gKGRhdGFbaV0gPT0gbnVsbCkgfHwgKGRhdGFbal0gPT0gbnVsbCkgPyAwIDogZGlzdGFuY2UoZGF0YVtpXSwgZGF0YVtqXSk7XG4gICAgICAgICAgICBtYXRyaXhbaV1bal0gPSBtYXRyaXhbal1baV0gPSBkO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBkaXN0YW5jZSBtYXRyaXggdXNpbmcgYSBjdXN0b20gZGlzdGFuY2UgZnVuY3Rpb24uXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtWZWN0b3JzfSBkYXRhIElucHV0IHZlY3RvcnMgdG8gY2FsY3VsYXRlIGRpc3RhbmNlcy5cbiAqIEBwYXJhbSB7RGlzdGFuY2VNZXRyaWN9IGRpc3RhbmNlIEN1c3RvbSBkaXN0YW5jZSBmdW5jdGlvbi5cbiAqIEByZXR1cm4ge01hdHJpeH0gQ2FsY3VsYXRlZCBjdXN0b20gZGlzdGFuY2UgbWF0cml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY05vcm1hbGl6ZWREaXN0YW5jZU1hdHJpeChkYXRhLCBkaXN0YW5jZSkge1xuICAgIGNvbnN0IG5JdGVtcyA9IGRhdGEubGVuZ3RoO1xuICAgIGNvbnN0IG1hdHJpeCA9IGluaXRDb29yZGluYXRlcyhuSXRlbXMsIG5JdGVtcywgMCk7XG4gICAgbGV0IG1heCA9IE51bWJlci5NSU5fVkFMVUU7XG4gICAgbGV0IG1pbiA9IE51bWJlci5NQVhfVkFMVUU7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuSXRlbXM7ICsraSkge1xuICAgICAgICBmb3IgKGxldCBqID0gaTsgaiA8IG5JdGVtczsgKytqKSB7XG4gICAgICAgICAgICBjb25zdCBkID0gKGRhdGFbaV0gPT0gbnVsbCkgfHwgKGRhdGFbal0gPT0gbnVsbCB8fCBpID09PSBqKSA/IDAgOiBkaXN0YW5jZShkYXRhW2ldLCBkYXRhW2pdKTtcbiAgICAgICAgICAgIG1hdHJpeFtpXVtqXSA9IG1hdHJpeFtqXVtpXSA9IGQ7XG4gICAgICAgICAgICBpZiAoZCA+IG1heClcbiAgICAgICAgICAgICAgICBtYXggPSBkO1xuICAgICAgICAgICAgaWYgKGQgPCBtaW4pXG4gICAgICAgICAgICAgICAgbWluID0gZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5JdGVtczsgKytpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IG5JdGVtczsgKytqKVxuICAgICAgICAgICAgbWF0cml4W2ldW2pdID0gbWF0cml4W2pdW2ldID0gKG1hdHJpeFtpXVtqXSAtIG1pbikgLyAobWF4IC0gbWluKTtcbiAgICB9XG4gICAgcmV0dXJuIG1hdHJpeDtcbn1cbi8qKiBHZW5lcmF0ZXMgYXJyYXkgZnJvbSBhIHJhbmdlIFtiZWdpbjsgZW5kXSBvciBbYmVnaW47IGVuZCkgaWYgZW5kRXhjbHVzaXZlLiAqKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5SYW5nZShiZWdpbiwgZW5kLCBlbmRFeGNsdXNpdmUgPSBmYWxzZSkge1xuICAgIGNvbnN0IG5JdGVtcyA9IGVuZCAtIGJlZ2luICsgKGVuZEV4Y2x1c2l2ZSA/IDAgOiAxKTtcbiAgICBjb25zdCBzZXJpZXMgPSBuZXcgSW50MzJBcnJheShuSXRlbXMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpXG4gICAgICAgIHNlcmllc1tpXSA9IGJlZ2luICsgaTtcbiAgICByZXR1cm4gc2VyaWVzO1xufVxuLyoqXG4gKiBSZXR1cm5zIG9yZGVyIG9mIHZhbHVlcyBhcyBpZiB0aGV5IGFyZSBzb3J0ZWQuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHthbnlbXX0gdmFsdWVzIElucHV0IGFycmF5LlxuICogQHBhcmFtIHtib29sZWFufSBbcmV2ZXJzZT1mYWxzZV0gV2hldGhlciB0byByZXR1cm4gcmV2ZXJzZWQgb3JkZXIuXG4gKiBAcmV0dXJuIHtudW1iZXJbXX0gVGhlIG9yZGVyIGNvbXB1dGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXJnU29ydCh2YWx1ZXMsIHJldmVyc2UgPSBmYWxzZSkge1xuICAgIGNvbnN0IHNvcnRmbiA9IHJldmVyc2UgPyAoYSwgYikgPT4gKGJbMF0gLSBhWzBdKSA6IChhLCBiKSA9PiAoYVswXSAtIGJbMF0pO1xuICAgIGNvbnN0IGRlY29yID0gKHYsIGkpID0+IFt2LCBpXTsgLy8gc2V0IGluZGV4IHRvIHZhbHVlXG4gICAgY29uc3QgdW5kZWNvciA9IChhKSA9PiBhWzFdOyAvLyBsZWF2ZSBvbmx5IGluZGV4XG4gICAgY29uc3QgX2FyZ3NvcnQgPSAoYXJyKSA9PiBhcnIubWFwKGRlY29yKS5zb3J0KHNvcnRmbikubWFwKHVuZGVjb3IpO1xuICAgIHJldHVybiBfYXJnc29ydCh2YWx1ZXMpO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBpbmRleGVzIG9mIHRoZSBtb3N0IGRpdmVyc2Ugb2JqZWN0cyBhY2NvcmRpbmcgdG8gdGhlIGRpc3QgZnVuY3Rpb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGggdG90YWwgbnVtYmVyIG9mIG9iamVjdHNcbiAqIEBwYXJhbSB7bnVtYmVyfSBuIG51bWJlciBvZiBkaXZlcnNlIGVsZW1lbnRzIHRvIGZpbmRcbiAqIEBwYXJhbSB7KGkxOiBudW1iZXIsIGkyOiBudW1iZXIpID0+IG51bWJlcn0gZGlzdCBhIGZ1bmN0aW9uIHdoaWNoIGNhbGN1bGF0ZXMgZGlzdGFuY2UgYmV0d2VlblxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR3byBvYmplY3RzIHVzaW5nIHRoZWlyIGluZGV4ZXNcbiAqIEByZXR1cm5zIHtudW1iZXJbXX0gVGhlIGluZGV4ZXMgb2YgdGhlIG1vc3QgZGl2ZXJzZSBvYmplY3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREaXZlcnNlU3Vic2V0KGxlbmd0aCwgbiwgZGlzdCkge1xuICAgIGZ1bmN0aW9uIG1heEJ5KHZhbHVlcywgb3JkZXJCeSkge1xuICAgICAgICBsZXQgbWF4VmFsdWUgPSBudWxsO1xuICAgICAgICBsZXQgbWF4T3JkZXJCeSA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRPcmRlckJ5ID0gb3JkZXJCeShlbGVtZW50KTtcbiAgICAgICAgICAgIGlmIChtYXhPcmRlckJ5ID09IG51bGwgfHwgZWxlbWVudE9yZGVyQnkgPiBtYXhPcmRlckJ5KSB7XG4gICAgICAgICAgICAgICAgbWF4VmFsdWUgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgIG1heE9yZGVyQnkgPSBlbGVtZW50T3JkZXJCeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF4VmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IHN1YnNldCA9IFtyYW5kb21JbnQobGVuZ3RoIC0gMSldO1xuICAgIGNvbnN0IGNvbXBsZW1lbnQgPSBuZXcgU2V0KCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgICAgICBpZiAoIXN1YnNldC5pbmNsdWRlcyhpKSlcbiAgICAgICAgICAgIGNvbXBsZW1lbnQuYWRkKGkpO1xuICAgIH1cbiAgICB3aGlsZSAoc3Vic2V0Lmxlbmd0aCA8IG4pIHtcbiAgICAgICAgY29uc3QgaWR4ID0gbWF4QnkoY29tcGxlbWVudC52YWx1ZXMoKSwgKGkpID0+IE1hdGgubWluLmFwcGx5KE1hdGgsIHN1YnNldC5tYXAoZnVuY3Rpb24gKHZhbCwgaW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBkaXN0KGksIHZhbCk7XG4gICAgICAgIH0pKSk7XG4gICAgICAgIGlmIChpZHgpIHtcbiAgICAgICAgICAgIHN1YnNldC5wdXNoKGlkeCk7XG4gICAgICAgICAgICBjb21wbGVtZW50LmRlbGV0ZShpZHgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdWJzZXQ7XG59XG4vKipcbiAqIFJldHVybnMgbm9ybWFsaXplZCB2ZWN0b3JcbiAqIEBwYXJhbSB7VmVjdG9yfSBkYXRhIG51bWVyaWNhbCBhcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplKGRhdGEpIHtcbiAgICBsZXQgbWVhbiA9IDA7XG4gICAgbGV0IHN0ZCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKVxuICAgICAgICBtZWFuICs9IGRhdGFbaV07XG4gICAgbWVhbiAvPSBkYXRhLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpXG4gICAgICAgIHN0ZCArPSAoZGF0YVtpXSAtIG1lYW4pICogKGRhdGFbaV0gLSBtZWFuKTtcbiAgICBzdGQgPSBNYXRoLnNxcnQoc3RkIC8gZGF0YS5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSlcbiAgICAgICAgZGF0YVtpXSA9IChkYXRhW2ldIC0gbWVhbikgLyBzdGQ7XG4gICAgcmV0dXJuIGRhdGE7XG59XG4vKipcbiAqIEZpbmRzIHNldCBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGxpc3RzLlxuICogQHBhcmFtIHthbnlbXX0gYSBUaGUgZmlyc3QgbGlzdC5cbiAqIEBwYXJhbSB7YW55W119IGIgVGhlIHNlY29uZCBsaXN0LlxuICogQHJldHVybiB7YW55W119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXREaWZmZXJlbmNlKGEsIGIpIHtcbiAgICBjb25zdCBiU2V0ID0gbmV3IFNldChiKTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShuZXcgU2V0KGEuZmlsdGVyKCh4KSA9PiAhYlNldC5oYXMoeCkpKS52YWx1ZXMoKSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkbVZqZEc5eUxXOXdaWEpoZEdsdmJuTXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKMlpXTjBiM0l0YjNCbGNtRjBhVzl1Y3k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkJRU3hQUVVGUExFVkJRVk1zVFVGQlRTeEZRVUYxUXl4TlFVRk5MSEZDUVVGeFFpeERRVUZETzBGQlEzcEdMRTlCUVU4c1JVRkJReXhYUVVGWExFVkJRVVVzVTBGQlV5eEZRVUZETEUxQlFVMHNWVUZCVlN4RFFVRkRPMEZCUldoRU96czdPenM3TzBkQlQwYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1RVRkJUU3hEUVVGRExGbEJRWEZDTEV0QlFVc3NSVUZCUlN4VlFVRnJRaXhyUWtGQmEwSTdTVUZEY2tZc1NVRkJTU3hEUVVGRExGTkJRVk03VVVGRFdpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wRkJRemRDTEVOQlFVTTdRVUZGUkRzN096czdPenM3UjBGUlJ6dEJRVU5JTEZOQlFWTXNaVUZCWlN4RFFVRkRMRlZCUVd0Q0xFVkJRVVVzVlVGQmEwSXNSVUZCUlN4UFFVRmxMRU5CUVVNN1NVRkRMMFVzVDBGQlR5eEpRVUZKTEV0QlFVc3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFTkJRVU1zU1VGQlNTeE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTjZSaXhEUVVGRE8wRkJSVVE3T3pzN096czdSMEZQUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3hsUVVGbExFTkJRVU1zVFVGQll6dEpRVU0xUXl4UFFVRlBMRWxCUVVrc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEzWkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTNSR0xFTkJRVU03UVVGRlJEczdPenM3T3pzN1IwRlJSenRCUVVOSUxFMUJRVTBzVlVGQlZTeFRRVUZUTEVOQlFVTXNRMEZCVXl4RlFVRkZMRU5CUVZNc1JVRkJSU3hoUVVGeFFpeERRVUZETzBsQlEzQkZMRTFCUVUwc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZGZUVJc1RVRkJUU3hEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRkZMRGhDUVVFNFFpeERRVUZETEVOQlFVTTdTVUZGTTBRc1RVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1NVRkZha01zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUXk5Q0xFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVlVGQlZTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVWMFF5eFBRVUZQTEV0QlFVc3NRMEZCUXp0QlFVTm1MRU5CUVVNN1FVRkZSRHM3T3pzN1IwRkxSenRCUVVOSUxGTkJRVk1zVVVGQlVTeERRVUZETEVOQlFWTTdTVUZEZWtJc1NVRkJTU3hMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlJXUXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJReTlDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRmFFSXNUMEZCVHl4TFFVRkxMRU5CUVVNN1FVRkRaaXhEUVVGRE8wRkJSVVE3T3pzN08wZEJTMGM3UVVGRFNDeFRRVUZUTEZsQlFWa3NRMEZCUXl4RFFVRlRPMGxCUXpkQ0xFMUJRVTBzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkRlRUlzVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRmFrTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJReTlDTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJSWHBDTEU5QlFVOHNTMEZCU3l4RFFVRkRPMEZCUTJZc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeFpRVUZaTEVOQlFVTXNRMEZCVXp0SlFVTndReXhKUVVGSkxFMUJRVTBzUjBGQlZ5eERRVUZETEVOQlFVTTdTVUZEZGtJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlZ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFGQlEzWkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM2hDTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEJRVU16UWl4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHZENRVUZuUWl4RFFVRkRMRVZCUVZVc1JVRkJSU3hGUVVGVk8wbEJRM0pFTEVsQlFVa3NSVUZCUlN4RFFVRkRMRTFCUVUwc1NVRkJTU3hGUVVGRkxFTkJRVU1zVFVGQlRUdFJRVU40UWl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExEaERRVUU0UXl4RFFVRkRMRU5CUVVNN1NVRkRiRVVzU1VGQlNTeEpRVUZKTEVkQlFWY3NRMEZCUXl4RFFVRkRPMGxCUTNKQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFWY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlR0UlFVTjRReXhKUVVGSkxFbEJRVWtzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU40UWl4UFFVRlBMRWxCUVVrc1EwRkJRenRCUVVOa0xFTkJRVU03UVVGRlJEczdPenM3T3pzN1IwRlJSenRCUVVOSUxFMUJRVTBzVlVGQlZTeG5Ra0ZCWjBJc1EwRkJReXhWUVVGclFpeEZRVUZGTEZWQlFXdENMRVZCUVVVc1VVRkJaMElzUlVGQlJUdEpRVU42Uml4TlFVRk5MRTFCUVUwc1IwRkJSeXhsUVVGbExFTkJRVU1zVlVGQlZTeEZRVUZGTEZWQlFWVXNRMEZCUXl4RFFVRkRPMGxCUlhaRUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhWUVVGVkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdVVUZEYmtNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRlZCUVZVc1JVRkJSU3hGUVVGRkxFTkJRVU03V1VGRGFrTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEZkQlFWY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRMUVVOeVF6dEpRVU5FTEU5QlFVOHNUVUZCVFN4RFFVRkRPMEZCUTJoQ0xFTkJRVU03UVVGRlJEczdPenM3T3p0SFFVOUhPMEZCUTBnc1RVRkJUU3hWUVVGVkxEQkNRVUV3UWl4RFFVRkRMRU5CUVZNc1JVRkJSU3hEUVVGVE8wbEJRemRFTEUxQlFVMHNTVUZCU1N4SFFVRkhMRk5CUVZNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRha01zVFVGQlRTeE5RVUZOTEVkQlFVY3NXVUZCV1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wbEJRMnhETEUxQlFVMHNWVUZCVlN4SFFVRkhMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEpRVU53UXl4UFFVRlBMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdRVUZETDBJc1EwRkJRenRCUVVWRU96czdPenM3TzBkQlQwYzdRVUZEU0N4TlFVRk5MRlZCUVZVc2EwSkJRV3RDTEVOQlFVTXNTVUZCWVN4RlFVRkZMRkZCUVhkQ08wbEJRM2hGTEUxQlFVMHNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03U1VGRE0wSXNUVUZCVFN4TlFVRk5MRWRCUVVjc1pVRkJaU3hEUVVGRExFMUJRVTBzUlVGQlJTeE5RVUZOTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkZiRVFzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0UlFVTXZRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0WlFVTnVReXhOUVVGTkxFTkJRVU1zUjBGQlZ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlF6RkdMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMU5CUTJwRE8wdEJRMFk3U1VGRFJDeFBRVUZQTEUxQlFVMHNRMEZCUXp0QlFVTm9RaXhEUVVGRE8wRkJSVVE3T3pzN096czdSMEZQUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3cwUWtGQk5FSXNRMEZCUXl4SlFVRmhMRVZCUVVVc1VVRkJkMEk3U1VGRGJFWXNUVUZCVFN4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF6dEpRVU16UWl4TlFVRk5MRTFCUVUwc1IwRkJSeXhsUVVGbExFTkJRVU1zVFVGQlRTeEZRVUZGTEUxQlFVMHNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOc1JDeEpRVUZKTEVkQlFVY3NSMEZCUnl4TlFVRk5MRU5CUVVNc1UwRkJVeXhEUVVGRE8wbEJRek5DTEVsQlFVa3NSMEZCUnl4SFFVRkhMRTFCUVUwc1EwRkJReXhUUVVGVExFTkJRVU03U1VGRE0wSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEUxQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHRSUVVNdlFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVFVGQlRTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUXk5Q0xFMUJRVTBzUTBGQlF5eEhRVUZYTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFbEJRVWtzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOeVJ5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFpRVU5vUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhIUVVGSE8yZENRVUZGTEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRja0lzU1VGQlNTeERRVUZETEVkQlFVY3NSMEZCUnp0blFrRkJSU3hIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETzFOQlEzUkNPMHRCUTBZN1NVRkRSQ3hMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1RVRkJUU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFGQlF5OUNMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1RVRkJUU3hGUVVGRkxFVkJRVVVzUTBGQlF6dFpRVU5xUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETzB0QlEzQkZPMGxCUTBRc1QwRkJUeXhOUVVGTkxFTkJRVU03UVVGRGFFSXNRMEZCUXp0QlFVVkVMR3RHUVVGclJqdEJRVU5zUml4TlFVRk5MRlZCUVZVc1VVRkJVU3hEUVVGRExFdEJRV0VzUlVGQlJTeEhRVUZYTEVWQlFVVXNXVUZCV1N4SFFVRkhMRXRCUVVzN1NVRkRka1VzVFVGQlRTeE5RVUZOTEVkQlFVY3NSMEZCUnl4SFFVRkhMRXRCUVVzc1IwRkJSeXhEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU53UkN4TlFVRk5MRTFCUVUwc1IwRkJSeXhKUVVGSkxGVkJRVlVzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0SlFVVjBReXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1RVRkJUU3hGUVVGRkxFVkJRVVVzUTBGQlF6dFJRVU0zUWl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXp0SlFVVjRRaXhQUVVGUExFMUJRVTBzUTBGQlF6dEJRVU5vUWl4RFFVRkRPMEZCUlVRN096czdPenM3UjBGUFJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4UFFVRlBMRU5CUVVNc1RVRkJZU3hGUVVGRkxFOUJRVThzUjBGQlJ5eExRVUZMTzBsQlEzQkVMRTFCUVUwc1RVRkJUU3hIUVVGSExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRlJMRVZCUVVVc1EwRkJVU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGUkxFVkJRVVVzUTBGQlVTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOMlJ5eE5RVUZOTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVUwc1JVRkJSU3hEUVVGVExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zY1VKQlFYRkNPMGxCUTJ4RkxFMUJRVTBzVDBGQlR5eEhRVUZITEVOQlFVTXNRMEZCVVN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4dFFrRkJiVUk3U1VGRGRrUXNUVUZCVFN4UlFVRlJMRWRCUVVjc1EwRkJReXhIUVVGVkxFVkJRVVVzUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dEpRVU14UlN4UFFVRlBMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEJRVU14UWl4RFFVRkRPMEZCUlVRN096czdPenM3UjBGUFJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4blFrRkJaMElzUTBGQlF5eE5RVUZqTEVWQlFVVXNRMEZCVXl4RlFVRkZMRWxCUVhkRE8wbEJRMnhITEZOQlFWTXNTMEZCU3l4RFFVRkRMRTFCUVdkRExFVkJRVVVzVDBGQk9FSTdVVUZETjBVc1NVRkJTU3hSUVVGUkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEzQkNMRWxCUVVrc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF6dFJRVVYwUWl4TFFVRkxMRTFCUVUwc1QwRkJUeXhKUVVGSkxFMUJRVTBzUlVGQlJUdFpRVU0xUWl4TlFVRk5MR05CUVdNc1IwRkJSeXhQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdXVUZEZUVNc1NVRkJTU3hWUVVGVkxFbEJRVWtzU1VGQlNTeEpRVUZKTEdOQlFXTXNSMEZCUnl4VlFVRlZMRVZCUVVVN1owSkJRM0pFTEZGQlFWRXNSMEZCUnl4UFFVRlBMRU5CUVVNN1owSkJRMjVDTEZWQlFWVXNSMEZCUnl4alFVRmpMRU5CUVVNN1lVRkROMEk3VTBGRFJqdFJRVU5FTEU5QlFVOHNVVUZCVVN4RFFVRkRPMGxCUTJ4Q0xFTkJRVU03U1VGRlJDeE5RVUZOTEUxQlFVMHNSMEZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTjJReXhOUVVGTkxGVkJRVlVzUjBGQlJ5eEpRVUZKTEVkQlFVY3NSVUZCUlN4RFFVRkRPMGxCUlRkQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdVVUZETDBJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNKQ0xGVkJRVlVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRja0k3U1VGRlJDeFBRVUZQTEUxQlFVMHNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRk8xRkJRM2hDTEUxQlFVMHNSMEZCUnl4SFFVRkhMRXRCUVVzc1EwRkRaaXhWUVVGVkxFTkJRVU1zVFVGQlRTeEZRVUU0UWl4RlFVTXZReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeEZRVUZGTEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1ZVRkJVeXhIUVVGSExFVkJRVVVzUzBGQlN6dFpRVU40UkN4UFFVRlBMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEZEVJc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlExQXNTVUZCU1N4SFFVRkhMRVZCUVVVN1dVRkRVQ3hOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTJwQ0xGVkJRVlVzUTBGQlF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1UwRkRlRUk3UzBGRFJqdEpRVU5FTEU5QlFVOHNUVUZCVFN4RFFVRkRPMEZCUTJoQ0xFTkJRVU03UVVGRlJEczdPMGRCUjBjN1FVRkRTQ3hOUVVGTkxGVkJRVlVzVTBGQlV5eERRVUZETEVsQlFWazdTVUZEY0VNc1NVRkJTU3hKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETzBsQlEySXNTVUZCU1N4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJSVm9zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUTJ4RExFbEJRVWtzU1VGQlNTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkZiRUlzU1VGQlNTeEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkZjRUlzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUTJ4RExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVVUzUXl4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wbEJSVzVETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRVZCUVVVc1EwRkJRenRSUVVOc1F5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRE8wbEJSVzVETEU5QlFVOHNTVUZCU1N4RFFVRkRPMEZCUTJRc1EwRkJRenRCUVVWRU96czdPenRIUVV0SE8wRkJRMGdzVFVGQlRTeFZRVUZWTEdGQlFXRXNRMEZCUXl4RFFVRlJMRVZCUVVVc1EwRkJVVHRKUVVNNVF5eE5RVUZOTEVsQlFVa3NSMEZCUnl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU40UWl4UFFVRlBMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhEUVVGRE8wRkJRM0pGTEVOQlFVTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdlMDFoZEhKcGVDd2dWbVZqZEc5eUxDQkRiMjl5WkdsdVlYUmxjeXdnVm1WamRHOXljeXdnUkdsemRHRnVZMlZOWlhSeWFXTjlJR1p5YjIwZ0p5NHZkSGx3WlMxa1pXTnNZWEpoZEdsdmJuTW5PMXh1YVcxd2IzSjBJSHR5WVc1a2IyMUdiRzloZEN3Z2NtRnVaRzl0U1c1MGZTQm1jbTl0SUNjdUwzSmhibVJ2YlNjN1hHNWNiaThxS2x4dUlDb2dRWE56WlhKMGN5QmhJR052Ym1ScGRHbHZiaUJpZVNCMGFISnZkMmx1WnlCaGJpQkZjbkp2Y2k1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFjR0Z5WVcwZ2UySnZiMnhsWVc1OUlGdGpiMjVrYVhScGIyNDlabUZzYzJWZElFTnZibVJwZEdsdmJpQjBieUJoYzNObGNuUXVYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnVzIxbGMzTmhaMlU5SjBGemMyVnlkR2x2YmlCbGNuSnZjaTRuWFNCTlpYTnpZV2RsSUhSdklHOTFkSEIxZEM1Y2JpQXFJRUIwYUhKdmQzTWdlMFZ5Y205eWZWeHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWVhOelpYSjBLR052Ym1ScGRHbHZiam9nWW05dmJHVmhiaUE5SUdaaGJITmxMQ0J0WlhOellXZGxPaUJ6ZEhKcGJtY2dQU0FuUVhOelpYSjBhVzl1SUdWeWNtOXlMaWNwSUh0Y2JpQWdhV1lnS0NGamIyNWthWFJwYjI0cFhHNGdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLRzFsYzNOaFoyVXBPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFTnlaV0YwWlhNZ2JtVjNJSFIzYnkxa2FXMWxibk5wYjI1aGJDQmhjbkpoZVNCaGJtUWdabWxzYkhNZ2FYUWdkMmwwYUNCMGFHVWdkbUZzZFdVZ1oybDJaVzR1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJR1JwYldWdWMybHZiakVnVkdobElHWnBjbk4wSUdScGJXVnVjMmx2YmlCdlppQjBhR1VnWTI5dmNtUnBibUYwWlhNZ0tHNTFiV0psY2lCdlppQnliM2R6S1M1Y2JpQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQmthVzFsYm5OcGIyNHlJRlJvWlNCelpXTnZibVFnWkdsdFpXNXphVzl1SUc5bUlIUm9aU0JqYjI5eVpHbHVZWFJsY3lBb2JuVnRZbVZ5SUc5bUlHTnZiSFZ0Ym5NcExseHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJRnRtYVd4c1BUQmRJRUVnZG1Gc2RXVWdkRzhnWm1sc2JDQjBhR1VnWTI5dmNtUnBibUYwWlhNZ2QybDBhQzVjYmlBcUlFQnlaWFIxY200Z2UwTnZiM0prYVc1aGRHVnpmU0JCSUhSM2J5MWthVzFsYm5OcGIyNWhiQ0JtYVd4c1pXUWdkMmwwYUNCMGFHVWdkbUZzZFdVZ1oybDJaVzR1WEc0Z0tpQkFkRzlrYnlCTmFXZG9kQ0JpWlNCemJHOTNJSE5wYm1ObElIVnpaV1FnUVhKeVlYa3ViV0Z3TGlCUWNtOWlZV0pzZVNCdVpXVmtjeUJ3WlhKbWIzSnRZVzVqWlNCeVpYWnBjMmx2Ymk1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnYVc1cGRFTnZiM0prYVc1aGRHVnpLR1JwYldWdWMybHZiakU2SUc1MWJXSmxjaXdnWkdsdFpXNXphVzl1TWpvZ2JuVnRZbVZ5TENCbWFXeHNPaUJ1ZFcxaVpYSWdQU0F3S1RvZ1EyOXZjbVJwYm1GMFpYTWdlMXh1SUNCeVpYUjFjbTRnYm1WM0lFRnljbUY1S0dScGJXVnVjMmx2YmpFcExtWnBiR3dvWm1sc2JDa3ViV0Z3S0NncElEMCtJQ2h1WlhjZ1ZtVmpkRzl5S0dScGJXVnVjMmx2YmpJcExtWnBiR3dvWm1sc2JDa3BLVHRjYm4xY2JseHVMeW9xWEc0Z0tpQlVjbUZ1YzNCdmMyVWdiV0YwY21sNExseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdUV0YwY21sNGZTQnRZWFJ5YVhnZ1ZHaGxJRzFoZEhKcGVDQjBieUJpWlNCMGNtRnVjM0J2YzJWa0xseHVJQ29nUUhKbGRIVnliaUI3VFdGMGNtbDRmU0JVY21GdWMzQnZjMlZrSUcxaGRISnBlQzVjYmlBcUlFQjBiMlJ2SUUxcFoyaDBJR0psSUhOc2IzY2djMmx1WTJVZ2RYTmxaQ0JCY25KaGVTNXRZWEF1SUZCeWIySmhZbXg1SUc1bFpXUnpJSEJsY21admNtMWhibU5sSUhKbGRtbHphVzl1TGx4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdkSEpoYm5Od2IzTmxUV0YwY21sNEtHMWhkSEpwZURvZ1RXRjBjbWw0S1RvZ1RXRjBjbWw0SUh0Y2JpQWdjbVYwZFhKdUlHNWxkeUJCY25KaGVTaHRZWFJ5YVhoYk1GMHViR1Z1WjNSb0tTNW1hV3hzS0RBcFhHNGdJQ0FnTG0xaGNDZ29YeXdnYVNrZ1BUNGdLRzVsZHlCV1pXTjBiM0lvYldGMGNtbDRMbXhsYm1kMGFDa3VabWxzYkNnd0tTNXRZWEFvS0Y4c0lHb3BJRDArSUNodFlYUnlhWGhiYWwxYmFWMHBLU2twTzF4dWZWeHVYRzR2S2lwY2JpQXFJRUZrWkhNZ2RIZHZJSFpsWTNSdmNuTWdkMmwwYUNCMGFHVWdjMlZqYjI1a0lHOXVaU0IwYnlCaVpTQnRkV3gwYVhCc2FXVmtJR0o1SUhSb1pTQm5hWFpsYmlCeVlYUnBieTVjYmlBcVhHNGdLaUJBWlhod2IzSjBYRzRnS2lCQWNHRnlZVzBnZTFabFkzUnZjbjBnY0NCVWFHVWdabWx5YzNRZ2RtVmpkRzl5SUhSdklHRmtaQzVjYmlBcUlFQndZWEpoYlNCN1ZtVmpkRzl5ZlNCeElGUm9aU0J6WldOdmJtUWdkbVZqZEc5eUlIUnZJR0ZrWkM1Y2JpQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQmJiWFZzZEdsd2JHbGxjajB4WFNCQklHMTFiSFJwY0d4cFpYSWdkRzhnWW1VZ2RYTmxaQ0JpWldadmNtVWdkR2hsSUhObFkyOXVaQ0IyWldOMGIzSWdhWE1nWVdSa1pXUXVYRzRnS2lCQWNtVjBkWEp1SUh0V1pXTjBiM0o5SUU1bGR5QjJaV04wYjNJZ1kyOXVkR0ZwYm1Wa0lIUm9aU0J5WlhOMWJIUWdiMllnYjNCbGNtRjBhVzl1SUhBcmJYVnNkR2x3YkdsbGNpcHhMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2RtVmpkRzl5UVdSa0tIQTZJRlpsWTNSdmNpd2djVG9nVm1WamRHOXlMQ0J0ZFd4MGFYQnNhV1Z5T2lCdWRXMWlaWElnUFNBeEtUb2dWbVZqZEc5eUlIdGNiaUFnWTI5dWMzUWdia2wwWlcxeklEMGdjQzVzWlc1bmRHZzdYRzVjYmlBZ1lYTnpaWEowS0c1SmRHVnRjeUE5UFNCeExteGxibWQwYUN3Z0oxWmxZM1J2Y2lCc1pXNW5kR2h6SUdSdklHNXZkQ0J0WVhSamFDNG5LVHRjYmx4dUlDQmpiMjV6ZENCMGIzUmhiQ0E5SUc1bGR5QldaV04wYjNJb2JrbDBaVzF6S1R0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUhBdWJHVnVaM1JvT3lBcksya3BYRzRnSUNBZ2RHOTBZV3hiYVYwZ1BTQndXMmxkSUNzZ2JYVnNkR2x3YkdsbGNpQXFJSEZiYVYwN1hHNWNiaUFnY21WMGRYSnVJSFJ2ZEdGc08xeHVmVnh1WEc0dktpcGNiaUFxSUZOMWJYTWdkR2hsSUhabFkzUnZjaWR6SUdsMFpXMXpMbHh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdWbVZqZEc5eWZTQjJJRlJvWlNCMlpXTjBiM0lnZEc4Z1ltVWdjM1Z0YldWa0xseHVJQ29nUUhKbGRIVnliaUI3Ym5WdFltVnlmU0JVYUdVZ2RtVmpkRzl5SjNNZ2FYUmxiWE1nYzNWdExseHVJQ292WEc1bWRXNWpkR2x2YmlCcGRHVnRjMU4xYlNoMk9pQldaV04wYjNJcE9pQnVkVzFpWlhJZ2UxeHVJQ0JzWlhRZ2RHOTBZV3dnUFNBd08xeHVYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2RpNXNaVzVuZEdnN0lDc3JhU2xjYmlBZ0lDQjBiM1JoYkNBclBTQjJXMmxkTzF4dVhHNGdJSEpsZEhWeWJpQjBiM1JoYkR0Y2JuMWNibHh1THlvcVhHNGdLaUJUZFhGaGNtVnpJSFJvWlNCMlpXTjBiM0luY3lCcGRHVnRjeTVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlMVpsWTNSdmNuMGdkaUJVYUdVZ2RtVmpkRzl5SUhSdklITnhkV0Z5WlM1Y2JpQXFJRUJ5WlhSMWNtNGdlMVpsWTNSdmNuMGdRU0J1WlhjZ2RtVmpkRzl5SUdOdmJuUmhhVzVwYm1jZ2RHaGxJRzl5YVdkcGJtRnNKM01nYVhSbGJYTWdjM0YxWVhKbFpDNWNiaUFxTDF4dVpuVnVZM1JwYjI0Z2RtVmpkRzl5VTNGMVlYSmxLSFk2SUZabFkzUnZjaWs2SUZabFkzUnZjaUI3WEc0Z0lHTnZibk4wSUc1SmRHVnRjeUE5SUhZdWJHVnVaM1JvTzF4dUlDQmpiMjV6ZENCMGIzUmhiQ0E5SUc1bGR5QldaV04wYjNJb2JrbDBaVzF6S1R0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUhZdWJHVnVaM1JvT3lBcksya3BYRzRnSUNBZ2RHOTBZV3hiYVYwZ1BTQjJXMmxkSUNvZ2RsdHBYVHRjYmx4dUlDQnlaWFIxY200Z2RHOTBZV3c3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQjJaV04wYjNKTVpXNW5kR2dvZGpvZ1ZtVmpkRzl5S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdiR1YwSUhOeGNsTjFiVG9nYm5WdFltVnlJRDBnTUR0Y2JpQWdabTl5SUNoc1pYUWdhVG9nYm5WdFltVnlJRDBnTURzZ2FTQThJSFl1YkdWdVozUm9PeUJwS3lzcFhHNGdJQ0FnYzNGeVUzVnRJQ3M5SUhaYmFWMGdLaUIyVzJsZE8xeHVJQ0J5WlhSMWNtNGdUV0YwYUM1emNYSjBLSE54Y2xOMWJTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCMlpXTjBiM0pFYjNSUWNtOWtkV04wS0hZeE9pQldaV04wYjNJc0lIWXlPaUJXWldOMGIzSXBPaUJ1ZFcxaVpYSWdlMXh1SUNCcFppQW9kakV1YkdWdVozUm9JQ0U5SUhZeUxteGxibWQwYUNsY2JpQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9KMVJvWlNCa2FXMWxibk5wYjI1aGJHbDBlU0J2WmlCMGFHVWdkbVZqZEc5eWN5QnRkWE4wSUcxaGRHTm9KeWs3WEc0Z0lHeGxkQ0J3Y205a09pQnVkVzFpWlhJZ1BTQXdPMXh1SUNCbWIzSWdLR3hsZENCcE9pQnVkVzFpWlhJZ1BTQXdPeUJwSUR3Z2RqRXViR1Z1WjNSb095QnBLeXNwWEc0Z0lDQWdjSEp2WkNBclBTQjJNVnRwWFNBcUlIWXlXMmxkTzF4dUlDQnlaWFIxY200Z2NISnZaRHRjYm4xY2JseHVMeW9xWEc0Z0tpQkRjbVZoZEdWeklHRWdiV0YwY21sNElHWnBiR3hsWkNCM2FYUm9JSEpoYm1SdmJTQm1iRzloZEdsdVp5QndiMmx1ZENCMllXeDFaWE11WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUdScGJXVnVjMmx2YmpFZ1ZHaGxJR1pwY25OMElHUnBiV1Z1YzJsdmJpQnZaaUIwYUdVZ2JXRjBjbWw0TGx4dUlDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlHUnBiV1Z1YzJsdmJqSWdWR2hsSUhObFkyOXVaQ0JrYVcxbGJuTnBiMjRnYjJZZ2RHaGxJRzFoZEhKcGVDNWNiaUFxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0JiYzJOaGJHVTlNUzVkSUUxaGVDQjJZV3gxWlNCbmFYWmxiaUJpZVNCeVlXNWtiMjBnWjJWdVpYSmhkRzl5TGx4dUlDb2dRSEpsZEhWeWJpQjdUV0YwY21sNGZTQkJJRzVsZHlCdFlYUnlhWGdnWm1sc2JHVmtJSGRwZEdnZ2NtRnVaRzl0SUdac2IyRjBhVzVuSUhCdmFXNTBJQ0IyWVd4MVpYTXVYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCbWFXeHNVbUZ1Wkc5dFRXRjBjbWw0S0dScGJXVnVjMmx2YmpFNklHNTFiV0psY2l3Z1pHbHRaVzV6YVc5dU1qb2diblZ0WW1WeUxDQnpZMkZzWlRvZ2JuVnRZbVZ5SUQwZ01TNHBPaUJOWVhSeWFYZ2dlMXh1SUNCamIyNXpkQ0J0WVhSeWFYZ2dQU0JwYm1sMFEyOXZjbVJwYm1GMFpYTW9aR2x0Wlc1emFXOXVNU3dnWkdsdFpXNXphVzl1TWlrN1hHNWNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCa2FXMWxibk5wYjI0eE95QXJLMmtwSUh0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JxSUQwZ01Ec2dhaUE4SUdScGJXVnVjMmx2YmpJN0lDc3JhaWxjYmlBZ0lDQWdJRzFoZEhKcGVGdHBYVnRxWFNBOUlISmhibVJ2YlVac2IyRjBLSE5qWVd4bEtUdGNiaUFnZlZ4dUlDQnlaWFIxY200Z2JXRjBjbWw0TzF4dWZWeHVYRzR2S2lwY2JpQXFJRU5oYkdOMWJHRjBaWE1nUlhWamJHbGtaV0Z1SUdScGMzUmhibU5sSUdKbGRIZGxaVzRnZEhkdklIWmxZM1J2Y25NdVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRSEJoY21GdElIdFdaV04wYjNKOUlIQWdWR2hsSUdacGNuTjBJSFpsWTNSdmNpNWNiaUFxSUVCd1lYSmhiU0I3Vm1WamRHOXlmU0J4SUZSb1pTQnpaV052Ym1RZ2RtVmpkRzl5TGx4dUlDb2dRSEpsZEhWeWJpQjdiblZ0WW1WeWZTQkZkV05zYVdSbFlXNGdaR2x6ZEdGdVkyVWdZbVYwZDJWbGJpQjBhR1VnWjJsMlpXNGdkbVZqZEc5eWN5NWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdOaGJHTjFiR0YwWlVWMVkyeHBaR1ZoYmtScGMzUmhibU5sS0hBNklGWmxZM1J2Y2l3Z2NUb2dWbVZqZEc5eUtUb2diblZ0WW1WeUlIdGNiaUFnWTI5dWMzUWdaR2xtWmlBOUlIWmxZM1J2Y2tGa1pDaHdMQ0J4TENBdE1TazdYRzRnSUdOdmJuTjBJSE54WkdsbVppQTlJSFpsWTNSdmNsTnhkV0Z5WlNoa2FXWm1LVHRjYmlBZ1kyOXVjM1FnYzNGa2FXWm1VM1Z0YlNBOUlHbDBaVzF6VTNWdEtITnhaR2xtWmlrN1hHNGdJSEpsZEhWeWJpQk5ZWFJvTG5OeGNuUW9jM0ZrYVdabVUzVnRiU2s3WEc1OVhHNWNiaThxS2x4dUlDb2dRM0psWVhSbGN5QmhJR1JwYzNSaGJtTmxJRzFoZEhKcGVDQjFjMmx1WnlCaElHTjFjM1J2YlNCa2FYTjBZVzVqWlNCbWRXNWpkR2x2Ymk1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFjR0Z5WVcwZ2UxWmxZM1J2Y25OOUlHUmhkR0VnU1c1d2RYUWdkbVZqZEc5eWN5QjBieUJqWVd4amRXeGhkR1VnWkdsemRHRnVZMlZ6TGx4dUlDb2dRSEJoY21GdElIdEVhWE4wWVc1alpVMWxkSEpwWTMwZ1pHbHpkR0Z1WTJVZ1EzVnpkRzl0SUdScGMzUmhibU5sSUdaMWJtTjBhVzl1TGx4dUlDb2dRSEpsZEhWeWJpQjdUV0YwY21sNGZTQkRZV3hqZFd4aGRHVmtJR04xYzNSdmJTQmthWE4wWVc1alpTQnRZWFJ5YVhndVhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJqWVd4alJHbHpkR0Z1WTJWTllYUnlhWGdvWkdGMFlUb2dWbVZqZEc5eWN5d2daR2x6ZEdGdVkyVTZJRVJwYzNSaGJtTmxUV1YwY21saktUb2dUV0YwY21sNElIdGNiaUFnWTI5dWMzUWdia2wwWlcxeklEMGdaR0YwWVM1c1pXNW5kR2c3WEc0Z0lHTnZibk4wSUcxaGRISnBlQ0E5SUdsdWFYUkRiMjl5WkdsdVlYUmxjeWh1U1hSbGJYTXNJRzVKZEdWdGN5d2dNQ2s3WEc1Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0J1U1hSbGJYTTdJQ3NyYVNrZ2UxeHVJQ0FnSUdadmNpQW9iR1YwSUdvZ1BTQnBJQ3NnTVRzZ2FpQThJRzVKZEdWdGN6c2dLeXRxS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0JrT2lCdWRXMWlaWElnUFNBb1pHRjBZVnRwWFNBOVBTQnVkV3hzS1NCOGZDQW9aR0YwWVZ0cVhTQTlQU0J1ZFd4c0tTQS9JREFnT2lCa2FYTjBZVzVqWlNoa1lYUmhXMmxkTENCa1lYUmhXMnBkS1R0Y2JpQWdJQ0FnSUcxaGRISnBlRnRwWFZ0cVhTQTlJRzFoZEhKcGVGdHFYVnRwWFNBOUlHUTdYRzRnSUNBZ2ZWeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCdFlYUnlhWGc3WEc1OVhHNWNiaThxS2x4dUlDb2dRM0psWVhSbGN5QmhJR1JwYzNSaGJtTmxJRzFoZEhKcGVDQjFjMmx1WnlCaElHTjFjM1J2YlNCa2FYTjBZVzVqWlNCbWRXNWpkR2x2Ymk1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFjR0Z5WVcwZ2UxWmxZM1J2Y25OOUlHUmhkR0VnU1c1d2RYUWdkbVZqZEc5eWN5QjBieUJqWVd4amRXeGhkR1VnWkdsemRHRnVZMlZ6TGx4dUlDb2dRSEJoY21GdElIdEVhWE4wWVc1alpVMWxkSEpwWTMwZ1pHbHpkR0Z1WTJVZ1EzVnpkRzl0SUdScGMzUmhibU5sSUdaMWJtTjBhVzl1TGx4dUlDb2dRSEpsZEhWeWJpQjdUV0YwY21sNGZTQkRZV3hqZFd4aGRHVmtJR04xYzNSdmJTQmthWE4wWVc1alpTQnRZWFJ5YVhndVhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJqWVd4alRtOXliV0ZzYVhwbFpFUnBjM1JoYm1ObFRXRjBjbWw0S0dSaGRHRTZJRlpsWTNSdmNuTXNJR1JwYzNSaGJtTmxPaUJFYVhOMFlXNWpaVTFsZEhKcFl5azZJRTFoZEhKcGVDQjdYRzRnSUdOdmJuTjBJRzVKZEdWdGN5QTlJR1JoZEdFdWJHVnVaM1JvTzF4dUlDQmpiMjV6ZENCdFlYUnlhWGdnUFNCcGJtbDBRMjl2Y21ScGJtRjBaWE1vYmtsMFpXMXpMQ0J1U1hSbGJYTXNJREFwTzF4dUlDQnNaWFFnYldGNElEMGdUblZ0WW1WeUxrMUpUbDlXUVV4VlJUdGNiaUFnYkdWMElHMXBiaUE5SUU1MWJXSmxjaTVOUVZoZlZrRk1WVVU3WEc0Z0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2dia2wwWlcxek95QXJLMmtwSUh0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JxSUQwZ2FUc2dhaUE4SUc1SmRHVnRjenNnS3l0cUtTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCa09pQnVkVzFpWlhJZ1BTQW9aR0YwWVZ0cFhTQTlQU0J1ZFd4c0tTQjhmQ0FvWkdGMFlWdHFYU0E5UFNCdWRXeHNJSHg4SUdrZ1BUMDlJR29wSUQ4Z01DQTZJR1JwYzNSaGJtTmxLR1JoZEdGYmFWMHNJR1JoZEdGYmFsMHBPMXh1SUNBZ0lDQWdiV0YwY21sNFcybGRXMnBkSUQwZ2JXRjBjbWw0VzJwZFcybGRJRDBnWkR0Y2JpQWdJQ0FnSUdsbUlDaGtJRDRnYldGNEtTQnRZWGdnUFNCa08xeHVJQ0FnSUNBZ2FXWWdLR1FnUENCdGFXNHBJRzFwYmlBOUlHUTdYRzRnSUNBZ2ZWeHVJQ0I5WEc0Z0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2dia2wwWlcxek95QXJLMmtwSUh0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JxSUQwZ2FTQXJJREU3SUdvZ1BDQnVTWFJsYlhNN0lDc3JhaWxjYmlBZ0lDQWdJRzFoZEhKcGVGdHBYVnRxWFNBOUlHMWhkSEpwZUZ0cVhWdHBYU0E5SUNodFlYUnlhWGhiYVYxYmFsMGdMU0J0YVc0cElDOGdLRzFoZUNBdElHMXBiaWs3WEc0Z0lIMWNiaUFnY21WMGRYSnVJRzFoZEhKcGVEdGNibjFjYmx4dUx5b3FJRWRsYm1WeVlYUmxjeUJoY25KaGVTQm1jbTl0SUdFZ2NtRnVaMlVnVzJKbFoybHVPeUJsYm1SZElHOXlJRnRpWldkcGJqc2daVzVrS1NCcFppQmxibVJGZUdOc2RYTnBkbVV1SUNvcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHZGxibEpoYm1kbEtHSmxaMmx1T2lCdWRXMWlaWElzSUdWdVpEb2diblZ0WW1WeUxDQmxibVJGZUdOc2RYTnBkbVVnUFNCbVlXeHpaU2s2SUVsdWRETXlRWEp5WVhrZ2UxeHVJQ0JqYjI1emRDQnVTWFJsYlhNZ1BTQmxibVFnTFNCaVpXZHBiaUFySUNobGJtUkZlR05zZFhOcGRtVWdQeUF3SURvZ01TazdYRzRnSUdOdmJuTjBJSE5sY21sbGN5QTlJRzVsZHlCSmJuUXpNa0Z5Y21GNUtHNUpkR1Z0Y3lrN1hHNWNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCdVNYUmxiWE03SUNzcmFTbGNiaUFnSUNCelpYSnBaWE5iYVYwZ1BTQmlaV2RwYmlBcklHazdYRzVjYmlBZ2NtVjBkWEp1SUhObGNtbGxjenRjYm4xY2JseHVMeW9xWEc0Z0tpQlNaWFIxY201eklHOXlaR1Z5SUc5bUlIWmhiSFZsY3lCaGN5QnBaaUIwYUdWNUlHRnlaU0J6YjNKMFpXUXVYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUhCaGNtRnRJSHRoYm5sYlhYMGdkbUZzZFdWeklFbHVjSFYwSUdGeWNtRjVMbHh1SUNvZ1FIQmhjbUZ0SUh0aWIyOXNaV0Z1ZlNCYmNtVjJaWEp6WlQxbVlXeHpaVjBnVjJobGRHaGxjaUIwYnlCeVpYUjFjbTRnY21WMlpYSnpaV1FnYjNKa1pYSXVYRzRnS2lCQWNtVjBkWEp1SUh0dWRXMWlaWEpiWFgwZ1ZHaGxJRzl5WkdWeUlHTnZiWEIxZEdWa0xseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWVhKblUyOXlkQ2gyWVd4MVpYTTZJR0Z1ZVZ0ZExDQnlaWFpsY25ObElEMGdabUZzYzJVcE9pQnVkVzFpWlhKYlhTQjdYRzRnSUdOdmJuTjBJSE52Y25SbWJpQTlJSEpsZG1WeWMyVWdQeUFvWVRvZ1lXNTVXMTBzSUdJNklHRnVlVnRkS1NBOVBpQW9ZbHN3WFNBdElHRmJNRjBwSURvZ0tHRTZJR0Z1ZVZ0ZExDQmlPaUJoYm5sYlhTa2dQVDRnS0dGYk1GMGdMU0JpV3pCZEtUdGNiaUFnWTI5dWMzUWdaR1ZqYjNJZ1BTQW9kam9nWVc1NUxDQnBPaUJ1ZFcxaVpYSXBJRDArSUZ0MkxDQnBYVHNnTHk4Z2MyVjBJR2x1WkdWNElIUnZJSFpoYkhWbFhHNGdJR052Ym5OMElIVnVaR1ZqYjNJZ1BTQW9ZVG9nWVc1NVcxMHBJRDArSUdGYk1WMDdJQzh2SUd4bFlYWmxJRzl1YkhrZ2FXNWtaWGhjYmlBZ1kyOXVjM1FnWDJGeVozTnZjblFnUFNBb1lYSnlPaUJoYm5sYlhTa2dQVDRnWVhKeUxtMWhjQ2hrWldOdmNpa3VjMjl5ZENoemIzSjBabTRwTG0xaGNDaDFibVJsWTI5eUtUdGNiaUFnY21WMGRYSnVJRjloY21kemIzSjBLSFpoYkhWbGN5azdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1VtVjBkWEp1Y3lCMGFHVWdhVzVrWlhobGN5QnZaaUIwYUdVZ2JXOXpkQ0JrYVhabGNuTmxJRzlpYW1WamRITWdZV05qYjNKa2FXNW5JSFJ2SUhSb1pTQmthWE4wSUdaMWJtTjBhVzl1WEc0Z0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ2JHVnVaM1JvSUhSdmRHRnNJRzUxYldKbGNpQnZaaUJ2WW1wbFkzUnpYRzRnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnYmlCdWRXMWlaWElnYjJZZ1pHbDJaWEp6WlNCbGJHVnRaVzUwY3lCMGJ5Qm1hVzVrWEc0Z0tpQkFjR0Z5WVcwZ2V5aHBNVG9nYm5WdFltVnlMQ0JwTWpvZ2JuVnRZbVZ5S1NBOVBpQnVkVzFpWlhKOUlHUnBjM1FnWVNCbWRXNWpkR2x2YmlCM2FHbGphQ0JqWVd4amRXeGhkR1Z6SUdScGMzUmhibU5sSUdKbGRIZGxaVzVjYmlBcUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwZDI4Z2IySnFaV04wY3lCMWMybHVaeUIwYUdWcGNpQnBibVJsZUdWelhHNGdLaUJBY21WMGRYSnVjeUI3Ym5WdFltVnlXMTE5SUZSb1pTQnBibVJsZUdWeklHOW1JSFJvWlNCdGIzTjBJR1JwZG1WeWMyVWdiMkpxWldOMGMxeHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWjJWMFJHbDJaWEp6WlZOMVluTmxkQ2hzWlc1bmRHZzZJRzUxYldKbGNpd2diam9nYm5WdFltVnlMQ0JrYVhOME9pQW9hVEU2SUc1MWJXSmxjaXdnYVRJNklHNTFiV0psY2lrZ1BUNGdiblZ0WW1WeUtUb2diblZ0WW1WeVcxMGdlMXh1SUNCbWRXNWpkR2x2YmlCdFlYaENlU2gyWVd4MVpYTTZJRWwwWlhKaFlteGxTWFJsY21GMGIzSThiblZ0WW1WeVBpd2diM0prWlhKQ2VUb2dLR2s2SUc1MWJXSmxjaWtnUFQ0Z2JuVnRZbVZ5S1NCN1hHNGdJQ0FnYkdWMElHMWhlRlpoYkhWbElEMGdiblZzYkR0Y2JpQWdJQ0JzWlhRZ2JXRjRUM0prWlhKQ2VTQTlJRzUxYkd3N1hHNWNiaUFnSUNCbWIzSWdLR052Ym5OMElHVnNaVzFsYm5RZ2IyWWdkbUZzZFdWektTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCbGJHVnRaVzUwVDNKa1pYSkNlU0E5SUc5eVpHVnlRbmtvWld4bGJXVnVkQ2s3WEc0Z0lDQWdJQ0JwWmlBb2JXRjRUM0prWlhKQ2VTQTlQU0J1ZFd4c0lIeDhJR1ZzWlcxbGJuUlBjbVJsY2tKNUlENGdiV0Y0VDNKa1pYSkNlU2tnZTF4dUlDQWdJQ0FnSUNCdFlYaFdZV3gxWlNBOUlHVnNaVzFsYm5RN1hHNGdJQ0FnSUNBZ0lHMWhlRTl5WkdWeVFua2dQU0JsYkdWdFpXNTBUM0prWlhKQ2VUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJRzFoZUZaaGJIVmxPMXh1SUNCOVhHNWNiaUFnWTI5dWMzUWdjM1ZpYzJWMElEMGdXM0poYm1SdmJVbHVkQ2hzWlc1bmRHZ2dMU0F4S1YwN1hHNGdJR052Ym5OMElHTnZiWEJzWlcxbGJuUWdQU0J1WlhjZ1UyVjBLQ2s3WEc1Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0JzWlc1bmRHZzdJQ3NyYVNrZ2UxeHVJQ0FnSUdsbUlDZ2hjM1ZpYzJWMExtbHVZMngxWkdWektHa3BLVnh1SUNBZ0lDQWdZMjl0Y0d4bGJXVnVkQzVoWkdRb2FTazdYRzRnSUgxY2JseHVJQ0IzYUdsc1pTQW9jM1ZpYzJWMExteGxibWQwYUNBOElHNHBJSHRjYmlBZ0lDQmpiMjV6ZENCcFpIZ2dQU0J0WVhoQ2VTaGNiaUFnSUNBZ0lHTnZiWEJzWlcxbGJuUXVkbUZzZFdWektDa2dZWE1nU1hSbGNtRmliR1ZKZEdWeVlYUnZjanh1ZFcxaVpYSStMRnh1SUNBZ0lDQWdLR2twSUQwK0lFMWhkR2d1YldsdUxtRndjR3g1S0UxaGRHZ3NJSE4xWW5ObGRDNXRZWEFvWm5WdVkzUnBiMjRvZG1Gc0xDQnBibVJsZUNrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1pHbHpkQ2hwTENCMllXd3BPMXh1SUNBZ0lDQWdmU2twS1R0Y2JpQWdJQ0JwWmlBb2FXUjRLU0I3WEc0Z0lDQWdJQ0J6ZFdKelpYUXVjSFZ6YUNocFpIZ3BPMXh1SUNBZ0lDQWdZMjl0Y0d4bGJXVnVkQzVrWld4bGRHVW9hV1I0S1R0Y2JpQWdJQ0I5WEc0Z0lIMWNiaUFnY21WMGRYSnVJSE4xWW5ObGREdGNibjFjYmx4dUx5b3FYRzRnS2lCU1pYUjFjbTV6SUc1dmNtMWhiR2w2WldRZ2RtVmpkRzl5WEc0Z0tpQkFjR0Z5WVcwZ2UxWmxZM1J2Y24wZ1pHRjBZU0J1ZFcxbGNtbGpZV3dnWVhKeVlYbGNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUc1dmNtMWhiR2w2WlNoa1lYUmhPaUJXWldOMGIzSXBPaUJXWldOMGIzSWdlMXh1SUNCc1pYUWdiV1ZoYmlBOUlEQTdYRzRnSUd4bGRDQnpkR1FnUFNBd08xeHVYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z1pHRjBZUzVzWlc1bmRHZzdJQ3NyYVNsY2JpQWdJQ0J0WldGdUlDczlJR1JoZEdGYmFWMDdYRzVjYmlBZ2JXVmhiaUF2UFNCa1lYUmhMbXhsYm1kMGFEdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHUmhkR0V1YkdWdVozUm9PeUFySzJrcFhHNGdJQ0FnYzNSa0lDczlJQ2hrWVhSaFcybGRJQzBnYldWaGJpa2dLaUFvWkdGMFlWdHBYU0F0SUcxbFlXNHBPMXh1WEc0Z0lITjBaQ0E5SUUxaGRHZ3VjM0Z5ZENoemRHUWdMeUJrWVhSaExteGxibWQwYUNrN1hHNWNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCa1lYUmhMbXhsYm1kMGFEc2dLeXRwS1Z4dUlDQWdJR1JoZEdGYmFWMGdQU0FvWkdGMFlWdHBYU0F0SUcxbFlXNHBJQzhnYzNSa08xeHVYRzRnSUhKbGRIVnliaUJrWVhSaE8xeHVmVnh1WEc0dktpcGNiaUFxSUVacGJtUnpJSE5sZENCa2FXWm1aWEpsYm1ObElHSmxkSGRsWlc0Z2RIZHZJR3hwYzNSekxseHVJQ29nUUhCaGNtRnRJSHRoYm5sYlhYMGdZU0JVYUdVZ1ptbHljM1FnYkdsemRDNWNiaUFxSUVCd1lYSmhiU0I3WVc1NVcxMTlJR0lnVkdobElITmxZMjl1WkNCc2FYTjBMbHh1SUNvZ1FISmxkSFZ5YmlCN1lXNTVXMTE5WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnpaWFJFYVdabVpYSmxibU5sS0dFNklHRnVlVnRkTENCaU9pQmhibmxiWFNrNklHRnVlVnRkSUh0Y2JpQWdZMjl1YzNRZ1lsTmxkQ0E5SUc1bGR5QlRaWFFvWWlrN1hHNGdJSEpsZEhWeWJpQkJjbkpoZVM1bWNtOXRLRzVsZHlCVFpYUW9ZUzVtYVd4MFpYSW9LSGdwSUQwK0lDRmlVMlYwTG1oaGN5aDRLU2twTG5aaGJIVmxjeWdwS1R0Y2JuMWNiaUpkZlE9PSIsIi8qKiBQcm94eSBmb3IgRGlzdGFuY2VNYXRyaXggY2xhc3MuIEFsbG93cyB0byBpbmRleCBtYXRyaXggYXMgbWF0cml4W2ldW2pdXG4gKiBOb3RlOiBtdWNoIHNsb3dlciB0aGFuIGRpcmVjdCBpbmRleGluZywgYnV0IHN0aWxsIG11Y2ggZmFzdGVyIHRoYW4gcmVjYWxjdWxhdGluZyBkaXN0YW5jZXMuXG4gKiB3aWxsIGJlIHVzZWQgZm9yIFQtU05FIG1haW5seS5cbiAqIEBwYXJhbSB7RmxvYXQzMkFycmF5fWNvbmRlbnNlZEFycmF5IC0gYXJyYXkgb2YgZGlzdGFuY2VzIGJldHdlZW4gYWxsIHBhaXJzIG9mIG9iamVjdHNcbiAqIEBwYXJhbSB7bnVtYmVyfXNpemUgLSBudW1iZXIgb2YgY29tcGFyZWJsZXMgaW4gbWF0cml4XG4gKiBAcmV0dXJuIHtGbG9hdDMyQXJyYXl9IC0gcHJveHkgZm9yIGNvbmRlbnNlZEFycmF5XG4qL1xuZXhwb3J0IGZ1bmN0aW9uIGRpc3RhbmNlTWF0cml4UHJveHkoY29uZGVuc2VkQXJyYXksIHNpemUpIHtcbiAgICBjb25zdCBsaW5lYXJGdW5jID0gZG1MaW5lYXJJbmRleChzaXplKTtcbiAgICBmdW5jdGlvbiBsaW5lYXJJbmRleChpLCBqKSB7XG4gICAgICAgIGNvbnN0IGlOdW0gPSBOdW1iZXIoaSk7XG4gICAgICAgIGNvbnN0IGpOdW0gPSBOdW1iZXIoaik7XG4gICAgICAgIHJldHVybiBsaW5lYXJGdW5jKGlOdW0sIGpOdW0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpZHgySGFuZGxlcihpZHgxKSB7XG4gICAgICAgIHJldHVybiAoe1xuICAgICAgICAgICAgZ2V0KHRhcmdldCwgaWR4MiwgX3JlY2VpdmVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlkeDEgPT09IGlkeDIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmVhcklkeCA9IE51bWJlcihpZHgxKSA+IE51bWJlcihpZHgyKSA/IGxpbmVhckluZGV4KGlkeDIsIGlkeDEpIDogbGluZWFySW5kZXgoaWR4MSwgaWR4Mik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtsaW5lYXJJZHhdO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGlkeDFIYW5kbGVyID0ge1xuICAgICAgICBnZXQodGFyZ2V0LCBpZHgxLCBfcmVjZWl2ZXIpIHtcbiAgICAgICAgICAgIGlmIChpZHgxID09PSAnbGVuZ3RoJylcbiAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJveHkodGFyZ2V0LCBpZHgySGFuZGxlcihpZHgxKSk7XG4gICAgICAgIH0sXG4gICAgfTtcbiAgICByZXR1cm4gbmV3IFByb3h5KGNvbmRlbnNlZEFycmF5LCBpZHgxSGFuZGxlcik7XG59XG5leHBvcnQgZnVuY3Rpb24gZG1MaW5lYXJJbmRleChzaXplKSB7XG4gICAgcmV0dXJuIChpLCBqKSA9PiBzaXplICogaSArIGogLSBNYXRoLmZsb29yKCgoaSArIDIpICogKGkgKyAxKSkgLyAyKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWNISnZlSGt1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SndjbTk0ZVM1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkZRVHM3T3pzN08wVkJUVVU3UVVGRFJpeE5RVUZOTEZWQlFWVXNiVUpCUVcxQ0xFTkJRVU1zWTBGQk5FSXNSVUZCUlN4SlFVRlpPMGxCUXpWRkxFMUJRVTBzVlVGQlZTeEhRVUZITEdGQlFXRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVOMlF5eFRRVUZUTEZkQlFWY3NRMEZCUXl4RFFVRnJRaXhGUVVGRkxFTkJRV3RDTzFGQlEzcEVMRTFCUVUwc1NVRkJTU3hIUVVGSExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTjJRaXhOUVVGTkxFbEJRVWtzUjBGQlJ5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRka0lzVDBGQlR5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8wbEJRMmhETEVOQlFVTTdTVUZGUkN4VFFVRlRMRmRCUVZjc1EwRkJReXhKUVVGeFFqdFJRVU40UXl4UFFVRlBMRU5CUTB3N1dVRkRSU3hIUVVGSExFTkJRVU1zVFVGQlRTeEZRVUZGTEVsQlFVa3NSVUZCUlN4VFFVRlRPMmRDUVVONlFpeEpRVUZKTEVsQlFVa3NTMEZCU3l4SlFVRkpPMjlDUVVGRkxFOUJRVThzUTBGQlF5eERRVUZETzJkQ1FVTTFRaXhOUVVGTkxGTkJRVk1zUjBGQlJ5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4WFFVRlhMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4WFFVRlhMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzJkQ1FVTnNSeXhQUVVGUExFMUJRVTBzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXp0WlFVTXpRaXhEUVVGRE8xTkJRMFlzUTBGRFJpeERRVUZETzBsQlEwb3NRMEZCUXp0SlFVTkVMRTFCUVUwc1YwRkJWeXhIUVVFclFqdFJRVU01UXl4SFFVRkhMRU5CUVVNc1RVRkJUU3hGUVVGRkxFbEJRVWtzUlVGQlJTeFRRVUZUTzFsQlEzcENMRWxCUVVrc1NVRkJTU3hMUVVGTExGRkJRVkU3WjBKQlFVVXNUMEZCVHl4SlFVRkpMRU5CUVVNN1dVRkRia01zVDBGQlR5eEpRVUZKTEV0QlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1YwRkJWeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZET1VNc1EwRkJRenRMUVVOR0xFTkJRVU03U1VGRlJpeFBRVUZQTEVsQlFVa3NTMEZCU3l4RFFVRkRMR05CUVdNc1JVRkJSU3hYUVVGWExFTkJRVU1zUTBGQlF6dEJRVU5vUkN4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHRkJRV0VzUTBGQlF5eEpRVUZaTzBsQlEzaERMRTlCUVU4c1EwRkJReXhEUVVGVExFVkJRVVVzUTBGQlV5eEZRVUZGTEVWQlFVVXNRMEZCUXl4SlFVRkpMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTjBSaXhEUVVGRElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lYRzVjYmk4cUtpQlFjbTk0ZVNCbWIzSWdSR2x6ZEdGdVkyVk5ZWFJ5YVhnZ1kyeGhjM011SUVGc2JHOTNjeUIwYnlCcGJtUmxlQ0J0WVhSeWFYZ2dZWE1nYldGMGNtbDRXMmxkVzJwZFhHNGdLaUJPYjNSbE9pQnRkV05vSUhOc2IzZGxjaUIwYUdGdUlHUnBjbVZqZENCcGJtUmxlR2x1Wnl3Z1luVjBJSE4wYVd4c0lHMTFZMmdnWm1GemRHVnlJSFJvWVc0Z2NtVmpZV3hqZFd4aGRHbHVaeUJrYVhOMFlXNWpaWE11WEc0Z0tpQjNhV3hzSUdKbElIVnpaV1FnWm05eUlGUXRVMDVGSUcxaGFXNXNlUzVjYmlBcUlFQndZWEpoYlNCN1JteHZZWFF6TWtGeWNtRjVmV052Ym1SbGJuTmxaRUZ5Y21GNUlDMGdZWEp5WVhrZ2IyWWdaR2x6ZEdGdVkyVnpJR0psZEhkbFpXNGdZV3hzSUhCaGFYSnpJRzltSUc5aWFtVmpkSE5jYmlBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlhOcGVtVWdMU0J1ZFcxaVpYSWdiMllnWTI5dGNHRnlaV0pzWlhNZ2FXNGdiV0YwY21sNFhHNGdLaUJBY21WMGRYSnVJSHRHYkc5aGRETXlRWEp5WVhsOUlDMGdjSEp2ZUhrZ1ptOXlJR052Ym1SbGJuTmxaRUZ5Y21GNVhHNHFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR1JwYzNSaGJtTmxUV0YwY21sNFVISnZlSGtvWTI5dVpHVnVjMlZrUVhKeVlYazZJRVpzYjJGME16SkJjbkpoZVN3Z2MybDZaVG9nYm5WdFltVnlLVG9nUm14dllYUXpNa0Z5Y21GNUlIdGNiaUFnWTI5dWMzUWdiR2x1WldGeVJuVnVZeUE5SUdSdFRHbHVaV0Z5U1c1a1pYZ29jMmw2WlNrN1hHNGdJR1oxYm1OMGFXOXVJR3hwYm1WaGNrbHVaR1Y0S0drNklITjViV0p2YkNCOElITjBjbWx1Wnl3Z2Fqb2djM2x0WW05c0lId2djM1J5YVc1bktTQjdYRzRnSUNBZ1kyOXVjM1FnYVU1MWJTQTlJRTUxYldKbGNpaHBLVHRjYmlBZ0lDQmpiMjV6ZENCcVRuVnRJRDBnVG5WdFltVnlLR29wTzF4dUlDQWdJSEpsZEhWeWJpQnNhVzVsWVhKR2RXNWpLR2xPZFcwc0lHcE9kVzBwTzF4dUlDQjlYRzVjYmlBZ1puVnVZM1JwYjI0Z2FXUjRNa2hoYm1Sc1pYSW9hV1I0TVRvZ2MzbHRZbTlzSUh3Z2MzUnlhVzVuS1RwUWNtOTRlVWhoYm1Sc1pYSThSbXh2WVhRek1rRnljbUY1UGlCN1hHNGdJQ0FnY21WMGRYSnVJQ2hjYmlBZ0lDQWdJSHRjYmlBZ0lDQWdJQ0FnWjJWMEtIUmhjbWRsZEN3Z2FXUjRNaXdnWDNKbFkyVnBkbVZ5S1NCN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0dsa2VERWdQVDA5SUdsa2VESXBJSEpsZEhWeWJpQXdPMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR3hwYm1WaGNrbGtlQ0E5SUU1MWJXSmxjaWhwWkhneEtTQStJRTUxYldKbGNpaHBaSGd5S1NBL0lHeHBibVZoY2tsdVpHVjRLR2xrZURJc0lHbGtlREVwSURvZ2JHbHVaV0Z5U1c1a1pYZ29hV1I0TVN3Z2FXUjRNaWs3WEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSaGNtZGxkRnRzYVc1bFlYSkpaSGhkTzF4dUlDQWdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNrN1hHNGdJSDFjYmlBZ1kyOXVjM1FnYVdSNE1VaGhibVJzWlhJNklGQnliM2g1U0dGdVpHeGxjanhHYkc5aGRETXlRWEp5WVhrK0lEMGdlMXh1SUNBZ0lHZGxkQ2gwWVhKblpYUXNJR2xrZURFc0lGOXlaV05sYVhabGNpa2dlMXh1SUNBZ0lDQWdhV1lnS0dsa2VERWdQVDA5SUNkc1pXNW5kR2duS1NCeVpYUjFjbTRnYzJsNlpUdGNiaUFnSUNBZ0lISmxkSFZ5YmlCdVpYY2dVSEp2ZUhrb2RHRnlaMlYwTENCcFpIZ3lTR0Z1Wkd4bGNpaHBaSGd4S1NrN1hHNGdJQ0FnZlN4Y2JpQWdmVHRjYmx4dUlDQnlaWFIxY200Z2JtVjNJRkJ5YjNoNUtHTnZibVJsYm5ObFpFRnljbUY1TENCcFpIZ3hTR0Z1Wkd4bGNpazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCa2JVeHBibVZoY2tsdVpHVjRLSE5wZW1VNklHNTFiV0psY2lrNklDaHBPaUJ1ZFcxaVpYSXNJR282SUc1MWJXSmxjaWtnUFQ0Z2JuVnRZbVZ5SUh0Y2JpQWdjbVYwZFhKdUlDaHBPaUJ1ZFcxaVpYSXNJR282SUc1MWJXSmxjaWtnUFQ0Z2MybDZaU0FxSUdrZ0t5QnFJQzBnVFdGMGFDNW1iRzl2Y2lnb0tHa2dLeUF5S1NBcUlDaHBJQ3NnTVNrcElDOGdNaWs3WEc1OVhHNGlYWDA9IiwiZXhwb3J0IGNsYXNzIERpc3RhbmNlTWF0cml4U2VydmljZSB7XG4gICAgY29uc3RydWN0b3IodXNlQ29uY3VycmVudFdvcmtlcnMgPSB0cnVlLCB0ZXJtaW5hdGVPbkNvbXBsZXRlID0gdHJ1ZSkge1xuICAgICAgICBjb25zdCB0aHJlYWRDb3VudCA9IG5hdmlnYXRvci5oYXJkd2FyZUNvbmN1cnJlbmN5O1xuICAgICAgICB0aGlzLl93b3JrZXJDb3VudCA9IHVzZUNvbmN1cnJlbnRXb3JrZXJzID8gTWF0aC5tYXgodGhyZWFkQ291bnQgLSAyLCAxKSA6IDE7XG4gICAgICAgIHRoaXMuX3dvcmtlcnMgPSBuZXcgQXJyYXkodGhpcy5fd29ya2VyQ291bnQpLmZpbGwobnVsbClcbiAgICAgICAgICAgIC5tYXAoKCkgPT4gbmV3IFdvcmtlcihuZXcgVVJMKCcuL2Rpc3RhbmNlLW1hdHJpeC13b3JrZXInLCBpbXBvcnQubWV0YS51cmwpKSk7XG4gICAgICAgIHRoaXMuX3Rlcm1pbmF0ZU9uQ29tcGxldGUgPSB0ZXJtaW5hdGVPbkNvbXBsZXRlO1xuICAgIH1cbiAgICA7XG4gICAgYXN5bmMgY2FsYyh2YWx1ZXMsIGZuTmFtZSwgbm9ybWFsaXplID0gdHJ1ZSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBsZW4gPSB2YWx1ZXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGNvbnN0IHByb21pc2VzID0gbmV3IEFycmF5KHRoaXMuX3dvcmtlckNvdW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCB0b3RhbExlbmd0aCA9IGxlbiAqIChsZW4gLSAxKSAvIDI7IC8vIHNpemUgb2YgcmVkdWNlZCBkaXN0YW5jZSBtYXRyaXhcbiAgICAgICAgICAgICAgICB0aGlzLl93b3JrZXJDb3VudCA9IE1hdGgubWluKHRoaXMuX3dvcmtlckNvdW50LCB0b3RhbExlbmd0aCk7XG4gICAgICAgICAgICAgICAgY29uc3QgY2h1bmtTaXplID0gdG90YWxMZW5ndGggLyB0aGlzLl93b3JrZXJDb3VudDtcbiAgICAgICAgICAgICAgICBjb25zdCBkaXN0YW5jZU1hdHJpeCA9IG5ldyBGbG9hdDMyQXJyYXkodG90YWxMZW5ndGgpO1xuICAgICAgICAgICAgICAgIGxldCBlbmRSb3cgPSAwO1xuICAgICAgICAgICAgICAgIGxldCBlbmRDb2wgPSAxO1xuICAgICAgICAgICAgICAgIC8vIG1pbm1heCBmb3Igbm9ybWFsaXphdGlvblxuICAgICAgICAgICAgICAgIGxldCBsbWluID0gMDtcbiAgICAgICAgICAgICAgICBsZXQgbG1heCA9IE51bWJlci5NSU5fVkFMVUU7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl93b3JrZXJDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5mbG9vcihpICogY2h1bmtTaXplKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kID0gKGkgPT09IHRoaXMuX3dvcmtlckNvdW50IC0gMSkgPyB0b3RhbExlbmd0aCA6IE1hdGguZmxvb3IoKGkgKyAxKSAqIGNodW5rU2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0Um93ID0gZW5kUm93O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGFydENvbCA9IGVuZENvbDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgIT09IHRoaXMuX3dvcmtlckNvdW50IC0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlc2UgZm9ybXVsYXMgbWFwIHRoZSBsaW5lYXIgaW5kZXggdG8gdGhlIHVwcGVyIHRyaWFuZ3VsYXIgbWF0cml4IGluZGljZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZFJvdyA9IGxlbiAtIDIgLSBNYXRoLmZsb29yKE1hdGguc3FydCgtOCAqIGVuZCArIDQgKiBsZW4gKiAobGVuIC0gMSkgLSA3KSAvIDIgLSAwLjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kQ29sID0gZW5kIC0gbGVuICogZW5kUm93ICsgTWF0aC5mbG9vcigoZW5kUm93ICsgMSkgKiAoZW5kUm93ICsgMikgLyAyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl93b3JrZXJzW2ldLnBvc3RNZXNzYWdlKHsgdmFsdWVzLCBmbk5hbWUsIHN0YXJ0Um93LCBzdGFydENvbCwgY2h1bmNrU2l6ZTogZW5kIC0gc3RhcnQgfSk7XG4gICAgICAgICAgICAgICAgICAgIHByb21pc2VzW2ldID0gbmV3IFByb21pc2UoKHJlc29sdmVXb3JrZXIsIHJlamVjdFdvcmtlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fd29ya2Vyc1tpXS5vbm1lc3NhZ2UgPSAoeyBkYXRhOiB7IGVycm9yLCBkaXN0YW5jZU1hdHJpeERhdGEsIG1pbiwgbWF4IH0gfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Rlcm1pbmF0ZU9uQ29tcGxldGUgJiYgdGhpcy5fd29ya2Vyc1tpXS50ZXJtaW5hdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0V29ya2VyKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlTWF0cml4LnNldChkaXN0YW5jZU1hdHJpeERhdGEsIHN0YXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1pbiA8IGxtaW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbWluID0gbWluO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF4ID4gbG1heClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxtYXggPSBtYXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVXb3JrZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICAgICAgICAgICAgICAgIGlmIChub3JtYWxpemUpXG4gICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlTWF0cml4LmZvckVhY2goKHZhbHVlLCBpbmRleCkgPT4geyBkaXN0YW5jZU1hdHJpeFtpbmRleF0gPSAodmFsdWUgLSBsbWluKSAvIChsbWF4IC0gbG1pbik7IH0pO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoZGlzdGFuY2VNYXRyaXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB0ZXJtaW5hdGUoKSB7XG4gICAgICAgIHRoaXMuX3dvcmtlcnMuZm9yRWFjaCgod29ya2VyKSA9PiB3b3JrZXIudGVybWluYXRlKCkpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVpHbHpkR0Z1WTJVdGJXRjBjbWw0TFhObGNuWnBZMlV1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SmthWE4wWVc1alpTMXRZWFJ5YVhndGMyVnlkbWxqWlM1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkZRU3hOUVVGTkxFOUJRVThzY1VKQlFYRkNPMGxCU1RsQ0xGbEJRVzFDTEc5Q1FVRnZRaXhIUVVGSExFbEJRVWtzUlVGQlJTeHRRa0ZCYlVJc1IwRkJSeXhKUVVGSk8xRkJRM2hGTEUxQlFVMHNWMEZCVnl4SFFVRkhMRk5CUVZNc1EwRkJReXh0UWtGQmJVSXNRMEZCUXp0UlFVTnNSQ3hKUVVGSkxFTkJRVU1zV1VGQldTeEhRVUZITEc5Q1FVRnZRaXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRmRCUVZjc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNMVJTeEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRE8yRkJRM0JFTEVkQlFVY3NRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhKUVVGSkxFMUJRVTBzUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl3d1FrRkJNRUlzUlVGQlJTeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU12UlN4SlFVRkpMRU5CUVVNc2IwSkJRVzlDTEVkQlFVY3NiVUpCUVcxQ0xFTkJRVU03U1VGRGJFUXNRMEZCUXp0SlFVRkJMRU5CUVVNN1NVRkZTeXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZKTEUxQlFTdENMRVZCUVVVc1RVRkJiMElzUlVGRGVFVXNVMEZCVXl4SFFVRkhMRWxCUVVrN1VVRkRhRUlzVDBGQlR5eEpRVUZKTEU5QlFVOHNRMEZCUXl4TFFVRkxMRVZCUVVVc1QwRkJUeXhGUVVGRkxFMUJRVTBzUlVGQlJTeEZRVUZGTzFsQlF6TkRMRWxCUVVrN1owSkJRMFlzVFVGQlRTeEhRVUZITEVkQlFVY3NUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJRenRuUWtGRE1VSXNUVUZCVFN4UlFVRlJMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRV2RDTEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJRenRuUWtGRE4wUXNUVUZCVFN4WFFVRlhMRWRCUVVjc1IwRkJSeXhIUVVGSExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExHdERRVUZyUXp0blFrRkRNMFVzU1VGQlNTeERRVUZETEZsQlFWa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVWQlFVVXNWMEZCVnl4RFFVRkRMRU5CUVVNN1owSkJRemRFTEUxQlFVMHNVMEZCVXl4SFFVRkhMRmRCUVZjc1IwRkJSeXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETzJkQ1FVTnNSQ3hOUVVGTkxHTkJRV01zUjBGQlJ5eEpRVUZKTEZsQlFWa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1EwRkJRenRuUWtGRGNrUXNTVUZCU1N4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRE8yZENRVU5tTEVsQlFVa3NUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJRenRuUWtGRFppd3lRa0ZCTWtJN1owSkJRek5DTEVsQlFVa3NTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJRenRuUWtGRFlpeEpRVUZKTEVsQlFVa3NSMEZCUnl4TlFVRk5MRU5CUVVNc1UwRkJVeXhEUVVGRE8yZENRVU0xUWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRmxCUVZrc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdHZRa0ZETVVNc1RVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRWRCUVVjc1UwRkJVeXhEUVVGRExFTkJRVU03YjBKQlEzaERMRTFCUVUwc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF5eExRVUZMTEVsQlFVa3NRMEZCUXl4WlFVRlpMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhUUVVGVExFTkJRVU1zUTBGQlF6dHZRa0ZETVVZc1RVRkJUU3hSUVVGUkxFZEJRVWNzVFVGQlRTeERRVUZETzI5Q1FVTjRRaXhOUVVGTkxGRkJRVkVzUjBGQlJ5eE5RVUZOTEVOQlFVTTdiMEpCUTNoQ0xFbEJRVWtzUTBGQlF5eExRVUZMTEVsQlFVa3NRMEZCUXl4WlFVRlpMRWRCUVVjc1EwRkJReXhGUVVGRk8zZENRVU12UWl3MlJVRkJOa1U3ZDBKQlF6ZEZMRTFCUVUwc1IwRkJSeXhIUVVGSExFZEJRVWNzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SFFVRkhMRWRCUVVjc1EwRkJReXhIUVVGSExFZEJRVWNzUjBGQlJ5eERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNN2QwSkJRM1pHTEUxQlFVMHNSMEZCUnl4SFFVRkhMRWRCUVVjc1IwRkJSeXhIUVVGSExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzNGQ1FVTXpSVHR2UWtGRFJDeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExGZEJRVmNzUTBGQlF5eEZRVUZETEUxQlFVMHNSVUZCUlN4TlFVRk5MRVZCUVVVc1VVRkJVU3hGUVVGRkxGRkJRVkVzUlVGQlJTeFZRVUZWTEVWQlFVVXNSMEZCUnl4SFFVRkhMRXRCUVVzc1JVRkJReXhEUVVGRExFTkJRVU03YjBKQlF6VkdMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRMR0ZCUVdFc1JVRkJSU3haUVVGWkxFVkJRVVVzUlVGQlJUdDNRa0ZEZUVRc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4VFFVRlRMRWRCUVVjc1EwRkJReXhGUVVGRExFbEJRVWtzUlVGQlJTeEZRVUZETEV0QlFVc3NSVUZCUlN4clFrRkJhMElzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkRMRVZCUVVNc1JVRkJVU3hGUVVGRk96UkNRVU51Uml4SlFVRkpMRU5CUVVNc2IwSkJRVzlDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFRRVUZUTEVWQlFVVXNRMEZCUXpzMFFrRkRNVVFzU1VGQlNTeExRVUZMTEVWQlFVVTdaME5CUTFRc1dVRkJXU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZET3paQ1FVTnlRanRwUTBGQlRUdG5RMEZEVEN4alFVRmpMRU5CUVVNc1IwRkJSeXhEUVVGRExHdENRVUZyUWl4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8yZERRVU01UXl4SlFVRkpMRWRCUVVjc1IwRkJSeXhKUVVGSk8yOURRVU5hTEVsQlFVa3NSMEZCUnl4SFFVRkhMRU5CUVVNN1owTkJRMklzU1VGQlNTeEhRVUZITEVkQlFVY3NTVUZCU1R0dlEwRkRXaXhKUVVGSkxFZEJRVWNzUjBGQlJ5eERRVUZETzJkRFFVTmlMR0ZCUVdFc1JVRkJSU3hEUVVGRE96WkNRVU5xUWp0M1FrRkRTQ3hEUVVGRExFTkJRVU03YjBKQlEwb3NRMEZCUXl4RFFVRkRMRU5CUVVNN2FVSkJRMG83WjBKQlEwUXNUVUZCVFN4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzJkQ1FVTTFRaXhKUVVGSkxGTkJRVk03YjBKQlExZ3NZMEZCWXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFdEJRVXNzUlVGQlJTeExRVUZMTEVWQlFVVXNSVUZCUlN4SFFVRkhMR05CUVdNc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU40Unl4UFFVRlBMRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU03WVVGRGVrSTdXVUZCUXl4UFFVRlBMRU5CUVVNc1JVRkJSVHRuUWtGRFZpeE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1lVRkRXRHRSUVVOSUxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEwd3NRMEZCUXp0SlFVVk5MRk5CUVZNN1VVRkRaQ3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRTFCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1NVRkRlRVFzUTBGQlF6dERRVU5LSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUh0TGJtOTNiazFsZEhKcFkzTjlJR1p5YjIwZ0p5NHVMM1I1Y0dWa0xXMWxkSEpwWTNNbk8xeHVYRzVsZUhCdmNuUWdZMnhoYzNNZ1JHbHpkR0Z1WTJWTllYUnlhWGhUWlhKMmFXTmxJSHRjYmlBZ0lDQndjbWwyWVhSbElGOTNiM0pyWlhKek9pQlhiM0pyWlhKYlhUdGNiaUFnSUNCd2NtbDJZWFJsSUY5M2IzSnJaWEpEYjNWdWREb2diblZ0WW1WeU8xeHVJQ0FnSUhCeWFYWmhkR1VnWDNSbGNtMXBibUYwWlU5dVEyOXRjR3hsZEdVNklHSnZiMnhsWVc0N1hHNGdJQ0FnY0hWaWJHbGpJR052Ym5OMGNuVmpkRzl5S0hWelpVTnZibU4xY25KbGJuUlhiM0pyWlhKeklEMGdkSEoxWlN3Z2RHVnliV2x1WVhSbFQyNURiMjF3YkdWMFpTQTlJSFJ5ZFdVcElIdGNiaUFnSUNBZ0lHTnZibk4wSUhSb2NtVmhaRU52ZFc1MElEMGdibUYyYVdkaGRHOXlMbWhoY21SM1lYSmxRMjl1WTNWeWNtVnVZM2s3WEc0Z0lDQWdJQ0IwYUdsekxsOTNiM0pyWlhKRGIzVnVkQ0E5SUhWelpVTnZibU4xY25KbGJuUlhiM0pyWlhKeklEOGdUV0YwYUM1dFlYZ29kR2h5WldGa1EyOTFiblFnTFNBeUxDQXhLU0E2SURFN1hHNGdJQ0FnSUNCMGFHbHpMbDkzYjNKclpYSnpJRDBnYm1WM0lFRnljbUY1S0hSb2FYTXVYM2R2Y210bGNrTnZkVzUwS1M1bWFXeHNLRzUxYkd3cFhHNGdJQ0FnSUNBZ0lDNXRZWEFvS0NrZ1BUNGdibVYzSUZkdmNtdGxjaWh1WlhjZ1ZWSk1LQ2N1TDJScGMzUmhibU5sTFcxaGRISnBlQzEzYjNKclpYSW5MQ0JwYlhCdmNuUXViV1YwWVM1MWNtd3BLU2s3WEc0Z0lDQWdJQ0IwYUdsekxsOTBaWEp0YVc1aGRHVlBia052YlhCc1pYUmxJRDBnZEdWeWJXbHVZWFJsVDI1RGIyMXdiR1YwWlR0Y2JpQWdJQ0I5TzF4dVhHNGdJQ0FnY0hWaWJHbGpJR0Z6ZVc1aklHTmhiR004VkQ0b2RtRnNkV1Z6T2lCQmNuSmhlVHhVUGlCOElFRnljbUY1VEdsclpUeFVQaXdnWm01T1lXMWxPaUJMYm05M2JrMWxkSEpwWTNNc1hHNGdJQ0FnSUNCdWIzSnRZV3hwZW1VZ1BTQjBjblZsS1RvZ1VISnZiV2x6WlR4R2JHOWhkRE15UVhKeVlYaytJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnVaWGNnVUhKdmJXbHpaU2hoYzNsdVl5QW9jbVZ6YjJ4MlpTd2djbVZxWldOMEtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUhSeWVTQjdYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdiR1Z1SUQwZ2RtRnNkV1Z6TG14bGJtZDBhRHRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J3Y205dGFYTmxjeUE5SUc1bGR5QkJjbkpoZVR4UWNtOXRhWE5sUEhadmFXUStQaWgwYUdsekxsOTNiM0pyWlhKRGIzVnVkQ2s3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnZEc5MFlXeE1aVzVuZEdnZ1BTQnNaVzRnS2lBb2JHVnVJQzBnTVNrZ0x5QXlPeUF2THlCemFYcGxJRzltSUhKbFpIVmpaV1FnWkdsemRHRnVZMlVnYldGMGNtbDRYRzRnSUNBZ0lDQWdJQ0FnZEdocGN5NWZkMjl5YTJWeVEyOTFiblFnUFNCTllYUm9MbTFwYmloMGFHbHpMbDkzYjNKclpYSkRiM1Z1ZEN3Z2RHOTBZV3hNWlc1bmRHZ3BPMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR05vZFc1clUybDZaU0E5SUhSdmRHRnNUR1Z1WjNSb0lDOGdkR2hwY3k1ZmQyOXlhMlZ5UTI5MWJuUTdYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdaR2x6ZEdGdVkyVk5ZWFJ5YVhnZ1BTQnVaWGNnUm14dllYUXpNa0Z5Y21GNUtIUnZkR0ZzVEdWdVozUm9LVHRjYmlBZ0lDQWdJQ0FnSUNCc1pYUWdaVzVrVW05M0lEMGdNRHRjYmlBZ0lDQWdJQ0FnSUNCc1pYUWdaVzVrUTI5c0lEMGdNVHRjYmlBZ0lDQWdJQ0FnSUNBdkx5QnRhVzV0WVhnZ1ptOXlJRzV2Y20xaGJHbDZZWFJwYjI1Y2JpQWdJQ0FnSUNBZ0lDQnNaWFFnYkcxcGJpQTlJREE3WEc0Z0lDQWdJQ0FnSUNBZ2JHVjBJR3h0WVhnZ1BTQk9kVzFpWlhJdVRVbE9YMVpCVEZWRk8xeHVJQ0FnSUNBZ0lDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnZEdocGN5NWZkMjl5YTJWeVEyOTFiblE3SUdrckt5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnYzNSaGNuUWdQU0JOWVhSb0xtWnNiMjl5S0drZ0tpQmphSFZ1YTFOcGVtVXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnWlc1a0lEMGdLR2tnUFQwOUlIUm9hWE11WDNkdmNtdGxja052ZFc1MElDMGdNU2tnUHlCMGIzUmhiRXhsYm1kMGFDQTZJRTFoZEdndVpteHZiM0lvS0drZ0t5QXhLU0FxSUdOb2RXNXJVMmw2WlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQnpkR0Z5ZEZKdmR5QTlJR1Z1WkZKdmR6dGNiaUFnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJSE4wWVhKMFEyOXNJRDBnWlc1a1EyOXNPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR2tnSVQwOUlIUm9hWE11WDNkdmNtdGxja052ZFc1MElDMGdNU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0F2THlCVWFHVnpaU0JtYjNKdGRXeGhjeUJ0WVhBZ2RHaGxJR3hwYm1WaGNpQnBibVJsZUNCMGJ5QjBhR1VnZFhCd1pYSWdkSEpwWVc1bmRXeGhjaUJ0WVhSeWFYZ2dhVzVrYVdObGMxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCbGJtUlNiM2NnUFNCc1pXNGdMU0F5SUMwZ1RXRjBhQzVtYkc5dmNpaE5ZWFJvTG5OeGNuUW9MVGdnS2lCbGJtUWdLeUEwSUNvZ2JHVnVJQ29nS0d4bGJpQXRJREVwSUMwZ055a2dMeUF5SUMwZ01DNDFLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdaVzVrUTI5c0lEMGdaVzVrSUMwZ2JHVnVJQ29nWlc1a1VtOTNJQ3NnVFdGMGFDNW1iRzl2Y2lnb1pXNWtVbTkzSUNzZ01Ta2dLaUFvWlc1a1VtOTNJQ3NnTWlrZ0x5QXlLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVYM2R2Y210bGNuTmJhVjB1Y0c5emRFMWxjM05oWjJVb2UzWmhiSFZsY3l3Z1ptNU9ZVzFsTENCemRHRnlkRkp2ZHl3Z2MzUmhjblJEYjJ3c0lHTm9kVzVqYTFOcGVtVTZJR1Z1WkNBdElITjBZWEowZlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J3Y205dGFYTmxjMXRwWFNBOUlHNWxkeUJRY205dGFYTmxLQ2h5WlhOdmJIWmxWMjl5YTJWeUxDQnlaV3BsWTNSWGIzSnJaWElwSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTVmZDI5eWEyVnljMXRwWFM1dmJtMWxjM05oWjJVZ1BTQW9lMlJoZEdFNklIdGxjbkp2Y2l3Z1pHbHpkR0Z1WTJWTllYUnlhWGhFWVhSaExDQnRhVzRzSUcxaGVIMTlLVG9nZG05cFpDQTlQaUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NWZkR1Z5YldsdVlYUmxUMjVEYjIxd2JHVjBaU0FtSmlCMGFHbHpMbDkzYjNKclpYSnpXMmxkTG5SbGNtMXBibUYwWlNncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hsY25KdmNpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WcVpXTjBWMjl5YTJWeUtHVnljbTl5S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pHbHpkR0Z1WTJWTllYUnlhWGd1YzJWMEtHUnBjM1JoYm1ObFRXRjBjbWw0UkdGMFlTd2djM1JoY25RcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0cxcGJpQThJR3h0YVc0cFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR3h0YVc0Z1BTQnRhVzQ3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9iV0Y0SUQ0Z2JHMWhlQ2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JHMWhlQ0E5SUcxaGVEdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsYzI5c2RtVlhiM0pyWlhJb0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lIMDdYRzRnSUNBZ0lDQWdJQ0FnSUNCOUtUdGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ1lYZGhhWFFnVUhKdmJXbHpaUzVoYkd3b2NISnZiV2x6WlhNcE8xeHVJQ0FnSUNBZ0lDQWdJR2xtSUNodWIzSnRZV3hwZW1VcFhHNGdJQ0FnSUNBZ0lDQWdJQ0JrYVhOMFlXNWpaVTFoZEhKcGVDNW1iM0pGWVdOb0tDaDJZV3gxWlN3Z2FXNWtaWGdwSUQwK0lIc2daR2x6ZEdGdVkyVk5ZWFJ5YVhoYmFXNWtaWGhkSUQwZ0tIWmhiSFZsSUMwZ2JHMXBiaWtnTHlBb2JHMWhlQ0F0SUd4dGFXNHBPeUI5S1R0Y2JpQWdJQ0FnSUNBZ0lDQnlaWE52YkhabEtHUnBjM1JoYm1ObFRXRjBjbWw0S1R0Y2JpQWdJQ0FnSUNBZ2ZTQmpZWFJqYUNBb1pTa2dlMXh1SUNBZ0lDQWdJQ0FnSUhKbGFtVmpkQ2hsS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NIVmliR2xqSUhSbGNtMXBibUYwWlNncE9pQjJiMmxrSUh0Y2JpQWdJQ0FnSUhSb2FYTXVYM2R2Y210bGNuTXVabTl5UldGamFDZ29kMjl5YTJWeUtTQTlQaUIzYjNKclpYSXVkR1Z5YldsdVlYUmxLQ2twTzF4dUlDQWdJSDFjYm4xY2JpSmRmUT09IiwiaW1wb3J0IHsgY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2UsIGZpbGxSYW5kb21NYXRyaXgsIHZlY3RvckFkZCwgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucyc7XG5pbXBvcnQgeyByYW5kb21JbnQgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy9yYW5kb20nO1xuaW1wb3J0IHsgRGlzdGFuY2VNYXRyaXhTZXJ2aWNlLCBkbUxpbmVhckluZGV4IH0gZnJvbSAnLi9kaXN0YW5jZS1tYXRyaXgnO1xuLyoqXG4gKiBJbXBsZW1lbnRzIHN0b2NoYXN0aWMgcHJveGltaXR5IGVtYmVkZGluZy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgU1BFQmFzZVxuICogQGxpbmsgZG9pOjEwLjEwMTYvUzEwOTMtMzI2MygwMykwMDE1NS00XG4gKi9cbmNsYXNzIFNQRUJhc2Uge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgU1BFQmFzZS5cbiAgICAgKiBAcGFyYW0ge09wdGlvbnN9IFtvcHRpb25zXSBPcHRpb25zIHRvIHBhc3MgdG8gdGhlIGNvbnN0cnVjdG9yLlxuICAgICAqIEBtZW1iZXJvZiBTUEVCYXNlXG4gICAgICovXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICB0aGlzLnN0ZXBzID0gb3B0aW9ucz8uc3RlcHMgPz8gMDtcbiAgICAgICAgdGhpcy5jeWNsZXMgPSBvcHRpb25zPy5jeWNsZXMgPz8gMWU2O1xuICAgICAgICAvLyBTZWxlY3QgYSBjdXRvZmYgZGlzdGFuY2Uge2N1dG9mZn0gYW5kIC4uLlxuICAgICAgICB0aGlzLmN1dG9mZiA9IG9wdGlvbnM/LmN1dG9mZiA/PyAwO1xuICAgICAgICAvLyAuLi4gYW4gaW5pdGlhbCBsZWFybmluZyByYXRlIHtsYW1iZGF9ID4gMFxuICAgICAgICB0aGlzLmxhbWJkYSA9IG9wdGlvbnM/LmxhbWJkYSA/PyAyLjA7XG4gICAgICAgIHRoaXMuZGxhbWJkYSA9IG9wdGlvbnM/LmRsYW1iZGEgPz8gMC4wMTtcbiAgICAgICAgdGhpcy5sYW1iZGEyID0gdGhpcy5sYW1iZGEgLyAyLjtcbiAgICAgICAgdGhpcy5kbGFtYmRhMiA9IHRoaXMuZGxhbWJkYSAvIDIuO1xuICAgICAgICB0aGlzLmVwc2lsb24gPSBvcHRpb25zPy5lcHNpbG9uID8/IDFlLTEwO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgYnJhY2Utc3R5bGVcbiAgICAgICAgdGhpcy5kaXN0YW5jZUZ1bmN0aW9uID0gb3B0aW9ucz8uZGlzdGFuY2UgPz8gY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2U7XG4gICAgICAgIHRoaXMuZGlzdGFuY2UgPSBuZXcgRmxvYXQzMkFycmF5KCk7XG4gICAgICAgIHRoaXMuZGlzdGFuY2VGdW5jdGlvbk5hbWUgPSBvcHRpb25zPy5kaXN0YW5jZUZ1bmN0aW9uTmFtZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZXMgZGlzdGFuY2UgbWF0cml4LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtWZWN0b3JzfSB2ZWN0b3JzIElucHV0IHZlY3RvcnMgdG8gY2FsY3VsYXRlIGRpc3RhbmNlIGJldHdlZW4uXG4gICAgICogQG1lbWJlcm9mIFNQRUJhc2VcbiAgICAgKi9cbiAgICBhc3luYyBpbml0RGlzdGFuY2UodmVjdG9ycykge1xuICAgICAgICB0aGlzLmRtSW5kZXhGdW5jdCA9IGRtTGluZWFySW5kZXgodmVjdG9ycy5sZW5ndGgpO1xuICAgICAgICBjb25zdCBtYXRyaXhTZXJ2aWNlID0gbmV3IERpc3RhbmNlTWF0cml4U2VydmljZSh0cnVlLCBmYWxzZSk7XG4gICAgICAgIHRoaXMuZGlzdGFuY2UgPSBhd2FpdCBtYXRyaXhTZXJ2aWNlLmNhbGModmVjdG9ycywgdGhpcy5kaXN0YW5jZUZ1bmN0aW9uTmFtZSk7XG4gICAgICAgIG1hdHJpeFNlcnZpY2UudGVybWluYXRlKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgZGlzdGFuY2UgYmV0d2VlbiB0aGUgdHdvIHZlY3RvcnMgZ2l2ZW4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1ZlY3RvcnN9IHZlY3RvcnMgU2V0IG9mIHZlY3RvcnMgdG8gY2FsY3VsYXRlIGRpc3RhbmNlcyBiZXR3ZWVuLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleDEgSW5kZXggb2YgdGhlIGZpcnN0IHZlY3RvciBvZiB0aGUgcGFpci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXgyIEluZGV4IG9mIHRoZSBzZWNvbmQgdmVjdG9yIG9mIHRoZSBwYWlyLlxuICAgICAqIEByZXR1cm4ge251bWJlcn0gRGlzdGFuY2UgYmV0d2VlbiB0aGVzZSB0d28gdmVjdG9ycy5cbiAgICAgKi9cbiAgICBjYWxjRGlzdGFuY2UodmVjdG9ycywgaW5kZXgxLCBpbmRleDIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzdGFuY2VbdGhpcy5kbUluZGV4RnVuY3QoaW5kZXgxLCBpbmRleDIpXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRW1iZWRzIHRoZSB2ZWN0b3JzIGdpdmVuIGludG8gYSB0d28tZGltZW5zaW9uYWwgc3BhY2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1ZlY3RvcnN9IHZlY3RvcnMgRC1kaW1lbnNpb25hbCBjb29yZGluYXRlcy5cbiAgICAgKiBAcmV0dXJuIHtDb29yZGluYXRlc30gU1BFIGNvb3JkaW5hdGVzIGluIEQgc3BhY2UuXG4gICAgICovXG4gICAgYXN5bmMgZW1iZWQodmVjdG9ycykge1xuICAgICAgICBjb25zdCBuSXRlbXMgPSB2ZWN0b3JzLmxlbmd0aDtcbiAgICAgICAgY29uc3QgYXJlYVdpZHRoID0gNDA7XG4gICAgICAgIC8vIEluaXRpYWxpemUgdGhlIEQtZGltZW5zaW9uYWwgY29vcmRpbmF0ZXMgb2YgdGhlIE4gcG9pbnRzLlxuICAgICAgICBjb25zdCBjb29yZGluYXRlcyA9IGZpbGxSYW5kb21NYXRyaXgobkl0ZW1zLCBTUEVCYXNlLmRpbWVuc2lvbiwgYXJlYVdpZHRoKTtcbiAgICAgICAgbGV0IGxhbWJkYTIgPSB0aGlzLmxhbWJkYTI7XG4gICAgICAgIGlmICh0aGlzLnN0ZXBzID09PSAwKVxuICAgICAgICAgICAgdGhpcy5zdGVwcyA9IHZlY3RvcnMubGVuZ3RoIC0gMTtcbiAgICAgICAgYXdhaXQgdGhpcy5pbml0RGlzdGFuY2UodmVjdG9ycyk7XG4gICAgICAgIGZvciAobGV0IGN5Y2xlID0gMDsgY3ljbGUgPCB0aGlzLmN5Y2xlczsgKytjeWNsZSkge1xuICAgICAgICAgICAgZm9yIChsZXQgc3RlcCA9IDA7IHN0ZXAgPCB0aGlzLnN0ZXBzOyArK3N0ZXApIHtcbiAgICAgICAgICAgICAgICAvLyBTZWxlY3QgdHdvIHBvaW50cywgaSBhbmQgaiwgYXQgcmFuZG9tLCAuLi5cbiAgICAgICAgICAgICAgICBjb25zdCBpID0gcmFuZG9tSW50KG5JdGVtcyk7XG4gICAgICAgICAgICAgICAgbGV0IGogPSByYW5kb21JbnQobkl0ZW1zKTtcbiAgICAgICAgICAgICAgICB3aGlsZSAoaSA9PSBqKVxuICAgICAgICAgICAgICAgICAgICBqID0gcmFuZG9tSW50KG5JdGVtcyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm93aSA9IGNvb3JkaW5hdGVzW2ldO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvd2ogPSBjb29yZGluYXRlc1tqXTtcbiAgICAgICAgICAgICAgICAvLyAuLi4gcmV0cmlldmUgKG9yIGV2YWx1YXRlKSB0aGVpciBwcm94aW1pdHkgaW4gdGhlIGlucHV0IHNwYWNlLCByaWogYW5kIC4uLlxuICAgICAgICAgICAgICAgIGNvbnN0IHIgPSB0aGlzLmNhbGNEaXN0YW5jZSh2ZWN0b3JzLCBpLCBqKTtcbiAgICAgICAgICAgICAgICAvLyAuLi4gY29tcHV0ZSB0aGVpciBFdWNsaWRlYW4gZGlzdGFuY2Ugb24gdGhlIEQtZGltZW5zaW9uYWwgbWFwLCBkaWouXG4gICAgICAgICAgICAgICAgY29uc3QgZCA9IGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlKHJvd2ksIHJvd2opO1xuICAgICAgICAgICAgICAgIC8vIElmIHJpaiA8PSByYywgb3IgaWYgcmlqID4gcmMgYW5kIGRpaiA8IHJpaiAuLi5cbiAgICAgICAgICAgICAgICBpZiAoKHRoaXMuY3V0b2ZmID09IDApIHx8IChyIDw9IHRoaXMuY3V0b2ZmKSB8fCAoZCA8IHIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG11bHRpcGxpZXIgPSBsYW1iZGEyICogKHIgLSBkKSAvIChkICsgdGhpcy5lcHNpbG9uKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gLi4uIHVwZGF0ZSB0aGUgY29vcmRpbmF0ZXMgeGkgYW5kIHhqLlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaWZmSUogPSB2ZWN0b3JBZGQocm93aSwgcm93aiwgLTEpO1xuICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlc1tpXSA9IHZlY3RvckFkZChyb3dpLCBkaWZmSUosIG11bHRpcGxpZXIpO1xuICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlc1tqXSA9IHZlY3RvckFkZChyb3dqLCBkaWZmSUosIC1tdWx0aXBsaWVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBEZWNyZWFzZSB0aGUgbGVhcm5pbmcgcmF0ZSB7bGFtYmRhfSBieSBhIHByZXNjcmliZWQge2RsYW1iZGF9LlxuICAgICAgICAgICAgbGFtYmRhMiAtPSB0aGlzLmRsYW1iZGEyO1xuICAgICAgICAgICAgaWYgKGxhbWJkYTIgPD0gMC4pXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvb3JkaW5hdGVzO1xuICAgIH1cbn1cblNQRUJhc2UuZGltZW5zaW9uID0gMjtcbmV4cG9ydCB7IFNQRUJhc2UgfTtcbi8qKlxuICogSW1wbGVtZW50cyBtb2RpZmllZCBzdG9jaGFzdGljIHByb3hpbWl0eSBlbWJlZGRpbmcuXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIFBTUEVCYXNlXG4gKiBAbGluayBkb2k6MTAuMTAxNi9TMTA5My0zMjYzKDAzKTAwMTU1LTRcbiAqL1xuZXhwb3J0IGNsYXNzIFBTUEVCYXNlIGV4dGVuZHMgU1BFQmFzZSB7XG4gICAgLyoqXG4gICAgICogRW1iZWRzIHRoZSB2ZWN0b3JzIGdpdmVuIGludG8gYSB0d28tZGltZW5zaW9uYWwgc3BhY2UgdXNpbmcgYSBtb2RpZmllZCB1cGRhdGUgcnVsZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7VmVjdG9yc30gdmVjdG9ycyBELWRpbWVuc2lvbmFsIGNvb3JkaW5hdGVzLlxuICAgICAqIEByZXR1cm4ge0Nvb3JkaW5hdGVzfSBTUEUgY29vcmRpbmF0ZXMgaW4gRCBzcGFjZS5cbiAgICAgKi9cbiAgICBhc3luYyBlbWJlZCh2ZWN0b3JzKSB7XG4gICAgICAgIGNvbnN0IG5JdGVtcyA9IHZlY3RvcnMubGVuZ3RoO1xuICAgICAgICBjb25zdCBhcmVhV2lkdGggPSA0MDtcbiAgICAgICAgLy8gIEluaXRpYWxpemUgdGhlIEQtZGltZW5zaW9uYWwgY29vcmRpbmF0ZXMgb2YgdGhlIE4gcG9pbnRzLlxuICAgICAgICBjb25zdCBjb29yZGluYXRlcyA9IGZpbGxSYW5kb21NYXRyaXgobkl0ZW1zLCBQU1BFQmFzZS5kaW1lbnNpb24sIGFyZWFXaWR0aCk7XG4gICAgICAgIGxldCBsYW1iZGEgPSB0aGlzLmxhbWJkYTtcbiAgICAgICAgYXdhaXQgdGhpcy5pbml0RGlzdGFuY2UodmVjdG9ycyk7XG4gICAgICAgIGZvciAobGV0IGN5Y2xlID0gMDsgY3ljbGUgPCB0aGlzLmN5Y2xlczsgKytjeWNsZSkge1xuICAgICAgICAgICAgLy8gU2VsZWN0IGEgcG9pbnQsIGksIGF0IHJhbmRvbSAocGl2b3QpLlxuICAgICAgICAgICAgY29uc3QgaSA9IHJhbmRvbUludChuSXRlbXMpO1xuICAgICAgICAgICAgY29uc3Qgcm93aSA9IGNvb3JkaW5hdGVzW2ldO1xuICAgICAgICAgICAgLy8gRm9yIGV2ZXJ5IHBvaW50IGogIT0gaSAuLi5cbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbkl0ZW1zOyArK2opIHtcbiAgICAgICAgICAgICAgICBpZiAoaSA9PSBqKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjb25zdCByb3dqID0gY29vcmRpbmF0ZXNbal07XG4gICAgICAgICAgICAgICAgLy8gLi4uIHJldHJpZXZlIChvciBldmFsdWF0ZSkgaXRzIHByb3hpbWl0eSB0byBpIGluIHRoZSBpbnB1dCBzcGFjZSwgcmlqIC4uLlxuICAgICAgICAgICAgICAgIGNvbnN0IHIgPSB0aGlzLmNhbGNEaXN0YW5jZSh2ZWN0b3JzLCBpLCBqKTtcbiAgICAgICAgICAgICAgICAvLyAuLi4gYW5kIGNvbXB1dGUgdGhlaXIgRXVjbGlkZWFuIGRpc3RhbmNlIG9uIHRoZSBELWRpbWVuc2lvbmFsIG1hcCwgZGlqLlxuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZShyb3dpLCByb3dqKTtcbiAgICAgICAgICAgICAgICAvLyBJZiByaWogPD0gcmMsIG9yIGlmIHJpaiA+IHJjIGFuZCBkaWogPCByaWogLi4uXG4gICAgICAgICAgICAgICAgaWYgKCh0aGlzLmN1dG9mZiA9PSAwKSB8fCAociA8PSB0aGlzLmN1dG9mZikgfHwgKGQgPCByKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtdWx0aXBsaWVyID0gbGFtYmRhICogKHIgLSBkKSAvIChkICsgdGhpcy5lcHNpbG9uKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlmZklKID0gdmVjdG9yQWRkKHJvd2ksIHJvd2osIC0xKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gLi4uIHVwZGF0ZSB0aGUgY29vcmRpbmF0ZXMgeGouXG4gICAgICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzW2pdID0gdmVjdG9yQWRkKHJvd2osIGRpZmZJSiwgLW11bHRpcGxpZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIERlY3JlYXNlIHRoZSBsZWFybmluZyByYXRlIHtsYW1iZGF9IGJ5IGEgcHJlc2NyaWJlZCB7ZGxhbWJkYX0uXG4gICAgICAgICAgICBsYW1iZGEgLT0gdGhpcy5kbGFtYmRhO1xuICAgICAgICAgICAgaWYgKGxhbWJkYSA8PSAwLilcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29vcmRpbmF0ZXM7XG4gICAgfVxufVxuLyoqXG4gKiBJbXBsZW1lbnRzIG1vZGlmaWVkIHN0b2NoYXN0aWMgcHJveGltaXR5IGVtYmVkZGluZy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgT3JpZ2luYWxTUEVcbiAqIEBsaW5rIGRvaToxMC4xMDAyL2pjYy4xMDIzNFxuICovXG5leHBvcnQgY2xhc3MgT3JpZ2luYWxTUEUgZXh0ZW5kcyBTUEVCYXNlIHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLmN5Y2xlcyA9IG9wdGlvbnM/LmN5Y2xlcyA/PyAxZTM7XG4gICAgICAgIHRoaXMuc3RlcHMgPSBvcHRpb25zPy5zdGVwcyA/PyAxMDAwMDA7XG4gICAgICAgIHRoaXMucmFkaXVzUGVyY2VudCA9IG9wdGlvbnM/LnJhZGl1c1BlcmNlbnQgPz8gMS4wO1xuICAgICAgICB0aGlzLm1heERpc3RhbmNlID0gb3B0aW9ucz8ubWF4RGlzdGFuY2UgPz8gbnVsbDtcbiAgICAgICAgdGhpcy5tYXhEaXN0YW5jZVN0ZXBzID0gb3B0aW9ucz8ubWF4RGlzdGFuY2VTdGVwcyA/PyBudWxsO1xuICAgIH1cbiAgICBhc3luYyBlbWJlZCh2ZWN0b3JzKSB7XG4gICAgICAgIGNvbnN0IG5JdGVtcyA9IHZlY3RvcnMubGVuZ3RoO1xuICAgICAgICBjb25zdCBhcmVhV2lkdGggPSA0MDtcbiAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgRC1kaW1lbnNpb25hbCBjb29yZGluYXRlcyBvZiB0aGUgTiBwb2ludHMuXG4gICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gZmlsbFJhbmRvbU1hdHJpeChuSXRlbXMsIE9yaWdpbmFsU1BFLmRpbWVuc2lvbiwgYXJlYVdpZHRoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5pbml0RGlzdGFuY2UodmVjdG9ycyk7XG4gICAgICAgIGlmICh0aGlzLm1heERpc3RhbmNlU3RlcHMgPT09IG51bGwpXG4gICAgICAgICAgICB0aGlzLm1heERpc3RhbmNlU3RlcHMgPSBuSXRlbXMgKiBNYXRoLmZsb29yKChuSXRlbXMgLSAxKSAvIDIpO1xuICAgICAgICBpZiAodGhpcy5tYXhEaXN0YW5jZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5tYXhEaXN0YW5jZSA9IC0xZTM3O1xuICAgICAgICAgICAgZm9yIChsZXQgbiA9IDA7IG4gPCB0aGlzLm1heERpc3RhbmNlU3RlcHM7IG4rKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGkgPSByYW5kb21JbnQobkl0ZW1zKTtcbiAgICAgICAgICAgICAgICBsZXQgaiA9IHJhbmRvbUludChuSXRlbXMpO1xuICAgICAgICAgICAgICAgIHdoaWxlIChpID09IGopXG4gICAgICAgICAgICAgICAgICAgIGogPSByYW5kb21JbnQobkl0ZW1zKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkID0gdGhpcy5jYWxjRGlzdGFuY2UodmVjdG9ycywgaSwgaik7XG4gICAgICAgICAgICAgICAgaWYgKGQgPiB0aGlzLm1heERpc3RhbmNlKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1heERpc3RhbmNlID0gZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgbGFtYmRhID0gdGhpcy5sYW1iZGE7XG4gICAgICAgIGNvbnN0IHJhZGl1cyA9ICh0aGlzLnJhZGl1c1BlcmNlbnQgPT0gMC4wKSA/IHRoaXMubWF4RGlzdGFuY2UgOiB0aGlzLm1heERpc3RhbmNlICogdGhpcy5yYWRpdXNQZXJjZW50O1xuICAgICAgICBmb3IgKGxldCBjeWNsZSA9IDA7IGN5Y2xlIDwgdGhpcy5jeWNsZXM7ICsrY3ljbGUpIHtcbiAgICAgICAgICAgIGZvciAobGV0IHN0ZXAgPSAwOyBzdGVwIDwgdGhpcy5zdGVwczsgKytzdGVwKSB7XG4gICAgICAgICAgICAgICAgLy8gU2VsZWN0IHR3byBwb2ludHMsIGkgYW5kIGosIGF0IHJhbmRvbSwgLi4uXG4gICAgICAgICAgICAgICAgY29uc3QgaSA9IHJhbmRvbUludChuSXRlbXMpO1xuICAgICAgICAgICAgICAgIGxldCBqID0gcmFuZG9tSW50KG5JdGVtcyk7XG4gICAgICAgICAgICAgICAgd2hpbGUgKGkgPT0gailcbiAgICAgICAgICAgICAgICAgICAgaiA9IHJhbmRvbUludChuSXRlbXMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvd2kgPSBjb29yZGluYXRlc1tpXTtcbiAgICAgICAgICAgICAgICBjb25zdCByb3dqID0gY29vcmRpbmF0ZXNbal07XG4gICAgICAgICAgICAgICAgLy8gcmV0cmlldmUgKG9yIGV2YWx1YXRlKSB0aGVpciBwcm94aW1pdHkgaW4gdGhlIGlucHV0IHNwYWNlLCByaWogYW5kIC4uLlxuICAgICAgICAgICAgICAgIGNvbnN0IHIgPSB0aGlzLmNhbGNEaXN0YW5jZSh2ZWN0b3JzLCBpLCBqKTtcbiAgICAgICAgICAgICAgICAvLyBjb21wdXRlIHRoZWlyIEV1Y2xpZGVhbiBkaXN0YW5jZSBvbiB0aGUgRC1kaW1lbnNpb25hbCBtYXAsIGRpai5cbiAgICAgICAgICAgICAgICBjb25zdCBkID0gY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2Uocm93aSwgcm93aik7XG4gICAgICAgICAgICAgICAgaWYgKChyIDw9IHJhZGl1cykgfHwgKGQgPCByKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtdWx0aXBsaWVyID0gbGFtYmRhICogMC41ICogKHIgLSBkKSAvIChkICsgdGhpcy5lcHNpbG9uKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gLi4uIHVwZGF0ZSB0aGUgY29vcmRpbmF0ZXMgeGkgYW5kIHhqLlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaWZmSUogPSB2ZWN0b3JBZGQocm93aSwgcm93aiwgLTEpO1xuICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlc1tpXSA9IHZlY3RvckFkZChyb3dpLCBkaWZmSUosIG11bHRpcGxpZXIpO1xuICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlc1tqXSA9IHZlY3RvckFkZChyb3dqLCBkaWZmSUosIC1tdWx0aXBsaWVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsYW1iZGEgLT0gKCh0aGlzLmxhbWJkYSAtIHRoaXMuZGxhbWJkYSkgLyAodGhpcy5jeWNsZXMgLSAxLjApKTtcbiAgICAgICAgICAgIDtcbiAgICAgICAgICAgIGlmIChsYW1iZGEgPCB0aGlzLmRsYW1iZGEpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvb3JkaW5hdGVzO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWMzQmxMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaWMzQmxMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVOQkxFOUJRVThzUlVGRFRDd3dRa0ZCTUVJc1JVRkRNVUlzWjBKQlFXZENMRVZCUTJoQ0xGTkJRVk1zUjBGRFZpeE5RVUZOTEdsRVFVRnBSQ3hEUVVGRE8wRkJRM3BFTEU5QlFVOHNSVUZCUXl4VFFVRlRMRVZCUVVNc1RVRkJUU3h6UTBGQmMwTXNRMEZCUXp0QlFVVXZSQ3hQUVVGUExFVkJRVU1zY1VKQlFYRkNMRVZCUVVVc1lVRkJZU3hGUVVGRExFMUJRVTBzYlVKQlFXMUNMRU5CUVVNN1FVRkZka1U3T3pzN096dEhRVTFITzBGQlEwZ3NUVUZCWVN4UFFVRlBPMGxCWld4Q096czdPMDlCU1VjN1NVRkRTQ3haUVVGWkxFOUJRV2xDTzFGQlF6TkNMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzVDBGQlR5eEZRVUZGTEV0QlFVc3NTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkRha01zU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4UFFVRlBMRVZCUVVVc1RVRkJUU3hKUVVGSkxFZEJRVWNzUTBGQlF6dFJRVU55UXl3MFEwRkJORU03VVVGRE5VTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhQUVVGUExFVkJRVVVzVFVGQlRTeEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTnVReXcwUTBGQk5FTTdVVUZETlVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eFBRVUZQTEVWQlFVVXNUVUZCVFN4SlFVRkpMRWRCUVVjc1EwRkJRenRSUVVOeVF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRTlCUVU4c1JVRkJSU3hQUVVGUExFbEJRVWtzU1VGQlNTeERRVUZETzFGQlEzaERMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkRhRU1zU1VGQlNTeERRVUZETEZGQlFWRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU5zUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFOUJRVThzUlVGQlJTeFBRVUZQTEVsQlFVa3NTMEZCU3l4RFFVRkRPMUZCUTNwRExIVkRRVUYxUXp0UlFVTjJReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRWRCUVVjc1QwRkJUeXhGUVVGRkxGRkJRVkVzU1VGQlNTd3dRa0ZCTUVJc1EwRkJRenRSUVVONFJTeEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRWxCUVVrc1dVRkJXU3hGUVVGRkxFTkJRVU03VVVGRGJrTXNTVUZCU1N4RFFVRkRMRzlDUVVGdlFpeEhRVUZITEU5QlFVOHNSVUZCUlN4dlFrRkJjVUlzUTBGQlF6dEpRVU0zUkN4RFFVRkRPMGxCUlVRN096czdPMDlCUzBjN1NVRkRUeXhMUVVGTExFTkJRVU1zV1VGQldTeERRVUZETEU5QlFXZENPMUZCUXpORExFbEJRVWtzUTBGQlF5eFpRVUZaTEVkQlFVY3NZVUZCWVN4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVU5zUkN4TlFVRk5MR0ZCUVdFc1IwRkJSeXhKUVVGSkxIRkNRVUZ4UWl4RFFVRkRMRWxCUVVrc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dFJRVU0zUkN4SlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExFMUJRVTBzWVVGQllTeERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVc1NVRkJTU3hEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRU5CUVVNN1VVRkROMFVzWVVGQllTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRPMGxCUXpWQ0xFTkJRVU03U1VGRlJEczdPenM3T3p0UFFVOUhPMGxCUTA4c1dVRkJXU3hEUVVGRExFOUJRV2RDTEVWQlFVVXNUVUZCWXl4RlFVRkZMRTFCUVdNN1VVRkRja1VzVDBGQlR5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1EwRkJReXhaUVVGaExFTkJRVU1zVFVGQlRTeEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRNMFFzUTBGQlF6dEpRVVZFT3pzN096dFBRVXRITzBsQlEwa3NTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhQUVVGblFqdFJRVU5xUXl4TlFVRk5MRTFCUVUwc1IwRkJSeXhQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETzFGQlF6bENMRTFCUVUwc1UwRkJVeXhIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU55UWl3MFJFRkJORVE3VVVGRE5VUXNUVUZCVFN4WFFVRlhMRWRCUVVjc1owSkJRV2RDTEVOQlFVTXNUVUZCVFN4RlFVRkZMRTlCUVU4c1EwRkJReXhUUVVGVExFVkJRVVVzVTBGQlV5eERRVUZETEVOQlFVTTdVVUZGTTBVc1NVRkJTU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXp0UlFVVXpRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEV0QlFVc3NRMEZCUXp0WlFVTnNRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZITEU5QlFVOHNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJSMnhETEUxQlFVMHNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dFJRVVZxUXl4TFFVRkxMRWxCUVVrc1MwRkJTeXhIUVVGSExFTkJRVU1zUlVGQlJTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hGUVVGRkxFdEJRVXNzUlVGQlJUdFpRVU5vUkN4TFFVRkxMRWxCUVVrc1NVRkJTU3hIUVVGSExFTkJRVU1zUlVGQlJTeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1JVRkJSU3hGUVVGRkxFbEJRVWtzUlVGQlJUdG5Ra0ZETlVNc05rTkJRVFpETzJkQ1FVTTNReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1owSkJRelZDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRk5CUVZNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dG5Ra0ZETVVJc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF6dHZRa0ZCUlN4RFFVRkRMRWRCUVVjc1UwRkJVeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzJkQ1FVVnlReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eFhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRelZDTEUxQlFVMHNTVUZCU1N4SFFVRkhMRmRCUVZjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZGTlVJc05rVkJRVFpGTzJkQ1FVTTNSU3hOUVVGTkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUXpORExITkZRVUZ6UlR0blFrRkRkRVVzVFVGQlRTeERRVUZETEVkQlFVY3NNRUpCUVRCQ0xFTkJRVU1zU1VGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMmRDUVVWcVJDeHBSRUZCYVVRN1owSkJRMnBFTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSVHR2UWtGRGRrUXNUVUZCVFN4VlFVRlZMRWRCUVVjc1QwRkJUeXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0dlFrRkRNVVFzZDBOQlFYZERPMjlDUVVONFF5eE5RVUZOTEUxQlFVMHNSMEZCUnl4VFFVRlRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVONlF5eFhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1UwRkJVeXhEUVVGRExFbEJRVWtzUlVGQlJTeE5RVUZOTEVWQlFVVXNWVUZCVlN4RFFVRkRMRU5CUVVNN2IwSkJRM0pFTEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhUUVVGVExFTkJRVU1zU1VGQlNTeEZRVUZGTEUxQlFVMHNSVUZCUlN4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8ybENRVU4yUkR0aFFVTkdPMWxCUTBRc2FVVkJRV2xGTzFsQlEycEZMRTlCUVU4c1NVRkJTU3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETzFsQlEzcENMRWxCUVVrc1QwRkJUeXhKUVVGSkxFVkJRVVU3WjBKQlEyWXNUVUZCVFR0VFFVTlVPMUZCUTBRc1QwRkJUeXhYUVVGWExFTkJRVU03U1VGRGNrSXNRMEZCUXpzN1FVRXZSMmRDTEdsQ1FVRlRMRWRCUVVjc1EwRkJReXhEUVVGRE8xTkJSSEJDTEU5QlFVODdRVUZ0U0hCQ096czdPenM3UjBGTlJ6dEJRVU5JTEUxQlFVMHNUMEZCVHl4UlFVRlRMRk5CUVZFc1QwRkJUenRKUVVOdVF6czdPenM3VDBGTFJ6dEpRVU5KTEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1QwRkJaMEk3VVVGRGFrTXNUVUZCVFN4TlFVRk5MRWRCUVVjc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF6dFJRVU01UWl4TlFVRk5MRk5CUVZNc1IwRkJSeXhGUVVGRkxFTkJRVU03VVVGRGNrSXNOa1JCUVRaRU8xRkJRemRFTEUxQlFVMHNWMEZCVnl4SFFVRkhMR2RDUVVGblFpeERRVUZETEUxQlFVMHNSVUZCUlN4UlFVRlJMRU5CUVVNc1UwRkJVeXhGUVVGRkxGTkJRVk1zUTBGQlF5eERRVUZETzFGQlF6VkZMRWxCUVVrc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTTdVVUZGZWtJc1RVRkJUU3hKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUldwRExFdEJRVXNzU1VGQlNTeExRVUZMTEVkQlFVY3NRMEZCUXl4RlFVRkZMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVWQlFVVXNTMEZCU3l4RlFVRkZPMWxCUTJoRUxIZERRVUYzUXp0WlFVTjRReXhOUVVGTkxFTkJRVU1zUjBGQlZ5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1dVRkRjRU1zVFVGQlRTeEpRVUZKTEVkQlFVY3NWMEZCVnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJSVFZDTERaQ1FVRTJRanRaUVVNM1FpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVFVGQlRTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZPMmRDUVVNdlFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRPMjlDUVVGRkxGTkJRVk03WjBKQlEzSkNMRTFCUVUwc1NVRkJTU3hIUVVGSExGZEJRVmNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkROVUlzTkVWQlFUUkZPMmRDUVVNMVJTeE5RVUZOTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRek5ETERCRlFVRXdSVHRuUWtGRE1VVXNUVUZCVFN4RFFVRkRMRWRCUVVjc01FSkJRVEJDTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8yZENRVU5xUkN4cFJFRkJhVVE3WjBKQlEycEVMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJUdHZRa0ZEZGtRc1RVRkJUU3hWUVVGVkxFZEJRVWNzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenR2UWtGRGVrUXNUVUZCVFN4TlFVRk5MRWRCUVVjc1UwRkJVeXhEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGRGVrTXNhVU5CUVdsRE8yOUNRVU5xUXl4WFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVTBGQlV5eERRVUZETEVsQlFVa3NSVUZCUlN4TlFVRk5MRVZCUVVVc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dHBRa0ZEZGtRN1lVRkRSanRaUVVORUxHbEZRVUZwUlR0WlFVTnFSU3hOUVVGTkxFbEJRVWtzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXp0WlFVTjJRaXhKUVVGSkxFMUJRVTBzU1VGQlNTeEZRVUZGTzJkQ1FVTmtMRTFCUVUwN1UwRkRWRHRSUVVORUxFOUJRVThzVjBGQlZ5eERRVUZETzBsQlEzSkNMRU5CUVVNN1EwRkRSanRCUVVWRU96czdPenM3UjBGTlJ6dEJRVU5JTEUxQlFVMHNUMEZCVHl4WFFVRlpMRk5CUVZFc1QwRkJUenRKUVZkMFF5eFpRVUZaTEU5QlFXbENPMUZCUXpOQ0xFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0UlFVTm1MRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzVDBGQlR5eEZRVUZGTEUxQlFVMHNTVUZCU1N4SFFVRkhMRU5CUVVNN1VVRkRja01zU1VGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4UFFVRlBMRVZCUVVVc1MwRkJTeXhKUVVGSkxFMUJRVTBzUTBGQlF6dFJRVU4wUXl4SlFVRkpMRU5CUVVNc1lVRkJZU3hIUVVGSExFOUJRVThzUlVGQlJTeGhRVUZoTEVsQlFVa3NSMEZCUnl4RFFVRkRPMUZCUTI1RUxFbEJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NUMEZCVHl4RlFVRkZMRmRCUVZjc1NVRkJTU3hKUVVGSkxFTkJRVU03VVVGRGFFUXNTVUZCU1N4RFFVRkRMR2RDUVVGblFpeEhRVUZITEU5QlFVOHNSVUZCUlN4blFrRkJaMElzU1VGQlNTeEpRVUZKTEVOQlFVTTdTVUZETlVRc1EwRkJRenRKUVVWTkxFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTXNUMEZCWjBJN1VVRkRha01zVFVGQlRTeE5RVUZOTEVkQlFVY3NUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVNNVFpeE5RVUZOTEZOQlFWTXNSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkRja0lzTkVSQlFUUkVPMUZCUXpWRUxFMUJRVTBzVjBGQlZ5eEhRVUZITEdkQ1FVRm5RaXhEUVVGRExFMUJRVTBzUlVGQlJTeFhRVUZYTEVOQlFVTXNVMEZCVXl4RlFVRkZMRk5CUVZNc1EwRkJReXhEUVVGRE8xRkJSUzlGTEUxQlFVMHNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dFJRVVZxUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNTMEZCU3l4SlFVRkpPMWxCUTJoRExFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1IwRkJSeXhOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVVm9SU3hKUVVGSkxFbEJRVWtzUTBGQlF5eFhRVUZYTEV0QlFVc3NTVUZCU1N4RlFVRkZPMWxCUXpkQ0xFbEJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNN1dVRkRla0lzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdG5Ra0ZET1VNc1RVRkJUU3hEUVVGRExFZEJRVWNzVTBGQlV5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMmRDUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEZOQlFWTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRuUWtGRGRrUXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJRenR2UWtGQlJTeERRVUZETEVkQlFVY3NVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8yZENRVVZ5UXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlF6TkRMRWxCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eFhRVUZYTzI5Q1FVTjBRaXhKUVVGSkxFTkJRVU1zVjBGQlZ5eEhRVUZITEVOQlFVTXNRMEZCUXp0aFFVTjRRanRUUVVOR08xRkJSVVFzU1VGQlNTeE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVONlFpeE5RVUZOTEUxQlFVMHNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhoUVVGaExFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4WFFVRlhMRWRCUVVjc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF6dFJRVVYwUnl4TFFVRkxMRWxCUVVrc1MwRkJTeXhIUVVGSExFTkJRVU1zUlVGQlJTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hGUVVGRkxFdEJRVXNzUlVGQlJUdFpRVU5vUkN4TFFVRkxMRWxCUVVrc1NVRkJTU3hIUVVGSExFTkJRVU1zUlVGQlJTeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1JVRkJSU3hGUVVGRkxFbEJRVWtzUlVGQlJUdG5Ra0ZETlVNc05rTkJRVFpETzJkQ1FVTTNReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1owSkJRelZDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRk5CUVZNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dG5Ra0ZETVVJc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF6dHZRa0ZCUlN4RFFVRkRMRWRCUVVjc1UwRkJVeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzJkQ1FVVnlReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eFhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRelZDTEUxQlFVMHNTVUZCU1N4SFFVRkhMRmRCUVZjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZGTlVJc2VVVkJRWGxGTzJkQ1FVTjZSU3hOUVVGTkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUXpORExHdEZRVUZyUlR0blFrRkRiRVVzVFVGQlRTeERRVUZETEVkQlFVY3NNRUpCUVRCQ0xFTkJRVU1zU1VGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMmRDUVVWcVJDeEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZPMjlDUVVNMVFpeE5RVUZOTEZWQlFWVXNSMEZCUnl4TlFVRk5MRWRCUVVjc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0dlFrRkRMMFFzZDBOQlFYZERPMjlDUVVONFF5eE5RVUZOTEUxQlFVMHNSMEZCUnl4VFFVRlRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVONlF5eFhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1UwRkJVeXhEUVVGRExFbEJRVWtzUlVGQlJTeE5RVUZOTEVWQlFVVXNWVUZCVlN4RFFVRkRMRU5CUVVNN2IwSkJRM0pFTEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhUUVVGVExFTkJRVU1zU1VGQlNTeEZRVUZGTEUxQlFVMHNSVUZCUlN4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8ybENRVU4yUkR0aFFVTkdPMWxCUTBRc1RVRkJUU3hKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVUZETEVOQlFVTTdXVUZEYWtVc1NVRkJTU3hOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVODdaMEpCUTNaQ0xFMUJRVTA3VTBGRFZEdFJRVU5FTEU5QlFVOHNWMEZCVnl4RFFVRkRPMGxCUTNKQ0xFTkJRVU03UTBGRFJpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQjdUM0IwYVc5dWN5d2dRMjl2Y21ScGJtRjBaWE1zSUZabFkzUnZjbk1zSUVScGMzUmhibU5sVFdWMGNtbGpmU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMM1YwYVd4ekwzTnlZeTkwZVhCbExXUmxZMnhoY21GMGFXOXVjeWM3WEc1cGJYQnZjblFnZTF4dUlDQmpZV3hqZFd4aGRHVkZkV05zYVdSbFlXNUVhWE4wWVc1alpTeGNiaUFnWm1sc2JGSmhibVJ2YlUxaGRISnBlQ3hjYmlBZ2RtVmpkRzl5UVdSa0xGeHVmU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMM1YwYVd4ekwzTnlZeTkyWldOMGIzSXRiM0JsY21GMGFXOXVjeWM3WEc1cGJYQnZjblFnZTNKaGJtUnZiVWx1ZEgwZ1puSnZiU0FuUUdSaGRHRm5jbTlyTFd4cFluSmhjbWxsY3k5MWRHbHNjeTl6Y21NdmNtRnVaRzl0Snp0Y2JtbHRjRzl5ZENCN1MyNXZkMjVOWlhSeWFXTnpmU0JtY205dElDY3VMM1I1Y0dWa0xXMWxkSEpwWTNNbk8xeHVhVzF3YjNKMElIdEVhWE4wWVc1alpVMWhkSEpwZUZObGNuWnBZMlVzSUdSdFRHbHVaV0Z5U1c1a1pYaDlJR1p5YjIwZ0p5NHZaR2x6ZEdGdVkyVXRiV0YwY21sNEp6dGNibHh1THlvcVhHNGdLaUJKYlhCc1pXMWxiblJ6SUhOMGIyTm9ZWE4wYVdNZ2NISnZlR2x0YVhSNUlHVnRZbVZrWkdsdVp5NWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBWTJ4aGMzTWdVMUJGUW1GelpWeHVJQ29nUUd4cGJtc2daRzlwT2pFd0xqRXdNVFl2VXpFd09UTXRNekkyTXlnd015a3dNREUxTlMwMFhHNGdLaTljYm1WNGNHOXlkQ0JqYkdGemN5QlRVRVZDWVhObElIdGNiaUFnY0hKdmRHVmpkR1ZrSUhOMFlYUnBZeUJrYVcxbGJuTnBiMjRnUFNBeU8xeHVJQ0J3Y205MFpXTjBaV1FnYzNSbGNITTZJRzUxYldKbGNqdGNiaUFnY0hKdmRHVmpkR1ZrSUdONVkyeGxjem9nYm5WdFltVnlPMXh1SUNCd2NtOTBaV04wWldRZ1kzVjBiMlptT2lCdWRXMWlaWEk3WEc0Z0lIQnliM1JsWTNSbFpDQnNZVzFpWkdFNklHNTFiV0psY2p0Y2JpQWdjSEp2ZEdWamRHVmtJR1JzWVcxaVpHRTZJRzUxYldKbGNqdGNiaUFnY0hKdmRHVmpkR1ZrSUd4aGJXSmtZVEk2SUc1MWJXSmxjanRjYmlBZ2NISnZkR1ZqZEdWa0lHUnNZVzFpWkdFeU9pQnVkVzFpWlhJN1hHNGdJSEJ5YjNSbFkzUmxaQ0JsY0hOcGJHOXVPaUJ1ZFcxaVpYSTdYRzRnSUhCeWIzUmxZM1JsWkNCa2FYTjBZVzVqWlVaMWJtTjBhVzl1T2lCRWFYTjBZVzVqWlUxbGRISnBZenRjYmlBZ2NISnZkR1ZqZEdWa0lHUnBjM1JoYm1ObFJuVnVZM1JwYjI1T1lXMWxPaUJMYm05M2JrMWxkSEpwWTNNN1hHNGdJR1JwYzNSaGJtTmxPaUJHYkc5aGRETXlRWEp5WVhrN1hHNGdJSEJ5YjNSbFkzUmxaQ0JrYlVsdVpHVjRSblZ1WTNRL09pQW9hVG9nYm5WdFltVnlMQ0JxT2lCdWRXMWlaWElwSUQwK0lHNTFiV0psY2p0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUTNKbFlYUmxjeUJoYmlCcGJuTjBZVzVqWlNCdlppQlRVRVZDWVhObExseHVJQ0FnS2lCQWNHRnlZVzBnZTA5d2RHbHZibk45SUZ0dmNIUnBiMjV6WFNCUGNIUnBiMjV6SUhSdklIQmhjM01nZEc4Z2RHaGxJR052Ym5OMGNuVmpkRzl5TGx4dUlDQWdLaUJBYldWdFltVnliMllnVTFCRlFtRnpaVnh1SUNBZ0tpOWNiaUFnWTI5dWMzUnlkV04wYjNJb2IzQjBhVzl1Y3o4NklFOXdkR2x2Ym5NcElIdGNiaUFnSUNCMGFHbHpMbk4wWlhCeklEMGdiM0IwYVc5dWN6OHVjM1JsY0hNZ1B6OGdNRHRjYmlBZ0lDQjBhR2x6TG1ONVkyeGxjeUE5SUc5d2RHbHZibk0vTG1ONVkyeGxjeUEvUHlBeFpUWTdYRzRnSUNBZ0x5OGdVMlZzWldOMElHRWdZM1YwYjJabUlHUnBjM1JoYm1ObElIdGpkWFJ2Wm1aOUlHRnVaQ0F1TGk1Y2JpQWdJQ0IwYUdsekxtTjFkRzltWmlBOUlHOXdkR2x2Ym5NL0xtTjFkRzltWmlBL1B5QXdPMXh1SUNBZ0lDOHZJQzR1TGlCaGJpQnBibWwwYVdGc0lHeGxZWEp1YVc1bklISmhkR1VnZTJ4aGJXSmtZWDBnUGlBd1hHNGdJQ0FnZEdocGN5NXNZVzFpWkdFZ1BTQnZjSFJwYjI1elB5NXNZVzFpWkdFZ1B6OGdNaTR3TzF4dUlDQWdJSFJvYVhNdVpHeGhiV0prWVNBOUlHOXdkR2x2Ym5NL0xtUnNZVzFpWkdFZ1B6OGdNQzR3TVR0Y2JpQWdJQ0IwYUdsekxteGhiV0prWVRJZ1BTQjBhR2x6TG14aGJXSmtZU0F2SURJdU8xeHVJQ0FnSUhSb2FYTXVaR3hoYldKa1lUSWdQU0IwYUdsekxtUnNZVzFpWkdFZ0x5QXlManRjYmlBZ0lDQjBhR2x6TG1Wd2MybHNiMjRnUFNCdmNIUnBiMjV6UHk1bGNITnBiRzl1SUQ4L0lERmxMVEV3TzF4dUlDQWdJQzh2SUdWemJHbHVkQzFrYVhOaFlteGxMVzVsZUhRdGJHbHVaU0JpY21GalpTMXpkSGxzWlZ4dUlDQWdJSFJvYVhNdVpHbHpkR0Z1WTJWR2RXNWpkR2x2YmlBOUlHOXdkR2x2Ym5NL0xtUnBjM1JoYm1ObElEOC9JR05oYkdOMWJHRjBaVVYxWTJ4cFpHVmhia1JwYzNSaGJtTmxPMXh1SUNBZ0lIUm9hWE11WkdsemRHRnVZMlVnUFNCdVpYY2dSbXh2WVhRek1rRnljbUY1S0NrN1hHNGdJQ0FnZEdocGN5NWthWE4wWVc1alpVWjFibU4wYVc5dVRtRnRaU0E5SUc5d2RHbHZibk0vTG1ScGMzUmhibU5sUm5WdVkzUnBiMjVPWVcxbElUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJKYm1sMGFXRnNhWHBsY3lCa2FYTjBZVzVqWlNCdFlYUnlhWGd1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1ZtVmpkRzl5YzMwZ2RtVmpkRzl5Y3lCSmJuQjFkQ0IyWldOMGIzSnpJSFJ2SUdOaGJHTjFiR0YwWlNCa2FYTjBZVzVqWlNCaVpYUjNaV1Z1TGx4dUlDQWdLaUJBYldWdFltVnliMllnVTFCRlFtRnpaVnh1SUNBZ0tpOWNiaUFnY0hKdmRHVmpkR1ZrSUdGemVXNWpJR2x1YVhSRWFYTjBZVzVqWlNoMlpXTjBiM0p6T2lCV1pXTjBiM0p6S1NCN1hHNGdJQ0FnZEdocGN5NWtiVWx1WkdWNFJuVnVZM1FnUFNCa2JVeHBibVZoY2tsdVpHVjRLSFpsWTNSdmNuTXViR1Z1WjNSb0tUdGNiaUFnSUNCamIyNXpkQ0J0WVhSeWFYaFRaWEoyYVdObElEMGdibVYzSUVScGMzUmhibU5sVFdGMGNtbDRVMlZ5ZG1salpTaDBjblZsTENCbVlXeHpaU2s3WEc0Z0lDQWdkR2hwY3k1a2FYTjBZVzVqWlNBOUlHRjNZV2wwSUcxaGRISnBlRk5sY25acFkyVXVZMkZzWXloMlpXTjBiM0p6TENCMGFHbHpMbVJwYzNSaGJtTmxSblZ1WTNScGIyNU9ZVzFsS1R0Y2JpQWdJQ0J0WVhSeWFYaFRaWEoyYVdObExuUmxjbTFwYm1GMFpTZ3BPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVOaGJHTjFiR0YwWlhNZ1pHbHpkR0Z1WTJVZ1ltVjBkMlZsYmlCMGFHVWdkSGR2SUhabFkzUnZjbk1nWjJsMlpXNHVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3Vm1WamRHOXljMzBnZG1WamRHOXljeUJUWlhRZ2IyWWdkbVZqZEc5eWN5QjBieUJqWVd4amRXeGhkR1VnWkdsemRHRnVZMlZ6SUdKbGRIZGxaVzR1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQnBibVJsZURFZ1NXNWtaWGdnYjJZZ2RHaGxJR1pwY25OMElIWmxZM1J2Y2lCdlppQjBhR1VnY0dGcGNpNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUdsdVpHVjRNaUJKYm1SbGVDQnZaaUIwYUdVZ2MyVmpiMjVrSUhabFkzUnZjaUJ2WmlCMGFHVWdjR0ZwY2k1Y2JpQWdJQ29nUUhKbGRIVnliaUI3Ym5WdFltVnlmU0JFYVhOMFlXNWpaU0JpWlhSM1pXVnVJSFJvWlhObElIUjNieUIyWldOMGIzSnpMbHh1SUNBZ0tpOWNiaUFnY0hKdmRHVmpkR1ZrSUdOaGJHTkVhWE4wWVc1alpTaDJaV04wYjNKek9pQldaV04wYjNKekxDQnBibVJsZURFNklHNTFiV0psY2l3Z2FXNWtaWGd5T2lCdWRXMWlaWElwT2lCdWRXMWlaWElnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1ScGMzUmhibU5sVzNSb2FYTXVaRzFKYm1SbGVFWjFibU4wSVNocGJtUmxlREVzSUdsdVpHVjRNaWxkTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFVnRZbVZrY3lCMGFHVWdkbVZqZEc5eWN5Qm5hWFpsYmlCcGJuUnZJR0VnZEhkdkxXUnBiV1Z1YzJsdmJtRnNJSE53WVdObExseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMVpsWTNSdmNuTjlJSFpsWTNSdmNuTWdSQzFrYVcxbGJuTnBiMjVoYkNCamIyOXlaR2x1WVhSbGN5NWNiaUFnSUNvZ1FISmxkSFZ5YmlCN1EyOXZjbVJwYm1GMFpYTjlJRk5RUlNCamIyOXlaR2x1WVhSbGN5QnBiaUJFSUhOd1lXTmxMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR0Z6ZVc1aklHVnRZbVZrS0habFkzUnZjbk02SUZabFkzUnZjbk1wT2lCUWNtOXRhWE5sUEVOdmIzSmthVzVoZEdWelBpQjdYRzRnSUNBZ1kyOXVjM1FnYmtsMFpXMXpJRDBnZG1WamRHOXljeTVzWlc1bmRHZzdYRzRnSUNBZ1kyOXVjM1FnWVhKbFlWZHBaSFJvSUQwZ05EQTdYRzRnSUNBZ0x5OGdTVzVwZEdsaGJHbDZaU0IwYUdVZ1JDMWthVzFsYm5OcGIyNWhiQ0JqYjI5eVpHbHVZWFJsY3lCdlppQjBhR1VnVGlCd2IybHVkSE11WEc0Z0lDQWdZMjl1YzNRZ1kyOXZjbVJwYm1GMFpYTWdQU0JtYVd4c1VtRnVaRzl0VFdGMGNtbDRLRzVKZEdWdGN5d2dVMUJGUW1GelpTNWthVzFsYm5OcGIyNHNJR0Z5WldGWGFXUjBhQ2s3WEc1Y2JpQWdJQ0JzWlhRZ2JHRnRZbVJoTWlBOUlIUm9hWE11YkdGdFltUmhNanRjYmx4dUlDQWdJR2xtSUNoMGFHbHpMbk4wWlhCeklEMDlQU0F3S1Z4dUlDQWdJQ0FnZEdocGN5NXpkR1Z3Y3lBOUlIWmxZM1J2Y25NdWJHVnVaM1JvSUMwZ01UdGNibHh1WEc0Z0lDQWdZWGRoYVhRZ2RHaHBjeTVwYm1sMFJHbHpkR0Z1WTJVb2RtVmpkRzl5Y3lrN1hHNWNiaUFnSUNCbWIzSWdLR3hsZENCamVXTnNaU0E5SURBN0lHTjVZMnhsSUR3Z2RHaHBjeTVqZVdOc1pYTTdJQ3NyWTNsamJHVXBJSHRjYmlBZ0lDQWdJR1p2Y2lBb2JHVjBJSE4wWlhBZ1BTQXdPeUJ6ZEdWd0lEd2dkR2hwY3k1emRHVndjenNnS3l0emRHVndLU0I3WEc0Z0lDQWdJQ0FnSUM4dklGTmxiR1ZqZENCMGQyOGdjRzlwYm5SekxDQnBJR0Z1WkNCcUxDQmhkQ0J5WVc1a2IyMHNJQzR1TGx4dUlDQWdJQ0FnSUNCamIyNXpkQ0JwSUQwZ2NtRnVaRzl0U1c1MEtHNUpkR1Z0Y3lrN1hHNGdJQ0FnSUNBZ0lHeGxkQ0JxSUQwZ2NtRnVaRzl0U1c1MEtHNUpkR1Z0Y3lrN1hHNGdJQ0FnSUNBZ0lIZG9hV3hsSUNocElEMDlJR29wSUdvZ1BTQnlZVzVrYjIxSmJuUW9ia2wwWlcxektUdGNibHh1SUNBZ0lDQWdJQ0JqYjI1emRDQnliM2RwSUQwZ1kyOXZjbVJwYm1GMFpYTmJhVjA3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSEp2ZDJvZ1BTQmpiMjl5WkdsdVlYUmxjMXRxWFR0Y2JseHVJQ0FnSUNBZ0lDQXZMeUF1TGk0Z2NtVjBjbWxsZG1VZ0tHOXlJR1YyWVd4MVlYUmxLU0IwYUdWcGNpQndjbTk0YVcxcGRIa2dhVzRnZEdobElHbHVjSFYwSUhOd1lXTmxMQ0J5YVdvZ1lXNWtJQzR1TGx4dUlDQWdJQ0FnSUNCamIyNXpkQ0J5SUQwZ2RHaHBjeTVqWVd4alJHbHpkR0Z1WTJVb2RtVmpkRzl5Y3l3Z2FTd2dhaWs3WEc0Z0lDQWdJQ0FnSUM4dklDNHVMaUJqYjIxd2RYUmxJSFJvWldseUlFVjFZMnhwWkdWaGJpQmthWE4wWVc1alpTQnZiaUIwYUdVZ1JDMWthVzFsYm5OcGIyNWhiQ0J0WVhBc0lHUnBhaTVjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdaQ0E5SUdOaGJHTjFiR0YwWlVWMVkyeHBaR1ZoYmtScGMzUmhibU5sS0hKdmQya3NJSEp2ZDJvcE8xeHVYRzRnSUNBZ0lDQWdJQzh2SUVsbUlISnBhaUE4UFNCeVl5d2diM0lnYVdZZ2NtbHFJRDRnY21NZ1lXNWtJR1JwYWlBOElISnBhaUF1TGk1Y2JpQWdJQ0FnSUNBZ2FXWWdLQ2gwYUdsekxtTjFkRzltWmlBOVBTQXdLU0I4ZkNBb2NpQThQU0IwYUdsekxtTjFkRzltWmlrZ2ZId2dLR1FnUENCeUtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJRzExYkhScGNHeHBaWElnUFNCc1lXMWlaR0V5SUNvZ0tISWdMU0JrS1NBdklDaGtJQ3NnZEdocGN5NWxjSE5wYkc5dUtUdGNiaUFnSUNBZ0lDQWdJQ0F2THlBdUxpNGdkWEJrWVhSbElIUm9aU0JqYjI5eVpHbHVZWFJsY3lCNGFTQmhibVFnZUdvdVhHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ1pHbG1aa2xLSUQwZ2RtVmpkRzl5UVdSa0tISnZkMmtzSUhKdmQyb3NJQzB4S1R0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjl5WkdsdVlYUmxjMXRwWFNBOUlIWmxZM1J2Y2tGa1pDaHliM2RwTENCa2FXWm1TVW9zSUcxMWJIUnBjR3hwWlhJcE8xeHVJQ0FnSUNBZ0lDQWdJR052YjNKa2FXNWhkR1Z6VzJwZElEMGdkbVZqZEc5eVFXUmtLSEp2ZDJvc0lHUnBabVpKU2l3Z0xXMTFiSFJwY0d4cFpYSXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0F2THlCRVpXTnlaV0Z6WlNCMGFHVWdiR1ZoY201cGJtY2djbUYwWlNCN2JHRnRZbVJoZlNCaWVTQmhJSEJ5WlhOamNtbGlaV1FnZTJSc1lXMWlaR0Y5TGx4dUlDQWdJQ0FnYkdGdFltUmhNaUF0UFNCMGFHbHpMbVJzWVcxaVpHRXlPMXh1SUNBZ0lDQWdhV1lnS0d4aGJXSmtZVElnUEQwZ01DNHBYRzRnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdZMjl2Y21ScGJtRjBaWE03WEc0Z0lIMWNibjFjYmx4dUx5b3FYRzRnS2lCSmJYQnNaVzFsYm5SeklHMXZaR2xtYVdWa0lITjBiMk5vWVhOMGFXTWdjSEp2ZUdsdGFYUjVJR1Z0WW1Wa1pHbHVaeTVjYmlBcVhHNGdLaUJBWlhod2IzSjBYRzRnS2lCQVkyeGhjM01nVUZOUVJVSmhjMlZjYmlBcUlFQnNhVzVySUdSdmFUb3hNQzR4TURFMkwxTXhNRGt6TFRNeU5qTW9NRE1wTURBeE5UVXRORnh1SUNvdlhHNWxlSEJ2Y25RZ1kyeGhjM01nVUZOUVJVSmhjMlVnWlhoMFpXNWtjeUJUVUVWQ1lYTmxJSHRjYmlBZ0x5b3FYRzRnSUNBcUlFVnRZbVZrY3lCMGFHVWdkbVZqZEc5eWN5Qm5hWFpsYmlCcGJuUnZJR0VnZEhkdkxXUnBiV1Z1YzJsdmJtRnNJSE53WVdObElIVnphVzVuSUdFZ2JXOWthV1pwWldRZ2RYQmtZWFJsSUhKMWJHVXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3Vm1WamRHOXljMzBnZG1WamRHOXljeUJFTFdScGJXVnVjMmx2Ym1Gc0lHTnZiM0prYVc1aGRHVnpMbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdERiMjl5WkdsdVlYUmxjMzBnVTFCRklHTnZiM0prYVc1aGRHVnpJR2x1SUVRZ2MzQmhZMlV1WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nWVhONWJtTWdaVzFpWldRb2RtVmpkRzl5Y3pvZ1ZtVmpkRzl5Y3lrNklGQnliMjFwYzJVOFEyOXZjbVJwYm1GMFpYTStJSHRjYmlBZ0lDQmpiMjV6ZENCdVNYUmxiWE1nUFNCMlpXTjBiM0p6TG14bGJtZDBhRHRjYmlBZ0lDQmpiMjV6ZENCaGNtVmhWMmxrZEdnZ1BTQTBNRHRjYmlBZ0lDQXZMeUFnU1c1cGRHbGhiR2w2WlNCMGFHVWdSQzFrYVcxbGJuTnBiMjVoYkNCamIyOXlaR2x1WVhSbGN5QnZaaUIwYUdVZ1RpQndiMmx1ZEhNdVhHNGdJQ0FnWTI5dWMzUWdZMjl2Y21ScGJtRjBaWE1nUFNCbWFXeHNVbUZ1Wkc5dFRXRjBjbWw0S0c1SmRHVnRjeXdnVUZOUVJVSmhjMlV1WkdsdFpXNXphVzl1TENCaGNtVmhWMmxrZEdncE8xeHVJQ0FnSUd4bGRDQnNZVzFpWkdFZ1BTQjBhR2x6TG14aGJXSmtZVHRjYmx4dUlDQWdJR0YzWVdsMElIUm9hWE11YVc1cGRFUnBjM1JoYm1ObEtIWmxZM1J2Y25NcE8xeHVYRzRnSUNBZ1ptOXlJQ2hzWlhRZ1kzbGpiR1VnUFNBd095QmplV05zWlNBOElIUm9hWE11WTNsamJHVnpPeUFySzJONVkyeGxLU0I3WEc0Z0lDQWdJQ0F2THlCVFpXeGxZM1FnWVNCd2IybHVkQ3dnYVN3Z1lYUWdjbUZ1Wkc5dElDaHdhWFp2ZENrdVhHNGdJQ0FnSUNCamIyNXpkQ0JwT2lCdWRXMWlaWElnUFNCeVlXNWtiMjFKYm5Rb2JrbDBaVzF6S1R0Y2JpQWdJQ0FnSUdOdmJuTjBJSEp2ZDJrZ1BTQmpiMjl5WkdsdVlYUmxjMXRwWFR0Y2JseHVJQ0FnSUNBZ0x5OGdSbTl5SUdWMlpYSjVJSEJ2YVc1MElHb2dJVDBnYVNBdUxpNWNiaUFnSUNBZ0lHWnZjaUFvYkdWMElHb2dQU0F3T3lCcUlEd2dia2wwWlcxek95QXJLMm9wSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR2tnUFQwZ2Fpa2dZMjl1ZEdsdWRXVTdYRzRnSUNBZ0lDQWdJR052Ym5OMElISnZkMm9nUFNCamIyOXlaR2x1WVhSbGMxdHFYVHRjYmlBZ0lDQWdJQ0FnTHk4Z0xpNHVJSEpsZEhKcFpYWmxJQ2h2Y2lCbGRtRnNkV0YwWlNrZ2FYUnpJSEJ5YjNocGJXbDBlU0IwYnlCcElHbHVJSFJvWlNCcGJuQjFkQ0J6Y0dGalpTd2djbWxxSUM0dUxseHVJQ0FnSUNBZ0lDQmpiMjV6ZENCeUlEMGdkR2hwY3k1allXeGpSR2x6ZEdGdVkyVW9kbVZqZEc5eWN5d2dhU3dnYWlrN1hHNGdJQ0FnSUNBZ0lDOHZJQzR1TGlCaGJtUWdZMjl0Y0hWMFpTQjBhR1ZwY2lCRmRXTnNhV1JsWVc0Z1pHbHpkR0Z1WTJVZ2IyNGdkR2hsSUVRdFpHbHRaVzV6YVc5dVlXd2diV0Z3TENCa2FXb3VYRzRnSUNBZ0lDQWdJR052Ym5OMElHUWdQU0JqWVd4amRXeGhkR1ZGZFdOc2FXUmxZVzVFYVhOMFlXNWpaU2h5YjNkcExDQnliM2RxS1R0Y2JpQWdJQ0FnSUNBZ0x5OGdTV1lnY21scUlEdzlJSEpqTENCdmNpQnBaaUJ5YVdvZ1BpQnlZeUJoYm1RZ1pHbHFJRHdnY21scUlDNHVMbHh1SUNBZ0lDQWdJQ0JwWmlBb0tIUm9hWE11WTNWMGIyWm1JRDA5SURBcElIeDhJQ2h5SUR3OUlIUm9hWE11WTNWMGIyWm1LU0I4ZkNBb1pDQThJSElwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2JYVnNkR2x3YkdsbGNpQTlJR3hoYldKa1lTQXFJQ2h5SUMwZ1pDa2dMeUFvWkNBcklIUm9hWE11WlhCemFXeHZiaWs3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnWkdsbVprbEtJRDBnZG1WamRHOXlRV1JrS0hKdmQya3NJSEp2ZDJvc0lDMHhLVHRjYmlBZ0lDQWdJQ0FnSUNBdkx5QXVMaTRnZFhCa1lYUmxJSFJvWlNCamIyOXlaR2x1WVhSbGN5QjRhaTVjYmlBZ0lDQWdJQ0FnSUNCamIyOXlaR2x1WVhSbGMxdHFYU0E5SUhabFkzUnZja0ZrWkNoeWIzZHFMQ0JrYVdabVNVb3NJQzF0ZFd4MGFYQnNhV1Z5S1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0x5OGdSR1ZqY21WaGMyVWdkR2hsSUd4bFlYSnVhVzVuSUhKaGRHVWdlMnhoYldKa1lYMGdZbmtnWVNCd2NtVnpZM0pwWW1Wa0lIdGtiR0Z0WW1SaGZTNWNiaUFnSUNBZ0lHeGhiV0prWVNBdFBTQjBhR2x6TG1Sc1lXMWlaR0U3WEc0Z0lDQWdJQ0JwWmlBb2JHRnRZbVJoSUR3OUlEQXVLVnh1SUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJR052YjNKa2FXNWhkR1Z6TzF4dUlDQjlYRzU5WEc1Y2JpOHFLbHh1SUNvZ1NXMXdiR1Z0Wlc1MGN5QnRiMlJwWm1sbFpDQnpkRzlqYUdGemRHbGpJSEJ5YjNocGJXbDBlU0JsYldKbFpHUnBibWN1WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FHTnNZWE56SUU5eWFXZHBibUZzVTFCRlhHNGdLaUJBYkdsdWF5QmtiMms2TVRBdU1UQXdNaTlxWTJNdU1UQXlNelJjYmlBcUwxeHVaWGh3YjNKMElHTnNZWE56SUU5eWFXZHBibUZzVTFCRklHVjRkR1Z1WkhNZ1UxQkZRbUZ6WlNCN1hHNGdJQzhxS2x4dUlDQWdLaUJGYldKbFpITWdkR2hsSUhabFkzUnZjbk1nWjJsMlpXNGdhVzUwYnlCaElIUjNieTFrYVcxbGJuTnBiMjVoYkNCemNHRmpaU0IxYzJsdVp5QmhJRzF2WkdsbWFXVmtJSFZ3WkdGMFpTQnlkV3hsTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxWmxZM1J2Y25OOUlIWmxZM1J2Y25NZ1JDMWthVzFsYm5OcGIyNWhiQ0JqYjI5eVpHbHVZWFJsY3k1Y2JpQWdJQ29nUUhKbGRIVnliaUI3UTI5dmNtUnBibUYwWlhOOUlGTlFSU0JqYjI5eVpHbHVZWFJsY3lCcGJpQkVJSE53WVdObExseHVJQ0FnS2k5Y2JpQWdjSEp2ZEdWamRHVmtJSEpoWkdsMWMxQmxjbU5sYm5RNklHNTFiV0psY2p0Y2JpQWdjSEp2ZEdWamRHVmtJRzFoZUVScGMzUmhibU5sT2lCdWRXMWlaWEk3WEc0Z0lIQnliM1JsWTNSbFpDQnRZWGhFYVhOMFlXNWpaVk4wWlhCek9pQnVkVzFpWlhJN1hHNWNiaUFnWTI5dWMzUnlkV04wYjNJb2IzQjBhVzl1Y3o4NklFOXdkR2x2Ym5NcElIdGNiaUFnSUNCemRYQmxjaWh2Y0hScGIyNXpLVHRjYmlBZ0lDQjBhR2x6TG1ONVkyeGxjeUE5SUc5d2RHbHZibk0vTG1ONVkyeGxjeUEvUHlBeFpUTTdYRzRnSUNBZ2RHaHBjeTV6ZEdWd2N5QTlJRzl3ZEdsdmJuTS9Mbk4wWlhCeklEOC9JREV3TURBd01EdGNiaUFnSUNCMGFHbHpMbkpoWkdsMWMxQmxjbU5sYm5RZ1BTQnZjSFJwYjI1elB5NXlZV1JwZFhOUVpYSmpaVzUwSUQ4L0lERXVNRHRjYmlBZ0lDQjBhR2x6TG0xaGVFUnBjM1JoYm1ObElEMGdiM0IwYVc5dWN6OHViV0Y0UkdsemRHRnVZMlVnUHo4Z2JuVnNiRHRjYmlBZ0lDQjBhR2x6TG0xaGVFUnBjM1JoYm1ObFUzUmxjSE1nUFNCdmNIUnBiMjV6UHk1dFlYaEVhWE4wWVc1alpWTjBaWEJ6SUQ4L0lHNTFiR3c3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWVhONWJtTWdaVzFpWldRb2RtVmpkRzl5Y3pvZ1ZtVmpkRzl5Y3lrNklGQnliMjFwYzJVOFEyOXZjbVJwYm1GMFpYTStJSHRjYmlBZ0lDQmpiMjV6ZENCdVNYUmxiWE1nUFNCMlpXTjBiM0p6TG14bGJtZDBhRHRjYmlBZ0lDQmpiMjV6ZENCaGNtVmhWMmxrZEdnZ1BTQTBNRHRjYmlBZ0lDQXZMeUJKYm1sMGFXRnNhWHBsSUhSb1pTQkVMV1JwYldWdWMybHZibUZzSUdOdmIzSmthVzVoZEdWeklHOW1JSFJvWlNCT0lIQnZhVzUwY3k1Y2JpQWdJQ0JqYjI1emRDQmpiMjl5WkdsdVlYUmxjeUE5SUdacGJHeFNZVzVrYjIxTllYUnlhWGdvYmtsMFpXMXpMQ0JQY21sbmFXNWhiRk5RUlM1a2FXMWxibk5wYjI0c0lHRnlaV0ZYYVdSMGFDazdYRzVjYmlBZ0lDQmhkMkZwZENCMGFHbHpMbWx1YVhSRWFYTjBZVzVqWlNoMlpXTjBiM0p6S1R0Y2JseHVJQ0FnSUdsbUlDaDBhR2x6TG0xaGVFUnBjM1JoYm1ObFUzUmxjSE1nUFQwOUlHNTFiR3dwWEc0Z0lDQWdJQ0IwYUdsekxtMWhlRVJwYzNSaGJtTmxVM1JsY0hNZ1BTQnVTWFJsYlhNZ0tpQk5ZWFJvTG1ac2IyOXlLQ2h1U1hSbGJYTWdMU0F4S1NBdklESXBPMXh1WEc0Z0lDQWdhV1lnS0hSb2FYTXViV0Y0UkdsemRHRnVZMlVnUFQwOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUhSb2FYTXViV0Y0UkdsemRHRnVZMlVnUFNBdE1XVXpOenRjYmlBZ0lDQWdJR1p2Y2lBb2JHVjBJRzRnUFNBd095QnVJRHdnZEdocGN5NXRZWGhFYVhOMFlXNWpaVk4wWlhCek95QnVLeXNwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnYVNBOUlISmhibVJ2YlVsdWRDaHVTWFJsYlhNcE95QnNaWFFnYWlBOUlISmhibVJ2YlVsdWRDaHVTWFJsYlhNcE8xeHVJQ0FnSUNBZ0lDQjNhR2xzWlNBb2FTQTlQU0JxS1NCcUlEMGdjbUZ1Wkc5dFNXNTBLRzVKZEdWdGN5azdYRzVjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdaQ0E5SUhSb2FYTXVZMkZzWTBScGMzUmhibU5sS0habFkzUnZjbk1zSUdrc0lHb3BPMXh1SUNBZ0lDQWdJQ0JwWmlBb1pDQStJSFJvYVhNdWJXRjRSR2x6ZEdGdVkyVXBYRzRnSUNBZ0lDQWdJQ0FnZEdocGN5NXRZWGhFYVhOMFlXNWpaU0E5SUdRN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnYkdWMElHeGhiV0prWVNBOUlIUm9hWE11YkdGdFltUmhPMXh1SUNBZ0lHTnZibk4wSUhKaFpHbDFjeUE5SUNoMGFHbHpMbkpoWkdsMWMxQmxjbU5sYm5RZ1BUMGdNQzR3S1NBL0lIUm9hWE11YldGNFJHbHpkR0Z1WTJVZ09pQjBhR2x6TG0xaGVFUnBjM1JoYm1ObElDb2dkR2hwY3k1eVlXUnBkWE5RWlhKalpXNTBPMXh1WEc0Z0lDQWdabTl5SUNoc1pYUWdZM2xqYkdVZ1BTQXdPeUJqZVdOc1pTQThJSFJvYVhNdVkzbGpiR1Z6T3lBcksyTjVZMnhsS1NCN1hHNGdJQ0FnSUNCbWIzSWdLR3hsZENCemRHVndJRDBnTURzZ2MzUmxjQ0E4SUhSb2FYTXVjM1JsY0hNN0lDc3JjM1JsY0NrZ2UxeHVJQ0FnSUNBZ0lDQXZMeUJUWld4bFkzUWdkSGR2SUhCdmFXNTBjeXdnYVNCaGJtUWdhaXdnWVhRZ2NtRnVaRzl0TENBdUxpNWNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2FTQTlJSEpoYm1SdmJVbHVkQ2h1U1hSbGJYTXBPMXh1SUNBZ0lDQWdJQ0JzWlhRZ2FpQTlJSEpoYm1SdmJVbHVkQ2h1U1hSbGJYTXBPMXh1SUNBZ0lDQWdJQ0IzYUdsc1pTQW9hU0E5UFNCcUtTQnFJRDBnY21GdVpHOXRTVzUwS0c1SmRHVnRjeWs3WEc1Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnY205M2FTQTlJR052YjNKa2FXNWhkR1Z6VzJsZE8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCeWIzZHFJRDBnWTI5dmNtUnBibUYwWlhOYmFsMDdYRzVjYmlBZ0lDQWdJQ0FnTHk4Z2NtVjBjbWxsZG1VZ0tHOXlJR1YyWVd4MVlYUmxLU0IwYUdWcGNpQndjbTk0YVcxcGRIa2dhVzRnZEdobElHbHVjSFYwSUhOd1lXTmxMQ0J5YVdvZ1lXNWtJQzR1TGx4dUlDQWdJQ0FnSUNCamIyNXpkQ0J5SUQwZ2RHaHBjeTVqWVd4alJHbHpkR0Z1WTJVb2RtVmpkRzl5Y3l3Z2FTd2dhaWs3WEc0Z0lDQWdJQ0FnSUM4dklHTnZiWEIxZEdVZ2RHaGxhWElnUlhWamJHbGtaV0Z1SUdScGMzUmhibU5sSUc5dUlIUm9aU0JFTFdScGJXVnVjMmx2Ym1Gc0lHMWhjQ3dnWkdscUxseHVJQ0FnSUNBZ0lDQmpiMjV6ZENCa0lEMGdZMkZzWTNWc1lYUmxSWFZqYkdsa1pXRnVSR2x6ZEdGdVkyVW9jbTkzYVN3Z2NtOTNhaWs3WEc1Y2JpQWdJQ0FnSUNBZ2FXWWdLQ2h5SUR3OUlISmhaR2wxY3lrZ2ZId2dLR1FnUENCeUtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJRzExYkhScGNHeHBaWElnUFNCc1lXMWlaR0VnS2lBd0xqVWdLaUFvY2lBdElHUXBJQzhnS0dRZ0t5QjBhR2x6TG1Wd2MybHNiMjRwTzF4dUlDQWdJQ0FnSUNBZ0lDOHZJQzR1TGlCMWNHUmhkR1VnZEdobElHTnZiM0prYVc1aGRHVnpJSGhwSUdGdVpDQjRhaTVjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JrYVdabVNVb2dQU0IyWldOMGIzSkJaR1FvY205M2FTd2djbTkzYWl3Z0xURXBPMXh1SUNBZ0lDQWdJQ0FnSUdOdmIzSmthVzVoZEdWelcybGRJRDBnZG1WamRHOXlRV1JrS0hKdmQya3NJR1JwWm1aSlNpd2diWFZzZEdsd2JHbGxjaWs3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXZjbVJwYm1GMFpYTmJhbDBnUFNCMlpXTjBiM0pCWkdRb2NtOTNhaXdnWkdsbVprbEtMQ0F0YlhWc2RHbHdiR2xsY2lrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHeGhiV0prWVNBdFBTQW9LSFJvYVhNdWJHRnRZbVJoSUMwZ2RHaHBjeTVrYkdGdFltUmhLU0F2SUNoMGFHbHpMbU41WTJ4bGN5QXRJREV1TUNrcE95QTdYRzRnSUNBZ0lDQnBaaUFvYkdGdFltUmhJRHdnZEdocGN5NWtiR0Z0WW1SaEtWeHVJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHTnZiM0prYVc1aGRHVnpPMXh1SUNCOVhHNTlYRzRpWFgwPSIsImltcG9ydCAqIGFzIGZsIGZyb20gJ2Zhc3Rlc3QtbGV2ZW5zaHRlaW4nO1xuaW1wb3J0IHsgamFyb1dpbmtsZXIgfSBmcm9tICdqYXJvLXdpbmtsZXItdHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBhc3ltbWV0cmljRGlzdGFuY2UsIGJyYXVuQmxhbnF1ZXREaXN0YW5jZSwgY29zaW5lRGlzdGFuY2UsIGRpY2VEaXN0YW5jZSwgZXVjbGlkZWFuRGlzdGFuY2UsIGhhbW1pbmdEaXN0YW5jZSwga3VsY3p5bnNraURpc3RhbmNlLCBtY0Nvbm5hdWdoZXlEaXN0YW5jZSwgcm9nb3RHb2xkYmVyZ0Rpc3RhbmNlLCBydXNzZWxEaXN0YW5jZSwgc29rYWxEaXN0YW5jZSwgdGFuaW1vdG9EaXN0YW5jZSwgbnVtZXJpY0Rpc3RhbmNlLCB9IGZyb20gJy4uL2Rpc3RhbmNlLW1ldHJpY3MtbWV0aG9kcyc7XG5pbXBvcnQgeyBjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZSB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3ZlY3Rvci1vcGVyYXRpb25zJztcbmltcG9ydCB7IG1tRGlzdGFuY2VGdW5jdGlvbnMsIE1tRGlzdGFuY2VGdW5jdGlvbnNOYW1lcyB9IGZyb20gJy4uL21hY3JvbW9sZWN1bGUtZGlzdGFuY2UtZnVuY3Rpb25zJztcbmltcG9ydCB7IERpc3RhbmNlTWV0cmljc1N1YmplY3RzLCBCaXRBcnJheU1ldHJpY3NOYW1lcywgU3RyaW5nTWV0cmljc05hbWVzLCBWZWN0b3JNZXRyaWNzTmFtZXMsIE51bWJlck1ldHJpY3NOYW1lcyB9IGZyb20gJy4vY29uc3RzJztcbmV4cG9ydCBjb25zdCB2ZWN0b3JEaXN0YW5jZU1ldHJpY3NNZXRob2RzID0ge1xuICAgIFtWZWN0b3JNZXRyaWNzTmFtZXMuRXVjbGlkZWFuXTogY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2UsXG59O1xuZXhwb3J0IGNvbnN0IHN0cmluZ0Rpc3RhbmNlTWV0cmljc01ldGhvZHMgPSB7XG4gICAgW1N0cmluZ01ldHJpY3NOYW1lcy5MZXZlbnNodGVpbl06IGZsLmRpc3RhbmNlLFxuICAgIFtTdHJpbmdNZXRyaWNzTmFtZXMuSmFyb1dpbmtsZXJdOiBqYXJvV2lua2xlcixcbiAgICBbU3RyaW5nTWV0cmljc05hbWVzLk1hbmhhdHRhbl06IG1hbmhhdHRhbkRpc3RhbmNlLFxufTtcbmV4cG9ydCBjb25zdCBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHMgPSB7XG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlRhbmltb3RvXTogdGFuaW1vdG9EaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuRGljZV06IGRpY2VEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuQXN5bW1ldHJpY106IGFzeW1tZXRyaWNEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuQnJhdW5CbGFucXVldF06IGJyYXVuQmxhbnF1ZXREaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuQ29zaW5lXTogY29zaW5lRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkt1bGN6eW5za2ldOiBrdWxjenluc2tpRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLk1jQ29ubmF1Z2hleV06IG1jQ29ubmF1Z2hleURpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5Sb2dvdEdvbGRiZXJnXTogcm9nb3RHb2xkYmVyZ0Rpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5SdXNzZWxdOiBydXNzZWxEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuU29rYWxdOiBzb2thbERpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5IYW1taW5nXTogaGFtbWluZ0Rpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5FdWNsaWRlYW5dOiBldWNsaWRlYW5EaXN0YW5jZSxcbn07XG5leHBvcnQgY29uc3QgbnVtYmVyRGlzdGFuY2VNZXRyaWNzTWV0aG9kcyA9IHtcbiAgICBbTnVtYmVyTWV0cmljc05hbWVzLk51bWVyaWNEaXN0YW5jZV06IG51bWVyaWNEaXN0YW5jZSxcbn07XG5leHBvcnQgY29uc3QgQXZhaWxhYmxlTWV0cmljcyA9IHtcbiAgICBbRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMuVmVjdG9yXToge1xuICAgICAgICBbVmVjdG9yTWV0cmljc05hbWVzLkV1Y2xpZGVhbl06IHZlY3RvckRpc3RhbmNlTWV0cmljc01ldGhvZHNbVmVjdG9yTWV0cmljc05hbWVzLkV1Y2xpZGVhbl0sXG4gICAgfSxcbiAgICBbRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMuU3RyaW5nXToge1xuICAgICAgICBbU3RyaW5nTWV0cmljc05hbWVzLkxldmVuc2h0ZWluXTogc3RyaW5nRGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tTdHJpbmdNZXRyaWNzTmFtZXMuTGV2ZW5zaHRlaW5dLFxuICAgICAgICBbU3RyaW5nTWV0cmljc05hbWVzLkphcm9XaW5rbGVyXTogc3RyaW5nRGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tTdHJpbmdNZXRyaWNzTmFtZXMuSmFyb1dpbmtsZXJdLFxuICAgICAgICBbU3RyaW5nTWV0cmljc05hbWVzLk1hbmhhdHRhbl06IHN0cmluZ0Rpc3RhbmNlTWV0cmljc01ldGhvZHNbU3RyaW5nTWV0cmljc05hbWVzLk1hbmhhdHRhbl0sXG4gICAgfSxcbiAgICBbRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMuQml0QXJyYXldOiB7XG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5UYW5pbW90b106IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tCaXRBcnJheU1ldHJpY3NOYW1lcy5UYW5pbW90b10sXG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5EaWNlXTogYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzW0JpdEFycmF5TWV0cmljc05hbWVzLkRpY2VdLFxuICAgICAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuQXN5bW1ldHJpY106IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tCaXRBcnJheU1ldHJpY3NOYW1lcy5Bc3ltbWV0cmljXSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkJyYXVuQmxhbnF1ZXRdOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuQnJhdW5CbGFucXVldF0sXG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5Db3NpbmVdOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuQ29zaW5lXSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkt1bGN6eW5za2ldOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuS3VsY3p5bnNraV0sXG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5NY0Nvbm5hdWdoZXldOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuTWNDb25uYXVnaGV5XSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlJvZ290R29sZGJlcmddOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuUm9nb3RHb2xkYmVyZ10sXG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5SdXNzZWxdOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuUnVzc2VsXSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlNva2FsXTogYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzW0JpdEFycmF5TWV0cmljc05hbWVzLlNva2FsXSxcbiAgICB9LFxuICAgIFtEaXN0YW5jZU1ldHJpY3NTdWJqZWN0cy5NYWNyb01vbGVjdWxlXToge1xuICAgICAgICBbTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzLkhBTU1JTkddOiBtbURpc3RhbmNlRnVuY3Rpb25zW01tRGlzdGFuY2VGdW5jdGlvbnNOYW1lcy5IQU1NSU5HXSxcbiAgICAgICAgW01tRGlzdGFuY2VGdW5jdGlvbnNOYW1lcy5MRVZFTlNIVEVJTl06IG1tRGlzdGFuY2VGdW5jdGlvbnNbTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzLkxFVkVOU0hURUlOXSxcbiAgICAgICAgW01tRGlzdGFuY2VGdW5jdGlvbnNOYW1lcy5ORUVETEVNQU5OX1dVTlNDSF06IG1tRGlzdGFuY2VGdW5jdGlvbnNbTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzLk5FRURMRU1BTk5fV1VOU0NIXSxcbiAgICB9LFxuICAgIFtEaXN0YW5jZU1ldHJpY3NTdWJqZWN0cy5OdW1iZXJdOiB7XG4gICAgICAgIFtOdW1iZXJNZXRyaWNzTmFtZXMuTnVtZXJpY0Rpc3RhbmNlXTogbnVtYmVyRGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tOdW1iZXJNZXRyaWNzTmFtZXMuTnVtZXJpY0Rpc3RhbmNlXSxcbiAgICB9XG59O1xuZXhwb3J0IGNvbnN0IE1ldHJpY1RvRGF0YVR5cGUgPSBPYmplY3Qua2V5cyhBdmFpbGFibGVNZXRyaWNzKVxuICAgIC5yZWR1Y2UoKHJldCwga2V5KSA9PiB7XG4gICAgZm9yIChjb25zdCB2YWwgb2YgT2JqZWN0LmtleXMoQXZhaWxhYmxlTWV0cmljc1trZXldKSlcbiAgICAgICAgcmV0W3ZhbF0gPSBrZXk7XG4gICAgcmV0dXJuIHJldDtcbn0sIHt9KTtcbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZ01ldHJpYyhuYW1lKSB7XG4gICAgcmV0dXJuIE1ldHJpY1RvRGF0YVR5cGVbbmFtZV0gPT0gJ1N0cmluZyc7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNCaXRBcnJheU1ldHJpYyhuYW1lKSB7XG4gICAgcmV0dXJuIE1ldHJpY1RvRGF0YVR5cGVbbmFtZV0gPT0gJ0JpdEFycmF5Jztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1ZlY3Rvck1ldHJpYyhuYW1lKSB7XG4gICAgcmV0dXJuIE1ldHJpY1RvRGF0YVR5cGVbbmFtZV0gPT0gJ1ZlY3Rvcic7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNNYWNyb01vbGVjdWxlTWV0cmljKG5hbWUpIHtcbiAgICByZXR1cm4gTWV0cmljVG9EYXRhVHlwZVtuYW1lXSA9PSBEaXN0YW5jZU1ldHJpY3NTdWJqZWN0cy5NYWNyb01vbGVjdWxlLnRvU3RyaW5nKCk7XG59XG4vKiogTWFuaGF0dGFuIGRpc3RhbmNlIGJldHdlZW4gdHdvIHNlcXVlbmNlcyAobWF0Y2ggLSAwLCBtaXNtYXRjaCAtIDEpIG5vcm1hbGl6ZWQgZm9yIGxlbmd0aC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYW5oYXR0YW5EaXN0YW5jZShzMSwgczIpIHtcbiAgICBpZiAoczEubGVuZ3RoICE9PSBzMi5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBsZXQgZGlzdCA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgczEubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICBkaXN0ICs9IHMxW2ldID09IHMyW2ldID8gMCA6IDE7XG4gICAgICAgIHJldHVybiBkaXN0IC8gczEubGVuZ3RoO1xuICAgIH1cbn1cbi8qKiBVbmlmaWVkIGNsYXNzIGltcGxlbWVudGluZyBkaWZmZXJlbnQgc3RyaW5nIG1lYXN1cmVzLiAqL1xuZXhwb3J0IGNsYXNzIE1lYXN1cmUge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgTWVhc3VyZSB3aXRoIC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kIE1ldGhvZCB0byBjYWxjdWxhdGUgZGlzdGFuY2UgYmV0d2VlbiBzdHJpbmdzLlxuICAgICAqIEBtZW1iZXJvZiBNZWFzdXJlclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG1ldGhvZCkge1xuICAgICAgICB0aGlzLm1ldGhvZCA9IG1ldGhvZDtcbiAgICAgICAgdGhpcy5kYXRhVHlwZSA9IE1ldHJpY1RvRGF0YVR5cGVbbWV0aG9kXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBjdXN0b20gc3RyaW5nIGRpc3RhbmNlIGZ1bmN0aW9uIHNwZWNpZmllZC5cbiAgICAgKiBAcGFyYW0ge29wdHN9IG9wdHMgT3B0aW9ucyBmb3IgdGhlIG1lYXN1cmUuIHVzZWQgZm9yIG1hY3JvbW9sZWN1bGUgZGlzdGFuY2VzXG4gICAgICogQHJldHVybiB7RGlzdGFuY2VNZXRyaWN9IENhbGxiYWNrIG9mIHRoZSBtZWFzdXJlIGNob3Nlbi5cbiAgICAgKiBAbWVtYmVyb2YgTWVhc3VyZXJcbiAgICAgKi9cbiAgICBnZXRNZWFzdXJlKG9wdHMpIHtcbiAgICAgICAgY29uc3QgZGljdCA9IEF2YWlsYWJsZU1ldHJpY3M7XG4gICAgICAgIGlmICghZGljdC5oYXNPd25Qcm9wZXJ0eSh0aGlzLmRhdGFUeXBlKSB8fCAhZGljdFt0aGlzLmRhdGFUeXBlXS5oYXNPd25Qcm9wZXJ0eSh0aGlzLm1ldGhvZCkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gbWVhc3VyZSAke3RoaXMubWV0aG9kfSBmb3IgZGF0YSB0eXBlICR7dGhpcy5kYXRhVHlwZX1gKTtcbiAgICAgICAgcmV0dXJuIGlzTWFjcm9Nb2xlY3VsZU1ldHJpYyh0aGlzLm1ldGhvZCkgP1xuICAgICAgICAgICAgZGljdFt0aGlzLmRhdGFUeXBlXVt0aGlzLm1ldGhvZF0ob3B0cykgOlxuICAgICAgICAgICAgZGljdFt0aGlzLmRhdGFUeXBlXVt0aGlzLm1ldGhvZF07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgY3VzdG9tIHN0cmluZyBkaXN0YW5jZSBieSB0aGUgZ2l2ZW4gZGF0YSB0eXBlLlxuICAgICAqIEBwYXJhbSB7QXZhaWxhYmxlRGF0YVR5cGVzfSBkYXRhVHlwZSBNZXRyaWMncyBkYXRhIHR5cGVcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gTWV0cmljIG5hbWVzIHdoaWNoIGV4cGVjdHMgdGhlIGdpdmVuIGRhdGEgdHlwZVxuICAgICAqIEBtZW1iZXJvZiBNZWFzdXJlclxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRNZXRyaWNCeURhdGFUeXBlKGRhdGFUeXBlKSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhBdmFpbGFibGVNZXRyaWNzW2RhdGFUeXBlXSk7XG4gICAgfVxuICAgIC8qKiBSZXR1cm5zIG1ldHJpYyBuYW1lcyBhdmFpbGFibGUuXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgc3RhdGljIGdldCBhdmFpbGFibGVNZWFzdXJlcygpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3MpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRIbHdaV1F0YldWMGNtbGpjeTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkluUjVjR1ZrTFcxbGRISnBZM011ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRXNUMEZCVHl4TFFVRkxMRVZCUVVVc1RVRkJUU3h4UWtGQmNVSXNRMEZCUXp0QlFVTXhReXhQUVVGUExFVkJRVU1zVjBGQlZ5eEZRVUZETEUxQlFVMHNlVUpCUVhsQ0xFTkJRVU03UVVGRmNFUXNUMEZCVHl4RlFVTk1MR3RDUVVGclFpeEZRVU5zUWl4eFFrRkJjVUlzUlVGRGNrSXNZMEZCWXl4RlFVTmtMRmxCUVZrc1JVRkRXaXhwUWtGQmFVSXNSVUZEYWtJc1pVRkJaU3hGUVVObUxHdENRVUZyUWl4RlFVTnNRaXh2UWtGQmIwSXNSVUZEY0VJc2NVSkJRWEZDTEVWQlEzSkNMR05CUVdNc1JVRkRaQ3hoUVVGaExFVkJRMklzWjBKQlFXZENMRVZCUTJoQ0xHVkJRV1VzUjBGRGFFSXNUVUZCVFN3MlFrRkJOa0lzUTBGQlF6dEJRVVZ5UXl4UFFVRlBMRVZCUVVNc01FSkJRVEJDTEVWQlFVTXNUVUZCVFN4cFJFRkJhVVFzUTBGQlF6dEJRVWN6Uml4UFFVRlBMRVZCUVVNc2JVSkJRVzFDTEVWQlFVVXNkMEpCUVhkQ0xFVkJRVU1zVFVGQlRTeHhRMEZCY1VNc1EwRkJRenRCUVVOc1J5eFBRVUZQTEVWQlFVTXNkVUpCUVhWQ0xFVkJRVVVzYjBKQlFXOUNMRVZCUTI1RUxHdENRVUZyUWl4RlFVRkZMR3RDUVVGclFpeEZRVUZGTEd0Q1FVRnJRaXhGUVVGRExFMUJRVTBzVlVGQlZTeERRVUZETzBGQlJ6bEZMRTFCUVUwc1EwRkJReXhOUVVGTkxEUkNRVUUwUWl4SFFVRjVSRHRKUVVOb1J5eERRVUZETEd0Q1FVRnJRaXhEUVVGRExGTkJRVk1zUTBGQlF5eEZRVUZGTERCQ1FVRXdRanREUVVNelJDeERRVUZETzBGQlJVWXNUVUZCVFN4RFFVRkRMRTFCUVUwc05FSkJRVFJDTEVkQlFYbEVPMGxCUTJoSExFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1YwRkJWeXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEZGQlFWRTdTVUZETjBNc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4WFFVRlhMRU5CUVVNc1JVRkJSU3hYUVVGWE8wbEJRemRETEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zVTBGQlV5eERRVUZETEVWQlFVVXNhVUpCUVdsQ08wTkJRMnhFTEVOQlFVTTdRVUZGUml4TlFVRk5MRU5CUVVNc1RVRkJUU3c0UWtGQk9FSXNSMEZCTmtRN1NVRkRkRWNzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhSUVVGUkxFTkJRVU1zUlVGQlJTeG5Ra0ZCWjBJN1NVRkRha1FzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeFpRVUZaTzBsQlEzcERMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNWVUZCVlN4RFFVRkRMRVZCUVVVc2EwSkJRV3RDTzBsQlEzSkVMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNZVUZCWVN4RFFVRkRMRVZCUVVVc2NVSkJRWEZDTzBsQlF6TkVMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVc1kwRkJZenRKUVVNM1F5eERRVUZETEc5Q1FVRnZRaXhEUVVGRExGVkJRVlVzUTBGQlF5eEZRVUZGTEd0Q1FVRnJRanRKUVVOeVJDeERRVUZETEc5Q1FVRnZRaXhEUVVGRExGbEJRVmtzUTBGQlF5eEZRVUZGTEc5Q1FVRnZRanRKUVVONlJDeERRVUZETEc5Q1FVRnZRaXhEUVVGRExHRkJRV0VzUTBGQlF5eEZRVUZGTEhGQ1FVRnhRanRKUVVNelJDeERRVUZETEc5Q1FVRnZRaXhEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTEdOQlFXTTdTVUZETjBNc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSU3hoUVVGaE8wbEJRek5ETEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zVDBGQlR5eERRVUZETEVWQlFVVXNaVUZCWlR0SlFVTXZReXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRk5CUVZNc1EwRkJReXhGUVVGRkxHbENRVUZwUWp0RFFVTndSQ3hEUVVGRE8wRkJSVVlzVFVGQlRTeERRVUZETEUxQlFVMHNORUpCUVRSQ0xFZEJRWGxFTzBsQlEyaEhMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNaVUZCWlN4RFFVRkRMRVZCUVVVc1pVRkJaVHREUVVOMFJDeERRVUZETzBGQlJVWXNUVUZCVFN4RFFVRkRMRTFCUVUwc1owSkJRV2RDTEVkQlFVYzdTVUZET1VJc1EwRkJReXgxUWtGQmRVSXNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSVHRSUVVOb1F5eERRVUZETEd0Q1FVRnJRaXhEUVVGRExGTkJRVk1zUTBGQlF5eEZRVUZGTERSQ1FVRTBRaXhEUVVGRExHdENRVUZyUWl4RFFVRkRMRk5CUVZNc1EwRkJRenRMUVVNelJqdEpRVU5FTEVOQlFVTXNkVUpCUVhWQ0xFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVTdVVUZEYUVNc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4WFFVRlhMRU5CUVVNc1JVRkJSU3cwUWtGQk5FSXNRMEZCUXl4clFrRkJhMElzUTBGQlF5eFhRVUZYTEVOQlFVTTdVVUZET1VZc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4WFFVRlhMRU5CUVVNc1JVRkJSU3cwUWtGQk5FSXNRMEZCUXl4clFrRkJhMElzUTBGQlF5eFhRVUZYTEVOQlFVTTdVVUZET1VZc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4VFFVRlRMRU5CUVVNc1JVRkJSU3cwUWtGQk5FSXNRMEZCUXl4clFrRkJhMElzUTBGQlF5eFRRVUZUTEVOQlFVTTdTMEZETTBZN1NVRkRSQ3hEUVVGRExIVkNRVUYxUWl4RFFVRkRMRkZCUVZFc1EwRkJReXhGUVVGRk8xRkJRMnhETEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zVVVGQlVTeERRVUZETEVWQlFVVXNPRUpCUVRoQ0xFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1VVRkJVU3hEUVVGRE8xRkJRemxHTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNPRUpCUVRoQ0xFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1NVRkJTU3hEUVVGRE8xRkJRM1JHTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zVlVGQlZTeERRVUZETEVWQlFVVXNPRUpCUVRoQ0xFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1ZVRkJWU3hEUVVGRE8xRkJRMnhITEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zWVVGQllTeERRVUZETEVWQlFVVXNPRUpCUVRoQ0xFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1lVRkJZU3hEUVVGRE8xRkJRM2hITEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNPRUpCUVRoQ0xFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1RVRkJUU3hEUVVGRE8xRkJRekZHTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zVlVGQlZTeERRVUZETEVWQlFVVXNPRUpCUVRoQ0xFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1ZVRkJWU3hEUVVGRE8xRkJRMnhITEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zV1VGQldTeERRVUZETEVWQlFVVXNPRUpCUVRoQ0xFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1dVRkJXU3hEUVVGRE8xRkJRM1JITEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zWVVGQllTeERRVUZETEVWQlFVVXNPRUpCUVRoQ0xFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1lVRkJZU3hEUVVGRE8xRkJRM2hITEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNPRUpCUVRoQ0xFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1RVRkJUU3hEUVVGRE8xRkJRekZHTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zUzBGQlN5eERRVUZETEVWQlFVVXNPRUpCUVRoQ0xFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1MwRkJTeXhEUVVGRE8wdEJRM3BHTzBsQlEwUXNRMEZCUXl4MVFrRkJkVUlzUTBGQlF5eGhRVUZoTEVOQlFVTXNSVUZCUlR0UlFVTjJReXhEUVVGRExIZENRVUYzUWl4RFFVRkRMRTlCUVU4c1EwRkJReXhGUVVGRkxHMUNRVUZ0UWl4RFFVRkRMSGRDUVVGM1FpeERRVUZETEU5QlFVOHNRMEZCUXp0UlFVTjZSaXhEUVVGRExIZENRVUYzUWl4RFFVRkRMRmRCUVZjc1EwRkJReXhGUVVGRkxHMUNRVUZ0UWl4RFFVRkRMSGRDUVVGM1FpeERRVUZETEZkQlFWY3NRMEZCUXp0UlFVTnFSeXhEUVVGRExIZENRVUYzUWl4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVWQlFVVXNiVUpCUVcxQ0xFTkJRVU1zZDBKQlFYZENMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTTdTMEZET1VjN1NVRkRSQ3hEUVVGRExIVkNRVUYxUWl4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRk8xRkJRMmhETEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zWlVGQlpTeERRVUZETEVWQlFVVXNORUpCUVRSQ0xFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1pVRkJaU3hEUVVGRE8wdEJRM1pITzBOQlEwWXNRMEZCUXp0QlFVVkdMRTFCUVUwc1EwRkJReXhOUVVGTkxHZENRVUZuUWl4SFFVRnhRaXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRE8wdEJRelZGTEUxQlFVMHNRMEZCUXl4RFFVRkRMRWRCUVhGQ0xFVkJRVVVzUjBGQlJ5eEZRVUZGTEVWQlFVVTdTVUZEY2tNc1MwRkJTeXhOUVVGTkxFZEJRVWNzU1VGQlNTeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETEVkQlFYbENMRU5CUVVNc1EwRkJRenRSUVVONFJTeEhRVUZITEVOQlFVTXNSMEZCZVVJc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGQlF6dEpRVVYyUXl4UFFVRlBMRWRCUVVjc1EwRkJRenRCUVVOaUxFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFXVlVMRTFCUVUwc1ZVRkJWU3hqUVVGakxFTkJRVU1zU1VGQmEwSTdTVUZETDBNc1QwRkJUeXhuUWtGQlowSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hSUVVGUkxFTkJRVU03UVVGRE5VTXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3huUWtGQlowSXNRMEZCUXl4SlFVRnJRanRKUVVOcVJDeFBRVUZQTEdkQ1FVRm5RaXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEZWQlFWVXNRMEZCUXp0QlFVTTVReXhEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdOQlFXTXNRMEZCUXl4SlFVRnJRanRKUVVNdlF5eFBRVUZQTEdkQ1FVRm5RaXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEZGQlFWRXNRMEZCUXp0QlFVTTFReXhEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEhGQ1FVRnhRaXhEUVVGRExFbEJRV3RDTzBsQlEzUkVMRTlCUVU4c1owSkJRV2RDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc2RVSkJRWFZDTEVOQlFVTXNZVUZCWVN4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRE8wRkJRM0JHTEVOQlFVTTdRVUZGUkN4blIwRkJaMGM3UVVGRGFFY3NUVUZCVFN4VlFVRlZMR2xDUVVGcFFpeERRVUZETEVWQlFWVXNSVUZCUlN4RlFVRlZPMGxCUTNSRUxFbEJRVWtzUlVGQlJTeERRVUZETEUxQlFVMHNTMEZCU3l4RlFVRkZMRU5CUVVNc1RVRkJUU3hGUVVGRk8xRkJRek5DTEU5QlFVOHNRMEZCUXl4RFFVRkRPMHRCUTFZN1UwRkJUVHRSUVVOTUxFbEJRVWtzU1VGQlNTeEhRVUZYTEVOQlFVTXNRMEZCUXp0UlFVTnlRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVWQlFVVTdXVUZEYUVNc1NVRkJTU3hKUVVGSkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMnBETEU5QlFVOHNTVUZCU1N4SFFVRkhMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU03UzBGRGVrSTdRVUZEU0N4RFFVRkRPMEZCUlVRc05FUkJRVFJFTzBGQlF6VkVMRTFCUVUwc1QwRkJUeXhQUVVGUE8wbEJTV3hDT3pzN08wOUJTVWM3U1VGRFNDeFpRVUZaTEUxQlFXOUNPMUZCUXpsQ0xFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NUVUZCVFN4RFFVRkRPMUZCUTNKQ0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVkQlFVY3NaMEpCUVdkQ0xFTkJRVU1zVFVGQlRTeERRVUYxUWl4RFFVRkRPMGxCUTJwRkxFTkJRVU03U1VGRlJEczdPenM3VDBGTFJ6dEpRVU5KTEZWQlFWVXNRMEZCUXl4SlFVRlZPMUZCUXpGQ0xFMUJRVTBzU1VGQlNTeEhRVVZPTEdkQ1FVRm5RaXhEUVVGRE8xRkJRM0pDTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNZMEZCWXl4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03V1VGRGVrWXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXh0UWtGQmJVSXNTVUZCU1N4RFFVRkRMRTFCUVUwc2EwSkJRV3RDTEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJRMjVHTEU5QlFVOHNjVUpCUVhGQ0xFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRlRU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZ4UXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRE4wVXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRnRRaXhEUVVGRE8wbEJRM1pFTEVOQlFVTTdTVUZGUkRzN096czdUMEZMUnp0SlFVTkpMRTFCUVUwc1EwRkJReXh0UWtGQmJVSXNRMEZCUXl4UlFVRTBRanRSUVVNMVJDeFBRVUZQTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOcVJDeERRVUZETzBsQlJVUTdPMDlCUlVjN1NVRkRTQ3hOUVVGTkxFdEJRVXNzYVVKQlFXbENPMUZCUXpGQ0xFOUJRVThzVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETzBsQlEzWkRMRU5CUVVNN1EwRkRSaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0FxSUdGeklHWnNJR1p5YjIwZ0oyWmhjM1JsYzNRdGJHVjJaVzV6YUhSbGFXNG5PMXh1YVcxd2IzSjBJSHRxWVhKdlYybHVhMnhsY24wZ1puSnZiU0FuYW1GeWJ5MTNhVzVyYkdWeUxYUjVjR1Z6WTNKcGNIUW5PMXh1YVcxd2IzSjBJSHRFYVhOMFlXNWpaVTFsZEhKcFkzMGdabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZkSGx3WlMxa1pXTnNZWEpoZEdsdmJuTW5PMXh1YVcxd2IzSjBJSHRjYmlBZ1lYTjViVzFsZEhKcFkwUnBjM1JoYm1ObExGeHVJQ0JpY21GMWJrSnNZVzV4ZFdWMFJHbHpkR0Z1WTJVc1hHNGdJR052YzJsdVpVUnBjM1JoYm1ObExGeHVJQ0JrYVdObFJHbHpkR0Z1WTJVc1hHNGdJR1YxWTJ4cFpHVmhia1JwYzNSaGJtTmxMRnh1SUNCb1lXMXRhVzVuUkdsemRHRnVZMlVzWEc0Z0lHdDFiR042ZVc1emEybEVhWE4wWVc1alpTeGNiaUFnYldORGIyNXVZWFZuYUdWNVJHbHpkR0Z1WTJVc1hHNGdJSEp2WjI5MFIyOXNaR0psY21kRWFYTjBZVzVqWlN4Y2JpQWdjblZ6YzJWc1JHbHpkR0Z1WTJVc1hHNGdJSE52YTJGc1JHbHpkR0Z1WTJVc1hHNGdJSFJoYm1sdGIzUnZSR2x6ZEdGdVkyVXNYRzRnSUc1MWJXVnlhV05FYVhOMFlXNWpaU3hjYm4wZ1puSnZiU0FuTGk0dlpHbHpkR0Z1WTJVdGJXVjBjbWxqY3kxdFpYUm9iMlJ6Snp0Y2JseHVhVzF3YjNKMElIdGpZV3hqZFd4aGRHVkZkV05zYVdSbFlXNUVhWE4wWVc1alpYMGdabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZkbVZqZEc5eUxXOXdaWEpoZEdsdmJuTW5PMXh1YVcxd2IzSjBJRUpwZEVGeWNtRjVJR1p5YjIwZ0owQmtZWFJoWjNKdmF5MXNhV0p5WVhKcFpYTXZkWFJwYkhNdmMzSmpMMkpwZEMxaGNuSmhlU2M3WEc1cGJYQnZjblFnZTFabFkzUnZjaXdnVTNSeWFXNW5SR2xqZEdsdmJtRnllWDBnWm5KdmJTQW5RR1JoZEdGbmNtOXJMV3hwWW5KaGNtbGxjeTkxZEdsc2N5OXpjbU12ZEhsd1pTMWtaV05zWVhKaGRHbHZibk1uTzF4dWFXMXdiM0owSUh0dGJVUnBjM1JoYm1ObFJuVnVZM1JwYjI1ekxDQk5iVVJwYzNSaGJtTmxSblZ1WTNScGIyNXpUbUZ0WlhOOUlHWnliMjBnSnk0dUwyMWhZM0p2Ylc5c1pXTjFiR1V0WkdsemRHRnVZMlV0Wm5WdVkzUnBiMjV6Snp0Y2JtbHRjRzl5ZENCN1JHbHpkR0Z1WTJWTlpYUnlhV056VTNWaWFtVmpkSE1zSUVKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxGeHVJQ0JUZEhKcGJtZE5aWFJ5YVdOelRtRnRaWE1zSUZabFkzUnZjazFsZEhKcFkzTk9ZVzFsY3l3Z1RuVnRZbVZ5VFdWMGNtbGpjMDVoYldWemZTQm1jbTl0SUNjdUwyTnZibk4wY3ljN1hHNWNibHh1Wlhod2IzSjBJR052Ym5OMElIWmxZM1J2Y2tScGMzUmhibU5sVFdWMGNtbGpjMDFsZEdodlpITTZJSHNnVzI1aGJXVTZJSE4wY21sdVoxMDZJQ2g0T2lCV1pXTjBiM0lzSUhrNklGWmxZM1J2Y2lrZ1BUNGdiblZ0WW1WeUlIMGdQU0I3WEc0Z0lGdFdaV04wYjNKTlpYUnlhV056VG1GdFpYTXVSWFZqYkdsa1pXRnVYVG9nWTJGc1kzVnNZWFJsUlhWamJHbGtaV0Z1UkdsemRHRnVZMlVzWEc1OU8xeHVYRzVsZUhCdmNuUWdZMjl1YzNRZ2MzUnlhVzVuUkdsemRHRnVZMlZOWlhSeWFXTnpUV1YwYUc5a2N6b2dleUJiYm1GdFpUb2djM1J5YVc1blhUb2dLSGc2SUhOMGNtbHVaeXdnZVRvZ2MzUnlhVzVuS1NBOVBpQnVkVzFpWlhJZ2ZTQTlJSHRjYmlBZ1cxTjBjbWx1WjAxbGRISnBZM05PWVcxbGN5NU1aWFpsYm5Ob2RHVnBibDA2SUdac0xtUnBjM1JoYm1ObExGeHVJQ0JiVTNSeWFXNW5UV1YwY21samMwNWhiV1Z6TGtwaGNtOVhhVzVyYkdWeVhUb2dhbUZ5YjFkcGJtdHNaWElzWEc0Z0lGdFRkSEpwYm1kTlpYUnlhV056VG1GdFpYTXVUV0Z1YUdGMGRHRnVYVG9nYldGdWFHRjBkR0Z1UkdsemRHRnVZMlVzWEc1OU8xeHVYRzVsZUhCdmNuUWdZMjl1YzNRZ1ltbDBRWEp5WVhsRWFYTjBZVzVqWlUxbGRISnBZM05OWlhSb2IyUnpPaUI3SUZ0dVlXMWxPaUJ6ZEhKcGJtZGRPaUFvZURvZ1FtbDBRWEp5WVhrc0lIazZJRUpwZEVGeWNtRjVLU0E5UGlCdWRXMWlaWElnZlNBOUlIdGNiaUFnVzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxsUmhibWx0YjNSdlhUb2dkR0Z1YVcxdmRHOUVhWE4wWVc1alpTeGNiaUFnVzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxrUnBZMlZkT2lCa2FXTmxSR2x6ZEdGdVkyVXNYRzRnSUZ0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NUJjM2x0YldWMGNtbGpYVG9nWVhONWJXMWxkSEpwWTBScGMzUmhibU5sTEZ4dUlDQmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11UW5KaGRXNUNiR0Z1Y1hWbGRGMDZJR0p5WVhWdVFteGhibkYxWlhSRWFYTjBZVzVqWlN4Y2JpQWdXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGtOdmMybHVaVjA2SUdOdmMybHVaVVJwYzNSaGJtTmxMRnh1SUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVTM1ZzWTNwNWJuTnJhVjA2SUd0MWJHTjZlVzV6YTJsRWFYTjBZVzVqWlN4Y2JpQWdXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGsxalEyOXVibUYxWjJobGVWMDZJRzFqUTI5dWJtRjFaMmhsZVVScGMzUmhibU5sTEZ4dUlDQmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11VW05bmIzUkhiMnhrWW1WeVoxMDZJSEp2WjI5MFIyOXNaR0psY21kRWFYTjBZVzVqWlN4Y2JpQWdXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGxKMWMzTmxiRjA2SUhKMWMzTmxiRVJwYzNSaGJtTmxMRnh1SUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVVMjlyWVd4ZE9pQnpiMnRoYkVScGMzUmhibU5sTEZ4dUlDQmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11U0dGdGJXbHVaMTA2SUdoaGJXMXBibWRFYVhOMFlXNWpaU3hjYmlBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMa1YxWTJ4cFpHVmhibDA2SUdWMVkyeHBaR1ZoYmtScGMzUmhibU5sTEZ4dWZUdGNibHh1Wlhod2IzSjBJR052Ym5OMElHNTFiV0psY2tScGMzUmhibU5sVFdWMGNtbGpjMDFsZEdodlpITTZJSHNnVzI1aGJXVTZJSE4wY21sdVoxMDZJQ2g0T2lCdWRXMWlaWElzSUhrNklHNTFiV0psY2lrZ1BUNGdiblZ0WW1WeUlIMGdQU0I3WEc0Z0lGdE9kVzFpWlhKTlpYUnlhV056VG1GdFpYTXVUblZ0WlhKcFkwUnBjM1JoYm1ObFhUb2diblZ0WlhKcFkwUnBjM1JoYm1ObExGeHVmVHRjYmx4dVpYaHdiM0owSUdOdmJuTjBJRUYyWVdsc1lXSnNaVTFsZEhKcFkzTWdQU0I3WEc0Z0lGdEVhWE4wWVc1alpVMWxkSEpwWTNOVGRXSnFaV04wY3k1V1pXTjBiM0pkT2lCN1hHNGdJQ0FnVzFabFkzUnZjazFsZEhKcFkzTk9ZVzFsY3k1RmRXTnNhV1JsWVc1ZE9pQjJaV04wYjNKRWFYTjBZVzVqWlUxbGRISnBZM05OWlhSb2IyUnpXMVpsWTNSdmNrMWxkSEpwWTNOT1lXMWxjeTVGZFdOc2FXUmxZVzVkTEZ4dUlDQjlMRnh1SUNCYlJHbHpkR0Z1WTJWTlpYUnlhV056VTNWaWFtVmpkSE11VTNSeWFXNW5YVG9nZTF4dUlDQWdJRnRUZEhKcGJtZE5aWFJ5YVdOelRtRnRaWE11VEdWMlpXNXphSFJsYVc1ZE9pQnpkSEpwYm1kRWFYTjBZVzVqWlUxbGRISnBZM05OWlhSb2IyUnpXMU4wY21sdVowMWxkSEpwWTNOT1lXMWxjeTVNWlhabGJuTm9kR1ZwYmwwc1hHNGdJQ0FnVzFOMGNtbHVaMDFsZEhKcFkzTk9ZVzFsY3k1S1lYSnZWMmx1YTJ4bGNsMDZJSE4wY21sdVowUnBjM1JoYm1ObFRXVjBjbWxqYzAxbGRHaHZaSE5iVTNSeWFXNW5UV1YwY21samMwNWhiV1Z6TGtwaGNtOVhhVzVyYkdWeVhTeGNiaUFnSUNCYlUzUnlhVzVuVFdWMGNtbGpjMDVoYldWekxrMWhibWhoZEhSaGJsMDZJSE4wY21sdVowUnBjM1JoYm1ObFRXVjBjbWxqYzAxbGRHaHZaSE5iVTNSeWFXNW5UV1YwY21samMwNWhiV1Z6TGsxaGJtaGhkSFJoYmwwc1hHNGdJSDBzWEc0Z0lGdEVhWE4wWVc1alpVMWxkSEpwWTNOVGRXSnFaV04wY3k1Q2FYUkJjbkpoZVYwNklIdGNiaUFnSUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVWR0Z1YVcxdmRHOWRPaUJpYVhSQmNuSmhlVVJwYzNSaGJtTmxUV1YwY21samMwMWxkR2h2WkhOYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVWR0Z1YVcxdmRHOWRMRnh1SUNBZ0lGdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVFYVdObFhUb2dZbWwwUVhKeVlYbEVhWE4wWVc1alpVMWxkSEpwWTNOTlpYUm9iMlJ6VzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxrUnBZMlZkTEZ4dUlDQWdJRnRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1QmMzbHRiV1YwY21salhUb2dZbWwwUVhKeVlYbEVhWE4wWVc1alpVMWxkSEpwWTNOTlpYUm9iMlJ6VzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxrRnplVzF0WlhSeWFXTmRMRnh1SUNBZ0lGdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVDY21GMWJrSnNZVzV4ZFdWMFhUb2dZbWwwUVhKeVlYbEVhWE4wWVc1alpVMWxkSEpwWTNOTlpYUm9iMlJ6VzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxrSnlZWFZ1UW14aGJuRjFaWFJkTEZ4dUlDQWdJRnRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1RGIzTnBibVZkT2lCaWFYUkJjbkpoZVVScGMzUmhibU5sVFdWMGNtbGpjMDFsZEdodlpITmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11UTI5emFXNWxYU3hjYmlBZ0lDQmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11UzNWc1kzcDVibk5yYVYwNklHSnBkRUZ5Y21GNVJHbHpkR0Z1WTJWTlpYUnlhV056VFdWMGFHOWtjMXRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1TGRXeGplbmx1YzJ0cFhTeGNiaUFnSUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVUV05EYjI1dVlYVm5hR1Y1WFRvZ1ltbDBRWEp5WVhsRWFYTjBZVzVqWlUxbGRISnBZM05OWlhSb2IyUnpXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGsxalEyOXVibUYxWjJobGVWMHNYRzRnSUNBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMbEp2WjI5MFIyOXNaR0psY21kZE9pQmlhWFJCY25KaGVVUnBjM1JoYm1ObFRXVjBjbWxqYzAxbGRHaHZaSE5iUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVVtOW5iM1JIYjJ4a1ltVnlaMTBzWEc0Z0lDQWdXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGxKMWMzTmxiRjA2SUdKcGRFRnljbUY1UkdsemRHRnVZMlZOWlhSeWFXTnpUV1YwYUc5a2MxdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVTZFhOelpXeGRMRnh1SUNBZ0lGdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVUYjJ0aGJGMDZJR0pwZEVGeWNtRjVSR2x6ZEdGdVkyVk5aWFJ5YVdOelRXVjBhRzlrYzF0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NVRiMnRoYkYwc1hHNGdJSDBzWEc0Z0lGdEVhWE4wWVc1alpVMWxkSEpwWTNOVGRXSnFaV04wY3k1TllXTnliMDF2YkdWamRXeGxYVG9nZXlBdkx5QnZjSFJwYjI1aGJDQmhjbWR6SUc1bFpXUmxaQ0JtYjNJZ2JXRmpjbTl0YjJ4bFkzVnNaU0JtZFc1amRHbHZibk1nZDJocFkyZ2dhVzVwZEdsaGJHbDZaU0IwYUdWdFhHNGdJQ0FnVzAxdFJHbHpkR0Z1WTJWR2RXNWpkR2x2Ym5OT1lXMWxjeTVJUVUxTlNVNUhYVG9nYlcxRWFYTjBZVzVqWlVaMWJtTjBhVzl1YzF0TmJVUnBjM1JoYm1ObFJuVnVZM1JwYjI1elRtRnRaWE11U0VGTlRVbE9SMTBzWEc0Z0lDQWdXMDF0UkdsemRHRnVZMlZHZFc1amRHbHZibk5PWVcxbGN5NU1SVlpGVGxOSVZFVkpUbDA2SUcxdFJHbHpkR0Z1WTJWR2RXNWpkR2x2Ym5OYlRXMUVhWE4wWVc1alpVWjFibU4wYVc5dWMwNWhiV1Z6TGt4RlZrVk9VMGhVUlVsT1hTeGNiaUFnSUNCYlRXMUVhWE4wWVc1alpVWjFibU4wYVc5dWMwNWhiV1Z6TGs1RlJVUk1SVTFCVGs1ZlYxVk9VME5JWFRvZ2JXMUVhWE4wWVc1alpVWjFibU4wYVc5dWMxdE5iVVJwYzNSaGJtTmxSblZ1WTNScGIyNXpUbUZ0WlhNdVRrVkZSRXhGVFVGT1RsOVhWVTVUUTBoZExGeHVJQ0I5TEZ4dUlDQmJSR2x6ZEdGdVkyVk5aWFJ5YVdOelUzVmlhbVZqZEhNdVRuVnRZbVZ5WFRvZ2UxeHVJQ0FnSUZ0T2RXMWlaWEpOWlhSeWFXTnpUbUZ0WlhNdVRuVnRaWEpwWTBScGMzUmhibU5sWFRvZ2JuVnRZbVZ5UkdsemRHRnVZMlZOWlhSeWFXTnpUV1YwYUc5a2MxdE9kVzFpWlhKTlpYUnlhV056VG1GdFpYTXVUblZ0WlhKcFkwUnBjM1JoYm1ObFhTeGNiaUFnZlZ4dWZUdGNibHh1Wlhod2IzSjBJR052Ym5OMElFMWxkSEpwWTFSdlJHRjBZVlI1Y0dVNklGTjBjbWx1WjBScFkzUnBiMjVoY25rZ1BTQlBZbXBsWTNRdWEyVjVjeWhCZG1GcGJHRmliR1ZOWlhSeWFXTnpLVnh1SUNBdWNtVmtkV05sS0NoeVpYUTZJRk4wY21sdVowUnBZM1JwYjI1aGNua3NJR3RsZVNrZ1BUNGdlMXh1SUNBZ0lHWnZjaUFvWTI5dWMzUWdkbUZzSUc5bUlFOWlhbVZqZEM1clpYbHpLRUYyWVdsc1lXSnNaVTFsZEhKcFkzTmJhMlY1SUdGeklFRjJZV2xzWVdKc1pVUmhkR0ZVZVhCbGMxMHBLVnh1SUNBZ0lDQWdjbVYwVzNaaGJDQmhjeUJCZG1GcGJHRmliR1ZFWVhSaFZIbHdaWE5kSUQwZ2EyVjVPMXh1WEc0Z0lDQWdjbVYwZFhKdUlISmxkRHRjYmlBZ2ZTd2dlMzBwTzF4dVhHNWxlSEJ2Y25RZ2RIbHdaU0JCZG1GcGJHRmliR1ZFWVhSaFZIbHdaWE1nUFNCclpYbHZaaUIwZVhCbGIyWWdRWFpoYVd4aFlteGxUV1YwY21samN6dGNibVY0Y0c5eWRDQjBlWEJsSUZabFkzUnZjazFsZEhKcFkzTWdQU0JyWlhsdlppQjBlWEJsYjJZZ1FYWmhhV3hoWW14bFRXVjBjbWxqYzF0RWFYTjBZVzVqWlUxbGRISnBZM05UZFdKcVpXTjBjeTVXWldOMGIzSmRPMXh1Wlhod2IzSjBJSFI1Y0dVZ1UzUnlhVzVuVFdWMGNtbGpjeUE5SUd0bGVXOW1JSFI1Y0dWdlppQkJkbUZwYkdGaWJHVk5aWFJ5YVdOelcwUnBjM1JoYm1ObFRXVjBjbWxqYzFOMVltcGxZM1J6TGxOMGNtbHVaMTA3WEc1bGVIQnZjblFnZEhsd1pTQkNhWFJCY25KaGVVMWxkSEpwWTNNZ1BTQnJaWGx2WmlCMGVYQmxiMllnUVhaaGFXeGhZbXhsVFdWMGNtbGpjMXRFYVhOMFlXNWpaVTFsZEhKcFkzTlRkV0pxWldOMGN5NUNhWFJCY25KaGVWMDdYRzVsZUhCdmNuUWdkSGx3WlNCTGJtOTNiazFsZEhKcFkzTWdQU0JUZEhKcGJtZE5aWFJ5YVdOeklId2dRbWwwUVhKeVlYbE5aWFJ5YVdOeklId2dWbVZqZEc5eVRXVjBjbWxqY3lCOFhHNGdJRTF0UkdsemRHRnVZMlZHZFc1amRHbHZibk5PWVcxbGN5QjhJRTUxYldKbGNrMWxkSEpwWTNOT1lXMWxjenRjYmx4dVpYaHdiM0owSUhSNWNHVWdWbUZzYVdSVWVYQmxjeUE5WEc0Z0lIc2daR0YwWVRvZ2MzUnlhVzVuVzEwc0lHMWxkSEpwWXpvZ1UzUnlhVzVuVFdWMGNtbGpjeUI4SUUxdFJHbHpkR0Z1WTJWR2RXNWpkR2x2Ym5OT1lXMWxjeUI5SUh4Y2JpQWdleUJrWVhSaE9pQldaV04wYjNKYlhTd2diV1YwY21sak9pQldaV04wYjNKTlpYUnlhV056SUgwZ2ZGeHVJQ0I3SUdSaGRHRTZJRUpwZEVGeWNtRjVXMTBzSUcxbGRISnBZem9nUW1sMFFYSnlZWGxOWlhSeWFXTnpJSDBnZkZ4dUlDQjdJR1JoZEdFNklHNTFiV0psY2x0ZExDQnRaWFJ5YVdNNklFNTFiV0psY2sxbGRISnBZM05PWVcxbGN5QjlPMXh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYVhOVGRISnBibWROWlhSeWFXTW9ibUZ0WlRvZ1MyNXZkMjVOWlhSeWFXTnpLU0I3WEc0Z0lISmxkSFZ5YmlCTlpYUnlhV05VYjBSaGRHRlVlWEJsVzI1aGJXVmRJRDA5SUNkVGRISnBibWNuTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdhWE5DYVhSQmNuSmhlVTFsZEhKcFl5aHVZVzFsT2lCTGJtOTNiazFsZEhKcFkzTXBJSHRjYmlBZ2NtVjBkWEp1SUUxbGRISnBZMVJ2UkdGMFlWUjVjR1ZiYm1GdFpWMGdQVDBnSjBKcGRFRnljbUY1Snp0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR2x6Vm1WamRHOXlUV1YwY21saktHNWhiV1U2SUV0dWIzZHVUV1YwY21samN5a2dlMXh1SUNCeVpYUjFjbTRnVFdWMGNtbGpWRzlFWVhSaFZIbHdaVnR1WVcxbFhTQTlQU0FuVm1WamRHOXlKenRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHbHpUV0ZqY205TmIyeGxZM1ZzWlUxbGRISnBZeWh1WVcxbE9pQkxibTkzYmsxbGRISnBZM01wSUh0Y2JpQWdjbVYwZFhKdUlFMWxkSEpwWTFSdlJHRjBZVlI1Y0dWYmJtRnRaVjBnUFQwZ1JHbHpkR0Z1WTJWTlpYUnlhV056VTNWaWFtVmpkSE11VFdGamNtOU5iMnhsWTNWc1pTNTBiMU4wY21sdVp5Z3BPMXh1ZlZ4dVhHNHZLaW9nVFdGdWFHRjBkR0Z1SUdScGMzUmhibU5sSUdKbGRIZGxaVzRnZEhkdklITmxjWFZsYm1ObGN5QW9iV0YwWTJnZ0xTQXdMQ0J0YVhOdFlYUmphQ0F0SURFcElHNXZjbTFoYkdsNlpXUWdabTl5SUd4bGJtZDBhQzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCdFlXNW9ZWFIwWVc1RWFYTjBZVzVqWlNoek1Ub2djM1J5YVc1bkxDQnpNam9nYzNSeWFXNW5LVG9nYm5WdFltVnlJSHRjYmlBZ2FXWWdLSE14TG14bGJtZDBhQ0FoUFQwZ2N6SXViR1Z1WjNSb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SURFN1hHNGdJSDBnWld4elpTQjdYRzRnSUNBZ2JHVjBJR1JwYzNRNklHNTFiV0psY2lBOUlEQTdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREU3SUdrZ1BDQnpNUzVzWlc1bmRHZzdJR2tyS3lsY2JpQWdJQ0FnSUdScGMzUWdLejBnY3pGYmFWMGdQVDBnY3pKYmFWMGdQeUF3SURvZ01UdGNiaUFnSUNCeVpYUjFjbTRnWkdsemRDQXZJSE14TG14bGJtZDBhRHRjYmlBZ2ZWeHVmVnh1WEc0dktpb2dWVzVwWm1sbFpDQmpiR0Z6Y3lCcGJYQnNaVzFsYm5ScGJtY2daR2xtWm1WeVpXNTBJSE4wY21sdVp5QnRaV0Z6ZFhKbGN5NGdLaTljYm1WNGNHOXlkQ0JqYkdGemN5Qk5aV0Z6ZFhKbElIdGNiaUFnY0hKdmRHVmpkR1ZrSUcxbGRHaHZaRG9nUzI1dmQyNU5aWFJ5YVdOek8xeHVJQ0J3Y205MFpXTjBaV1FnWkdGMFlWUjVjR1U2SUVGMllXbHNZV0pzWlVSaGRHRlVlWEJsY3p0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUTNKbFlYUmxjeUJoYmlCcGJuTjBZVzVqWlNCdlppQk5aV0Z6ZFhKbElIZHBkR2dnTGx4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdiV1YwYUc5a0lFMWxkR2h2WkNCMGJ5QmpZV3hqZFd4aGRHVWdaR2x6ZEdGdVkyVWdZbVYwZDJWbGJpQnpkSEpwYm1kekxseHVJQ0FnS2lCQWJXVnRZbVZ5YjJZZ1RXVmhjM1Z5WlhKY2JpQWdJQ292WEc0Z0lHTnZibk4wY25WamRHOXlLRzFsZEdodlpEb2dTMjV2ZDI1TlpYUnlhV056S1NCN1hHNGdJQ0FnZEdocGN5NXRaWFJvYjJRZ1BTQnRaWFJvYjJRN1hHNGdJQ0FnZEdocGN5NWtZWFJoVkhsd1pTQTlJRTFsZEhKcFkxUnZSR0YwWVZSNWNHVmJiV1YwYUc5a1hTQmhjeUJCZG1GcGJHRmliR1ZFWVhSaFZIbHdaWE03WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1VtVjBkWEp1Y3lCamRYTjBiMjBnYzNSeWFXNW5JR1JwYzNSaGJtTmxJR1oxYm1OMGFXOXVJSE53WldOcFptbGxaQzVjYmlBZ0lDb2dRSEJoY21GdElIdHZjSFJ6ZlNCdmNIUnpJRTl3ZEdsdmJuTWdabTl5SUhSb1pTQnRaV0Z6ZFhKbExpQjFjMlZrSUdadmNpQnRZV055YjIxdmJHVmpkV3hsSUdScGMzUmhibU5sYzF4dUlDQWdLaUJBY21WMGRYSnVJSHRFYVhOMFlXNWpaVTFsZEhKcFkzMGdRMkZzYkdKaFkyc2diMllnZEdobElHMWxZWE4xY21VZ1kyaHZjMlZ1TGx4dUlDQWdLaUJBYldWdFltVnliMllnVFdWaGMzVnlaWEpjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJuWlhSTlpXRnpkWEpsS0c5d2RITS9PaUJoYm5rcE9pQkVhWE4wWVc1alpVMWxkSEpwWXlCN1hHNGdJQ0FnWTI5dWMzUWdaR2xqZERvZ2V5QmJhMlY1T2lCemRISnBibWRkT2x4dUlDQWdJQ0FnZTF0clpYa3lPaUJ6ZEhKcGJtZGRPaUJFYVhOMFlXNWpaVTFsZEhKcFl5QjhJQ2dvYjNCMGN6b2dZVzU1S1NBOVBpQkVhWE4wWVc1alpVMWxkSEpwWXlsOVhHNGdJQ0FnZlNBOUlFRjJZV2xzWVdKc1pVMWxkSEpwWTNNN1hHNGdJQ0FnYVdZZ0tDRmthV04wTG1oaGMwOTNibEJ5YjNCbGNuUjVLSFJvYVhNdVpHRjBZVlI1Y0dVcElIeDhJQ0ZrYVdOMFczUm9hWE11WkdGMFlWUjVjR1ZkTG1oaGMwOTNibEJ5YjNCbGNuUjVLSFJvYVhNdWJXVjBhRzlrS1NsY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWhnVlc1cmJtOTNiaUJ0WldGemRYSmxJQ1I3ZEdocGN5NXRaWFJvYjJSOUlHWnZjaUJrWVhSaElIUjVjR1VnSkh0MGFHbHpMbVJoZEdGVWVYQmxmV0FwTzF4dUlDQWdJSEpsZEhWeWJpQnBjMDFoWTNKdlRXOXNaV04xYkdWTlpYUnlhV01vZEdocGN5NXRaWFJvYjJRcElEOWNiaUFnSUNBZ0lDaGthV04wVzNSb2FYTXVaR0YwWVZSNWNHVmRXM1JvYVhNdWJXVjBhRzlrWFNCaGN5QW9LRzl3ZEhNNklHRnVlU2tnUFQ0Z1JHbHpkR0Z1WTJWTlpYUnlhV01wS1NodmNIUnpLU0E2WEc0Z0lDQWdJQ0JrYVdOMFczUm9hWE11WkdGMFlWUjVjR1ZkVzNSb2FYTXViV1YwYUc5a1hTQmhjeUJFYVhOMFlXNWpaVTFsZEhKcFl6dGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhSMWNtNXpJR04xYzNSdmJTQnpkSEpwYm1jZ1pHbHpkR0Z1WTJVZ1lua2dkR2hsSUdkcGRtVnVJR1JoZEdFZ2RIbHdaUzVjYmlBZ0lDb2dRSEJoY21GdElIdEJkbUZwYkdGaWJHVkVZWFJoVkhsd1pYTjlJR1JoZEdGVWVYQmxJRTFsZEhKcFl5ZHpJR1JoZEdFZ2RIbHdaVnh1SUNBZ0tpQkFjbVYwZFhKdUlIdHpkSEpwYm1kYlhYMGdUV1YwY21saklHNWhiV1Z6SUhkb2FXTm9JR1Y0Y0dWamRITWdkR2hsSUdkcGRtVnVJR1JoZEdFZ2RIbHdaVnh1SUNBZ0tpQkFiV1Z0WW1WeWIyWWdUV1ZoYzNWeVpYSmNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ1oyVjBUV1YwY21salFubEVZWFJoVkhsd1pTaGtZWFJoVkhsd1pUb2dRWFpoYVd4aFlteGxSR0YwWVZSNWNHVnpLVG9nYzNSeWFXNW5XMTBnZTF4dUlDQWdJSEpsZEhWeWJpQlBZbXBsWTNRdWEyVjVjeWhCZG1GcGJHRmliR1ZOWlhSeWFXTnpXMlJoZEdGVWVYQmxYU2s3WEc0Z0lIMWNibHh1SUNBdktpb2dVbVYwZFhKdWN5QnRaWFJ5YVdNZ2JtRnRaWE1nWVhaaGFXeGhZbXhsTGx4dUlDQWdLaUJBYldWdFltVnliMllnVFdWaGMzVnlaWEpjYmlBZ0lDb3ZYRzRnSUhOMFlYUnBZeUJuWlhRZ1lYWmhhV3hoWW14bFRXVmhjM1Z5WlhNb0tUb2djM1J5YVc1blcxMGdlMXh1SUNBZ0lISmxkSFZ5YmlCUFltcGxZM1F1YTJWNWN5aEJkbUZwYkdGaWJHVk5aWFJ5YVdOektUdGNiaUFnZlZ4dWZWeHVJbDE5IiwiZXhwb3J0IGRlZmF1bHQgY2xhc3MgQml0QXJyYXkge1xuICAgIGNvbnN0cnVjdG9yKGFyZywgZGVmYXVsdFZhbHVlID0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5fbGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5fdmVyc2lvbiA9IDA7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUxldmVsID0gMDtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRDb3VudCA9IDA7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkQ291bnRWZXJzaW9uID0gLTE7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkSW5kZXhlc1ZlcnNpb24gPSAtMTtcbiAgICAgICAgdGhpcy5fdmVyc2lvbmVkTmFtZSA9ICcnO1xuICAgICAgICB0aGlzLl92ZXJzaW9uZWROYW1lVmVyc2lvbiA9IC0xO1xuICAgICAgICB0aGlzLlNIUklOS19USFJFU0hPTEQgPSAweDEwMDtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmcgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBjb25zdCBsZW5ndGggPSBhcmc7XG4gICAgICAgICAgICBjb25zdCBidWZmID0gQml0QXJyYXkuX2NyZWF0ZUJ1ZmZlcihsZW5ndGgpO1xuICAgICAgICAgICAgaWYgKGRlZmF1bHRWYWx1ZSkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnVmZi5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgICAgICAgICAgYnVmZltpXSA9IC0xO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fZGF0YSA9IGJ1ZmY7XG4gICAgICAgICAgICB0aGlzLl9sZW5ndGggPSBsZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoYXJnIGluc3RhbmNlb2YgVWludDMyQXJyYXkpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEgPSBhcmc7XG4gICAgICAgICAgICB0aGlzLl9sZW5ndGggPSBkZWZhdWx0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29uc3RydWN0b3InKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXRSYXdEYXRhKCkgeyByZXR1cm4gdGhpcy5fZGF0YTsgfVxuICAgIGFzc3VyZUdvZXoobnVtLCBhcmdOYW1lKSB7XG4gICAgICAgIGlmIChudW0gPCAwKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2FyZ05hbWV9IHNob3VsZCBiZSBncmVhdGVyIHRoYW4gemVyb2ApO1xuICAgIH1cbiAgICBhc3N1cmVJblJhbmdlKHZhbHVlLCBtaW4sIG1heCwgYXJnTmFtZSkge1xuICAgICAgICBpZiAoKHZhbHVlIDwgbWluKSB8fCAodmFsdWUgPiBtYXgpKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBcmd1bWVudCAke2FyZ05hbWV9ICgke3ZhbHVlfSkgb3V0IG9mIHJhbmdlICgke21pbn0sICR7bWF4fSlgKTtcbiAgICB9XG4gICAgY29weShzcmMsIGRzdCwgY291bnQpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKVxuICAgICAgICAgICAgZHN0W2ldID0gc3JjW2ldO1xuICAgIH1cbiAgICBjb3B5RnJvbShvdGhlcikge1xuICAgICAgICBpZiAodGhpcy5fbGVuZ3RoICE9IG90aGVyLl9sZW5ndGgpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYExlbmd0aHMgZGlmZmVyICgke3RoaXMuX2xlbmd0aH0gIT0gJHtvdGhlci5fbGVuZ3RofSlgKTtcbiAgICAgICAgdGhpcy5jb3B5KG90aGVyLl9kYXRhLCB0aGlzLl9kYXRhLCB0aGlzLmxlbmd0aEluSW50cyk7XG4gICAgICAgIHRoaXMuX3ZlcnNpb24rKztcbiAgICB9XG4gICAgZ2V0IGxlbmd0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xlbmd0aDtcbiAgICB9XG4gICAgZ2V0IGJ1ZmZlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGE7XG4gICAgfVxuICAgIHNldCBidWZmZXIoZGF0YSkge1xuICAgICAgICB0aGlzLl9kYXRhID0gZGF0YTtcbiAgICAgICAgdGhpcy5fdmVyc2lvbisrO1xuICAgIH1cbiAgICBnZXQgdmVyc2lvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZlcnNpb247XG4gICAgfVxuICAgIHNldCB2ZXJzaW9uKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX3ZlcnNpb24gPSB2YWx1ZTtcbiAgICB9XG4gICAgaW5jcmVtZW50VmVyc2lvbihub3RpZnkgPSB0cnVlKSB7XG4gICAgICAgIHRoaXMuX3ZlcnNpb24rKztcbiAgICB9XG4gICAgZ2V0IGxlbmd0aEluSW50cygpIHtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoKHRoaXMuX2xlbmd0aCArIDB4MWYpIC8gMHgyMCk7XG4gICAgfVxuICAgIGdldCB2ZXJzaW9uZWROYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmVyc2lvbiA9PSB0aGlzLl92ZXJzaW9uZWROYW1lVmVyc2lvbiA/IHRoaXMuX3ZlcnNpb25lZE5hbWUgOiAnJztcbiAgICB9XG4gICAgc2V0IHZlcnNpb25lZE5hbWUobmFtZSkge1xuICAgICAgICB0aGlzLl92ZXJzaW9uZWROYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5fdmVyc2lvbmVkTmFtZVZlcnNpb24gPSB0aGlzLl92ZXJzaW9uO1xuICAgIH1cbiAgICBnZXQgc2VsZigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIHNldExlbmd0aCh2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWUgPCAwKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdzaG91bGQgYmUgPj0gMCcpO1xuICAgICAgICBpZiAodmFsdWUgPT0gdGhpcy5fbGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBuSW50c05lZWRlZCA9IE1hdGguZmxvb3IoKHZhbHVlICsgMHgxZikgLyAweDIwKTtcbiAgICAgICAgaWYgKChuSW50c05lZWRlZCA+IHRoaXMuX2RhdGEubGVuZ3RoKSB8fCAoKG5JbnRzTmVlZGVkICsgdGhpcy5TSFJJTktfVEhSRVNIT0xEKSA8IHRoaXMuX2RhdGEubGVuZ3RoKSkge1xuICAgICAgICAgICAgY29uc3QgbmV3RGF0YSA9IG5ldyBVaW50MzJBcnJheShuSW50c05lZWRlZCk7XG4gICAgICAgICAgICB0aGlzLmNvcHkodGhpcy5fZGF0YSwgbmV3RGF0YSwgKG5JbnRzTmVlZGVkID4gdGhpcy5fZGF0YS5sZW5ndGgpID8gdGhpcy5fZGF0YS5sZW5ndGggOiBuSW50c05lZWRlZCk7XG4gICAgICAgICAgICB0aGlzLl9kYXRhID0gbmV3RGF0YTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgPiB0aGlzLl9sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9sZW5ndGggJSAweDIwID4gMClcbiAgICAgICAgICAgICAgICB0aGlzLl9kYXRhW3RoaXMubGVuZ3RoSW5JbnRzIC0gMV0gJj0gKDEgPDwgKCh0aGlzLl9sZW5ndGggJSAweDIwKSAmIDB4MWYpKSAtIDE7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLmZpbGwoMCwgdGhpcy5sZW5ndGhJbkludHMsIG5JbnRzTmVlZGVkKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9sZW5ndGggPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fdmVyc2lvbisrO1xuICAgIH1cbiAgICBzdGF0aWMgZnJvbUFuZChzZXQxLCBzZXQyKSB7XG4gICAgICAgIGlmIChzZXQxLl9sZW5ndGggIT0gc2V0Mi5fbGVuZ3RoKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBMZW5ndGhzIGRpZmZlciAoJHtzZXQxLl9sZW5ndGh9ICE9ICR7c2V0Mi5fbGVuZ3RofSlgKTtcbiAgICAgICAgY29uc3QgdGVtcCA9IG5ldyBCaXRBcnJheShzZXQxLl9sZW5ndGgpO1xuICAgICAgICB0ZW1wLl9sZW5ndGggPSBzZXQxLl9sZW5ndGg7XG4gICAgICAgIHRlbXAuX2RhdGEgPSBCaXRBcnJheS5fY3JlYXRlQnVmZmVyKHRlbXAuX2xlbmd0aCk7XG4gICAgICAgIHRlbXAuX3ZlcnNpb24gPSAwO1xuICAgICAgICBjb25zdCBsZW4gPSBzZXQxLmxlbmd0aEluSW50cztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKylcbiAgICAgICAgICAgIHRlbXAuX2RhdGFbaV0gPSBzZXQxLl9kYXRhW2ldICYgc2V0Mi5fZGF0YVtpXTtcbiAgICAgICAgcmV0dXJuIHRlbXA7XG4gICAgfVxuICAgIHN0YXRpYyBfY3JlYXRlQnVmZmVyKGxlbmd0aCkge1xuICAgICAgICByZXR1cm4gbmV3IFVpbnQzMkFycmF5KE1hdGguZmxvb3IoKGxlbmd0aCArIDB4MWYpIC8gMHgyMCkpO1xuICAgIH1cbiAgICBzdGF0aWMgZnJvbVZhbHVlcyh2YWx1ZXMpIHtcbiAgICAgICAgY29uc3QgdGVtcCA9IG5ldyBCaXRBcnJheSh2YWx1ZXMubGVuZ3RoKTtcbiAgICAgICAgdGVtcC5fdmVyc2lvbiA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGVtcC5fbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZXNbaV0pXG4gICAgICAgICAgICAgICAgdGVtcC5fZGF0YVtNYXRoLmZsb29yKGkgLyAweDIwKV0gfD0gMSA8PCAoKGkgJSAweDIwKSAmIDB4MWYpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0ZW1wO1xuICAgIH1cbiAgICAvLy8gQ29uc3RydWN0cyBhIFtCaXRTZXRdIG9mIGxlbmd0aCBbY291bnRdLCB3aGVyZSBpZHgtdGggYml0IGlzIGRldGVybWluZWQgYnkgYSBjYWxsIHRvIFtmbGFnXSAoaWR4KS5cbiAgICBzdGF0aWMgZnJvbVNlcShjb3VudCwgZmxhZykge1xuICAgICAgICBjb25zdCB0ZW1wID0gbmV3IEJpdEFycmF5KGNvdW50KTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgKytpKVxuICAgICAgICAgICAgdGVtcC5zZXRCaXQoaSwgZmxhZyhpKSk7XG4gICAgICAgIHRlbXAuX3ZlcnNpb24gPSAwO1xuICAgICAgICByZXR1cm4gdGVtcDtcbiAgICB9XG4gICAgLy8vIENvbnN0cnVjdHMgYSBbQml0U2V0XSBmcm9tIGEgc3RyaW5nIFtzXSBjb250YWluaW5nICcwJyBvciAnMScuXG4gICAgc3RhdGljIGZyb21TdHJpbmcocykge1xuICAgICAgICByZXR1cm4gQml0QXJyYXkuZnJvbVNlcShzLmxlbmd0aCwgKGkpID0+IHMuY2hhckF0KGkpID09ICcxJyk7XG4gICAgfVxuICAgIC8vLyBDb25zdHJ1Y3RzIGEgW0JpdFNldF0sIGJhc2VkIG9uIGxlbmd0aCBbX2xlbmd0aF0gYW5kIGJ5dGUgYXJyYXkgW19kYXRhXS5cbiAgICBzdGF0aWMgZnJvbVVpbnQzMkFycmF5KF9sZW5ndGgsIF9kYXRhKSB7XG4gICAgICAgIGNvbnN0IHRlbXAgPSBuZXcgQml0QXJyYXkoX2xlbmd0aCk7XG4gICAgICAgIHRlbXAuX2RhdGEgPSBfZGF0YTtcbiAgICAgICAgcmV0dXJuIHRlbXA7XG4gICAgfVxuICAgIC8vLyBEZXNlcmlhbGl6ZXMgYSBbQml0U2V0XSBmcm9tIFtieXRlc10uXG4gICAgc3RhdGljIGZyb21CeXRlcyhieXRlcykge1xuICAgICAgICBjb25zdCBsZW4gPSBieXRlcy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHRlbXAgPSBuZXcgQml0QXJyYXkobGVuICogOCk7XG4gICAgICAgIHRlbXAuX2RhdGEgPSBuZXcgVWludDMyQXJyYXkoTWF0aC5mbG9vcigobGVuICsgMykgLyA0KSk7XG4gICAgICAgIHRlbXAuX2xlbmd0aCA9IGxlbiAqIDg7XG4gICAgICAgIGxldCBudW0xID0gMDtcbiAgICAgICAgbGV0IG51bTIgPSAwO1xuICAgICAgICB3aGlsZSAoKGxlbiAtIG51bTIpID49IDQpIHtcbiAgICAgICAgICAgIHRlbXAuX2RhdGFbbnVtMSsrXSA9ICgoKGJ5dGVzW251bTJdICYgMHhmZikgfCAoKGJ5dGVzW251bTIgKyAxXSAmIDB4ZmYpIDw8IDgpKSB8XG4gICAgICAgICAgICAgICAgKChieXRlc1tudW0yICsgMl0gJiAweGZmKSA8PCAweDEwKSkgfCAoKGJ5dGVzW251bTIgKyAzXSAmIDB4ZmYpIDw8IDB4MTgpO1xuICAgICAgICAgICAgbnVtMiArPSA0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChsZW4gLSBudW0yID09IDMpXG4gICAgICAgICAgICB0ZW1wLl9kYXRhW251bTFdID0gKGJ5dGVzW251bTIgKyAyXSAmIDB4ZmYpIDw8IDB4MTA7XG4gICAgICAgIGlmIChsZW4gLSBudW0yID09IDIpXG4gICAgICAgICAgICB0ZW1wLl9kYXRhW251bTFdIHw9IChieXRlc1tudW0yICsgMV0gJiAweGZmKSA8PCA4O1xuICAgICAgICBpZiAobGVuIC0gbnVtMiA9PSAxKVxuICAgICAgICAgICAgdGVtcC5fZGF0YVtudW0xXSB8PSBieXRlc1tudW0yXSAmIDB4ZmY7XG4gICAgICAgIHRlbXAuX3ZlcnNpb24gPSAwO1xuICAgICAgICByZXR1cm4gdGVtcDtcbiAgICB9XG4gICAgdG9TdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLl9sZW5ndGh9IGJpdHMsICR7dGhpcy5jb3VudEJpdHModHJ1ZSl9IHNldGA7XG4gICAgfVxuICAgIC8vLyBQZXJmb3JtcyBkZWVwIGNvbXBhcmlzb24gb2YgdHdvIGJpdHNldHMuXG4gICAgZXF1YWxzKG90aGVyKSB7XG4gICAgICAgIGlmICh0aGlzID09IG90aGVyKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmIChvdGhlciA9PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5fbGVuZ3RoICE9IG90aGVyLl9sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLl9sZW5ndGggPT0gMClcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX2RhdGEubGVuZ3RoIC0gMTsgaSsrKVxuICAgICAgICAgICAgaWYgKHRoaXMuX2RhdGFbaV0gIT0gb3RoZXIuX2RhdGFbaV0pXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBmb3IgKGxldCBpID0gKHRoaXMuX2RhdGEubGVuZ3RoIC0gMSkgKiA4OyBpIDwgdGhpcy5fbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdldEJpdChpKSAhPSBvdGhlci5nZXRCaXQoaSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICAvKiogQ2xvbmVzIGEgYml0c2V0LiAqL1xuICAgIGNsb25lKCkge1xuICAgICAgICBjb25zdCBiaXRBcnJheSA9IG5ldyBCaXRBcnJheSgwLCBmYWxzZSk7XG4gICAgICAgIGJpdEFycmF5Ll9kYXRhID0gVWludDMyQXJyYXkuZnJvbSh0aGlzLl9kYXRhKTsgLy8gZWZmZWN0aXZlIGxlbmd0aDogKGxlbmd0aEluSW50cylcbiAgICAgICAgYml0QXJyYXkuX2xlbmd0aCA9IHRoaXMuX2xlbmd0aDtcbiAgICAgICAgYml0QXJyYXkuX3ZlcnNpb24gPSB0aGlzLl92ZXJzaW9uO1xuICAgICAgICByZXR1cm4gYml0QXJyYXk7XG4gICAgfVxuICAgIC8qKiBJbml0aWFsaXplcyBhIGJpdHNldC4gKi9cbiAgICBpbml0KGZsYWcsIG5vdGlmeSkge1xuICAgICAgICB0aGlzLnNldEFsbChmYWxzZSwgZmFsc2UpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX2xlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZmxhZyhpKSlcbiAgICAgICAgICAgICAgICB0aGlzLl9kYXRhW01hdGguZmxvb3IoaSAvIDB4MjApXSB8PSAxIDw8ICgoaSAlIDB4MjApICYgMHgxZik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbmNyZW1lbnRWZXJzaW9uKG5vdGlmeSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvLy8gSW52ZXJ0cyBhIGJpdHNldC5cbiAgICBpbnZlcnQobm90aWZ5ID0gdHJ1ZSkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX2RhdGEubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICB0aGlzLl9kYXRhW2ldIF49IC0xO1xuICAgICAgICB0aGlzLmluY3JlbWVudFZlcnNpb24obm90aWZ5KTtcbiAgICB9XG4gICAgLy8vIFNldHMgYWxsIGJpdHMgdG8gW3ZhbHVlXSwgb3B0aW9uYWxseSBzdXBwcmVzc2luZyBub3RpZmljYXRpb25zLlxuICAgIHNldEFsbCh2YWx1ZSwgbm90aWZ5ID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgZmxhZ3MgPSB2YWx1ZSA/IC0xIDogMDtcbiAgICAgICAgY29uc3QgbGVuID0gdGhpcy5sZW5ndGhJbkludHM7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIC8vdG9kbzogb3B0aW1pemVcbiAgICAgICAgICAgIHRoaXMuX2RhdGFbaV0gPSBmbGFncztcbiAgICAgICAgdGhpcy5pbmNyZW1lbnRWZXJzaW9uKG5vdGlmeSk7XG4gICAgfVxuICAgIC8vLyBTZXRzIGJpdHMgYXQgW2luZGV4ZXNdIHBvc2l0aW9uIHRvIFt2YWx1ZV0uXG4gICAgLy8vIENsZWFycyB0aGUgYml0c2V0IGlmIFtjbGVhcl0gZmxhZyBpcyB0cnVlLlxuICAgIC8vLyBDaGFuZ2Ugbm90aWZpY2F0aW9uIGlzIHJhaXNlZCB3aGVuIFtub3RpZnldIGlzIHRydWUuXG4gICAgc2V0SW5kZXhlcyhpbmRleGVzLCB2YWx1ZSA9IHRydWUsIGNsZWFyID0gdHJ1ZSwgbm90aWZ5ID0gdHJ1ZSkge1xuICAgICAgICBpZiAoY2xlYXIpXG4gICAgICAgICAgICB0aGlzLnNldEFsbCghdmFsdWUsIGZhbHNlKTtcbiAgICAgICAgZm9yIChjb25zdCBpIG9mIGluZGV4ZXMpXG4gICAgICAgICAgICB0aGlzLnNldEZhc3QoaSwgdmFsdWUpO1xuICAgICAgICB0aGlzLmluY3JlbWVudFZlcnNpb24obm90aWZ5KTtcbiAgICB9XG4gICAgZXZlcnlJbmRleChpbmRleGVzLCB2YWx1ZSA9IHRydWUpIHtcbiAgICAgICAgZm9yIChjb25zdCBpbmRleCBvZiBpbmRleGVzKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5nZXRCaXQoaW5kZXgpICE9IHZhbHVlKVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgYW55SW5kZXgoaW5kZXhlcywgdmFsdWUgPSB0cnVlKSB7XG4gICAgICAgIGZvciAoY29uc3QgaW5kZXggb2YgaW5kZXhlcykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ2V0Qml0KGluZGV4KSA9PSB2YWx1ZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHNldFdoZXJlKGNoZWNrLCB2YWx1ZSA9IHRydWUsIGNsZWFyID0gdHJ1ZSwgbm90aWZ5ID0gdHJ1ZSwgYWxsb3dDbGVhciA9IHRydWUpIHtcbiAgICAgICAgaWYgKGNsZWFyICYmIGFsbG93Q2xlYXIpXG4gICAgICAgICAgICB0aGlzLnNldEFsbCghdmFsdWUsIGZhbHNlKTtcbiAgICAgICAgaWYgKGFsbG93Q2xlYXIpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoY2hlY2soaSkpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RmFzdChpLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX2xlbmd0aDsgaSsrKVxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RmFzdChpLCBjaGVjayhpKSA/IHZhbHVlIDogIXZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluY3JlbWVudFZlcnNpb24obm90aWZ5KTtcbiAgICB9XG4gICAgZ2V0UmFuZ2UoZnJvbSwgdG8pIHtcbiAgICAgICAgdGhpcy5hc3N1cmVJblJhbmdlKGZyb20sIDAsIHRoaXMuX2xlbmd0aCAtIDEsICdmcm9tJyk7XG4gICAgICAgIHRoaXMuYXNzdXJlSW5SYW5nZSh0bywgMCwgdGhpcy5fbGVuZ3RoLCAndG8nKTtcbiAgICAgICAgY29uc3QgYXJyID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSBmcm9tOyBpIDwgdG87ICsraSlcbiAgICAgICAgICAgIGFyci5wdXNoKHRoaXMuZ2V0Qml0KGkpKTtcbiAgICAgICAgcmV0dXJuIEJpdEFycmF5LmZyb21WYWx1ZXMoYXJyKTtcbiAgICB9XG4gICAgZ2V0UmFuZ2VBc0xpc3QoZnJvbSwgdG8pIHtcbiAgICAgICAgdGhpcy5hc3N1cmVJblJhbmdlKGZyb20sIDAsIHRoaXMuX2xlbmd0aCAtIDEsICdmcm9tJyk7XG4gICAgICAgIHRoaXMuYXNzdXJlSW5SYW5nZSh0bywgMCwgdGhpcy5fbGVuZ3RoLCAndG8nKTtcbiAgICAgICAgY29uc3QgYXJyID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSBmcm9tOyBpIDwgdG87ICsraSlcbiAgICAgICAgICAgIGFyci5wdXNoKHRoaXMuZ2V0Qml0KGkpKTtcbiAgICAgICAgcmV0dXJuIGFycjtcbiAgICB9XG4gICAgc2V0UmFuZ2UoZnJvbSwgdG8sIHZhbHVlLCBub3RpZnkgPSB0cnVlKSB7XG4gICAgICAgIHRoaXMuYXNzdXJlSW5SYW5nZShmcm9tLCAwLCB0aGlzLl9sZW5ndGggLSAxLCAnZnJvbScpO1xuICAgICAgICB0aGlzLmFzc3VyZUluUmFuZ2UodG8sIDAsIHRoaXMuX2xlbmd0aCAtIDEsICd0bycpO1xuICAgICAgICBjb25zdCBzdGFydCA9IE1hdGgubWluKGZyb20sIHRvKTtcbiAgICAgICAgY29uc3QgZW5kID0gTWF0aC5tYXgoZnJvbSwgdG8pO1xuICAgICAgICAvL3RvZG86IG9wdGltaXplXG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDw9IGVuZDsgaSsrKVxuICAgICAgICAgICAgICAgIHRoaXMuc2V0VHJ1ZShpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8PSBlbmQ7IGkrKylcbiAgICAgICAgICAgICAgICB0aGlzLnNldEZhbHNlKGkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5jcmVtZW50VmVyc2lvbihub3RpZnkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLy8vIFNldHMgbiByYW5kb21seSBjaG9zZW4gYml0cyB0byB2YWx1ZSwgcmVtYWluaW5nIGJpdHMgdG8gIXZhbHVlLlxuICAgIHNldFJhbmRvbShuLCB2YWx1ZSwgbm90aWZ5ID0gdHJ1ZSkge1xuICAgICAgICBpZiAobiA8IDAgfHwgbiA+IHRoaXMuX2xlbmd0aClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignbiBtdXN0IGJlID49IDAgJiYgPD0gQ291bnQnKTtcbiAgICAgICAgaWYgKG4gPiB0aGlzLl9sZW5ndGggLyAyKVxuICAgICAgICAgICAgdGhpcy5zZXRSYW5kb20odGhpcy5fbGVuZ3RoIC0gbiwgIXZhbHVlKTtcbiAgICAgICAgdGhpcy5zZXRBbGwoIXZhbHVlKTtcbiAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBuOykge1xuICAgICAgICAgICAgY29uc3QgaSA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHRoaXMuX2xlbmd0aCk7XG4gICAgICAgICAgICBpZiAodGhpcy5nZXRCaXQoaSkgPT0gdmFsdWUpXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB0aGlzLnNldEZhc3QoaSwgdmFsdWUpO1xuICAgICAgICAgICAgaysrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5jcmVtZW50VmVyc2lvbihub3RpZnkpO1xuICAgIH1cbiAgICAvLy8gTW9kaWZpZXMgY3VycmVudCBiaXRzZXQgYnkgcGVyZm9ybWluZyB0aGUgYml0d2lzZSBBTkQgb3BlcmF0aW9uIGFnYWluc3QgdGhlXG4gICAgLy8vIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgaW4gdGhlIHNwZWNpZmllZCBiaXRzZXQuXG4gICAgYW5kKHZhbHVlLCBub3RpZnkgPSB0cnVlKSB7XG4gICAgICAgIGlmICh0aGlzLl9sZW5ndGggIT0gdmFsdWUuX2xlbmd0aClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQXJyYXkgbGVuZ3RocyBkaWZmZXIuJyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLmxlbmd0aEluSW50czsgaSA8IGxlbjsgaSsrKVxuICAgICAgICAgICAgdGhpcy5fZGF0YVtpXSAmPSB2YWx1ZS5fZGF0YVtpXTtcbiAgICAgICAgdGhpcy5pbmNyZW1lbnRWZXJzaW9uKG5vdGlmeSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvLy8gUGVyZm9ybXMgdGhlIGJpdHdpc2UgQU5EIE5PVCBvcGVyYXRpb24gb24gdGhlIGVsZW1lbnRzIGluIHRoZSBjdXJyZW50IGJpdHNldFxuICAgIC8vLyBhZ2FpbnN0IHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIGluIHRoZSBzcGVjaWZpZWQgYml0c2V0LlxuICAgIGFuZE5vdCh2YWx1ZSwgbm90aWZ5ID0gdHJ1ZSkge1xuICAgICAgICBpZiAodGhpcy5fbGVuZ3RoICE9IHZhbHVlLl9sZW5ndGgpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FycmF5IGxlbmd0aHMgZGlmZmVyLicpO1xuICAgICAgICBjb25zdCBsZW4gPSB0aGlzLmxlbmd0aEluSW50cztcbiAgICAgICAgZm9yIChsZXQgbnVtMiA9IDA7IG51bTIgPCBsZW47IG51bTIrKylcbiAgICAgICAgICAgIHRoaXMuX2RhdGFbbnVtMl0gJj0gfnZhbHVlLl9kYXRhW251bTJdO1xuICAgICAgICB0aGlzLmluY3JlbWVudFZlcnNpb24obm90aWZ5KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8vLyBQZXJmb3JtcyB0aGUgYml0d2lzZSBOT1QgQU5EIG9wZXJhdGlvbiBvbiB0aGUgZWxlbWVudHMgaW4gdGhlIGN1cnJlbnQgYml0c2V0XG4gICAgLy8vIGFnYWluc3QgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgaW4gdGhlIHNwZWNpZmllZCBiaXRzZXQuXG4gICAgbm90QW5kKHZhbHVlLCBub3RpZnkgPSB0cnVlKSB7XG4gICAgICAgIGlmICh0aGlzLl9sZW5ndGggIT0gdmFsdWUuX2xlbmd0aClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQXJyYXkgbGVuZ3RocyBkaWZmZXIuJyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLmxlbmd0aEluSW50czsgaSA8IGxlbjsgaSsrKVxuICAgICAgICAgICAgdGhpcy5fZGF0YVtpXSA9ICh+dGhpcy5fZGF0YVtpXSkgJiB2YWx1ZS5fZGF0YVtpXTtcbiAgICAgICAgdGhpcy5pbmNyZW1lbnRWZXJzaW9uKG5vdGlmeSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvLy8gSW52ZXJ0cyBhbGwgYml0IHZhbHVlcyBpbiB0aGUgY3VycmVudCBiaXRzZXRcbiAgICBub3Qobm90aWZ5ID0gdHJ1ZSkge1xuICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gdGhpcy5sZW5ndGhJbkludHM7IGkgPCBsZW47IGkrKylcbiAgICAgICAgICAgIHRoaXMuX2RhdGFbaV0gPSB+dGhpcy5fZGF0YVtpXTtcbiAgICAgICAgdGhpcy5pbmNyZW1lbnRWZXJzaW9uKG5vdGlmeSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvLy8gUGVyZm9ybXMgdGhlIGJpdHdpc2UgT1Igb3BlcmF0aW9uIG9uIHRoZSBlbGVtZW50cyBpbiB0aGUgY3VycmVudCBiaXRzZXRcbiAgICAvLy8gYWdhaW5zdCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBpbiB0aGUgc3BlY2lmaWVkIGJpdHNldC5cbiAgICBvcih2YWx1ZSwgbm90aWZ5ID0gdHJ1ZSkge1xuICAgICAgICBpZiAodGhpcy5fbGVuZ3RoICE9IHZhbHVlLl9sZW5ndGgpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FycmF5IGxlbmd0aHMgZGlmZmVyLicpO1xuICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gdGhpcy5sZW5ndGhJbkludHM7IGkgPCBsZW47IGkrKylcbiAgICAgICAgICAgIHRoaXMuX2RhdGFbaV0gfD0gdmFsdWUuX2RhdGFbaV07XG4gICAgICAgIHRoaXMuaW5jcmVtZW50VmVyc2lvbihub3RpZnkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLy8vIFBlcmZvcm1zIHRoZSBiaXR3aXNlIGV4Y2x1c2l2ZSBPUiBvcGVyYXRpb24gb24gdGhlIGVsZW1lbnRzIGluIHRoZSBjdXJyZW50IGJpdHNldFxuICAgIC8vLyBhZ2FpbnN0IHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIGluIHRoZSBzcGVjaWZpZWQgYml0c2V0LlxuICAgIHhvcih2YWx1ZSwgbm90aWZ5ID0gdHJ1ZSkge1xuICAgICAgICBpZiAodGhpcy5fbGVuZ3RoICE9IHZhbHVlLl9sZW5ndGgpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FycmF5IGxlbmd0aHMgZGlmZmVyLicpO1xuICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gdGhpcy5sZW5ndGhJbkludHM7IGkgPCBsZW47IGkrKylcbiAgICAgICAgICAgIHRoaXMuX2RhdGFbaV0gXj0gdmFsdWUuX2RhdGFbaV07XG4gICAgICAgIHRoaXMuaW5jcmVtZW50VmVyc2lvbihub3RpZnkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLy8vIEluc2VydHMgbiAwLWJpdHMgYXQgcG9zaXRpb24gcG9zLCByZXNpemluZyBzZWxmIGFuZCBzaGlmdGluZyBiaXRzIGFwcHJvcHJpYXRlbHkuXG4gICAgaW5zZXJ0QXQocG9zLCBuLCBmbGFnID0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5hc3N1cmVJblJhbmdlKHBvcywgMCwgdGhpcy5fbGVuZ3RoLCAncG9zJyk7XG4gICAgICAgIGlmIChuID09IDApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIC8vVE9ETzogb3B0aW1pemVcbiAgICAgICAgLy90aGUgbW9zdCBwcmltaXRpdmUgaW1wbGVtZW50YXRpb24sIG9wdGltaXplIGl0IGxhdGVyIVxuICAgICAgICAvLyBiZWdpblVwZGF0ZSgpO1xuICAgICAgICBjb25zdCBvbGRsZW5ndGggPSB0aGlzLl9sZW5ndGg7XG4gICAgICAgIHRoaXMuc2V0TGVuZ3RoKHRoaXMuX2xlbmd0aCArIG4pO1xuICAgICAgICAvL2lmICghY29udGFpbnMoIWZsYWcpKSByZXR1cm47IC8vIG5vdGhpbmcgdG8gZG9cbiAgICAgICAgZm9yIChsZXQgaSA9IG9sZGxlbmd0aCAtIDE7IGkgPj0gcG9zOyBpLS0pXG4gICAgICAgICAgICB0aGlzLnNldEJpdChpICsgbiwgdGhpcy5nZXRCaXQoaSkpO1xuICAgICAgICBmb3IgKGxldCBpID0gcG9zOyBpIDwgcG9zICsgbjsgaSsrKVxuICAgICAgICAgICAgdGhpcy5zZXRCaXQoaSwgZmxhZyk7XG4gICAgICAgIC8vIGVuZFVwZGF0ZSgpO1xuICAgIH1cbiAgICAvLy8gRGVsZXRlcyBuIGJpdHMgYmVnaW5uaW5nIGF0IHBvc2l0aW9uIHBvcywgcmVzaXppbmcgc2VsZiBhbmQgc2hpZnRpbmcgcmVtYWluaW5nXG4gICAgLy8vIGJpdHMgYXBwcm9wcmlhdGVseS5cbiAgICByZW1vdmVBdChwb3MsIG4gPSAxKSB7XG4gICAgICAgIC8vIHRoZSBtb3N0IHByaW1pdGl2ZSBpbXBsZW1lbnRhdGlvbiwgb3B0aW1pemUgaXQgbGF0ZXIhXG4gICAgICAgIGlmIChuIDwgMClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignbiBjYW5ub3QgYmUgbmVnYXRpdmUnKTtcbiAgICAgICAgdGhpcy5hc3N1cmVJblJhbmdlKHBvcywgMCwgdGhpcy5fbGVuZ3RoIC0gbiwgJ3BvcycpO1xuICAgICAgICBpZiAodGhpcy5jb250YWlucyh0cnVlKSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHBvczsgaSA8IHRoaXMuX2xlbmd0aCAtIG47IGkrKylcbiAgICAgICAgICAgICAgICB0aGlzLnNldEJpdChpLCB0aGlzLmdldEJpdChpICsgbikpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0TGVuZ3RoKHRoaXMuX2xlbmd0aCAtIG4pO1xuICAgIH1cbiAgICByZW1vdmVCeU1hc2sobWFzaywgZmxhZyA9IHRydWUpIHtcbiAgICAgICAgaWYgKHRoaXMuX2xlbmd0aCAhPSBtYXNrLmxlbmd0aClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignbGVuZ3RoICE9IG1hc2subGVuZ3RoJyk7XG4gICAgICAgIGlmIChtYXNrID09IHRoaXMpIHsgLy8gbm8gbmVlZCB0byBpdGVyYXRlXG4gICAgICAgICAgICB0aGlzLnNldExlbmd0aChtYXNrLmNvdW50Qml0cyghZmxhZykpO1xuICAgICAgICAgICAgdGhpcy5zZXRBbGwoIWZsYWcpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbGV0IGRzdElkeCA9IDA7XG4gICAgICAgICAgICBmb3IgKGxldCBzcmNJZHggPSAtMTsgKHNyY0lkeCA9IG1hc2suZmluZE5leHQoc3JjSWR4LCAhZmxhZykpICE9IC0xOylcbiAgICAgICAgICAgICAgICB0aGlzLnNldEZhc3QoZHN0SWR4KyssIHRoaXMuZ2V0Qml0KHNyY0lkeCkpO1xuICAgICAgICAgICAgdGhpcy5fbGVuZ3RoID0gZHN0SWR4O1xuICAgICAgICAgICAgdGhpcy5fdmVyc2lvbisrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvLy8gU2ltaWxhciB0byB0aGUgW10gb3BlcmF0b3IuXG4gICAgZ2V0Qml0KHBvcykge1xuICAgICAgICByZXR1cm4gKHRoaXMuX2RhdGFbTWF0aC5mbG9vcihwb3MgLyAweDIwKV0gJiAoMSA8PCAocG9zICYgMHgxZikpKSAhPSAwO1xuICAgIH1cbiAgICAvLy8gU2ltaWxhciB0byB0aGUgW10gb3BlcmF0b3IuXG4gICAgc2V0Qml0KHBvcywgYml0LCBub3RpZnkgPSB0cnVlKSB7XG4gICAgICAgIHRoaXMuc2V0RmFzdChwb3MsIGJpdCk7XG4gICAgICAgIGlmIChub3RpZnkpXG4gICAgICAgICAgICB0aGlzLl92ZXJzaW9uKys7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMuX3ZlcnNpb24rKztcbiAgICB9XG4gICAgLy8vIFNldHMgW2ldLXRoIGJpdCB0byBbdmFsdWVdLCBkb2VzIG5vdCBjaGVjayBib3VuZHMsIGRvZXMgbm90IGluY3JlbWVudCB2ZXJzaW9uXG4gICAgc2V0RmFzdChpLCB2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWUpXG4gICAgICAgICAgICB0aGlzLl9kYXRhW01hdGguZmxvb3IoaSAvIDB4MjApXSB8PSAxIDw8IChpICYgMHgxZik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMuX2RhdGFbTWF0aC5mbG9vcihpIC8gMHgyMCldICY9IH4oMSA8PCAoaSAmIDB4MWYpKTtcbiAgICB9XG4gICAgc2V0VHJ1ZShwb3MpIHtcbiAgICAgICAgdGhpcy5fZGF0YVtNYXRoLmZsb29yKHBvcyAvIDB4MjApXSB8PSAxIDw8IChwb3MgJiAweDFmKTtcbiAgICB9XG4gICAgc2V0RmFsc2UocG9zKSB7XG4gICAgICAgIHRoaXMuX2RhdGFbTWF0aC5mbG9vcihwb3MgLyAweDIwKV0gJj0gfigxIDw8IChwb3MgJiAweDFmKSk7XG4gICAgfVxuICAgIHRydWVDb3VudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY291bnRCaXRzKHRydWUpO1xuICAgIH1cbiAgICBmYWxzZUNvdW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb3VudEJpdHMoZmFsc2UpO1xuICAgIH1cbiAgICAvLy8gQ291bnRzIGJpdHMgb2YgdGhlIHNwZWNpZmllZCB2YWx1ZS5cbiAgICBjb3VudEJpdHModmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMuX2xlbmd0aCA9PSAwKVxuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZENvdW50VmVyc2lvbiAhPSB0aGlzLl92ZXJzaW9uKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZENvdW50ID0gMDtcbiAgICAgICAgICAgIGNvbnN0IGxlbiA9IHRoaXMubGVuZ3RoSW5JbnRzO1xuICAgICAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICAgICAgZm9yICg7IGkgPCBsZW4gLSAxOyBpKyspIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBrID0gdGhpcy5fZGF0YVtpXTsgayAhPSAwOyBrID4+Pj0gOCkgeyAvL3RvZG86IGNhc3QgZGF0YVtpXSB0byB1aW50XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkQ291bnQgKz0gQml0QXJyYXkuX29uQml0Q291bnRbayAmIDB4ZmZdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFRoZSBsYXN0IGludC5cbiAgICAgICAgICAgIGxldCBrID0gdGhpcy5fZGF0YVtpXTtcbiAgICAgICAgICAgIGNvbnN0IHJlbWFpbmluZ0JpdHMgPSB0aGlzLl9sZW5ndGggJiAweDFmO1xuICAgICAgICAgICAgaWYgKHJlbWFpbmluZ0JpdHMgIT0gMCkgLyogaWYgcmVtYWluaW5nQml0cyA9PSAwLCB0aGUgbGFzdCBpbnQgaXMgZnVsbHkgdXNlZCBhbmQgQUxMIGJpdHMgc2hvdWxkIGJlIGxlZnQgYXMgaXMgKi9cbiAgICAgICAgICAgICAgICBrICY9IH4oKDQyOTQ5NjcyOTUpIDw8IHJlbWFpbmluZ0JpdHMpO1xuICAgICAgICAgICAgZm9yICg7IGsgIT0gMDsgayA+Pj49IDgpXG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRDb3VudCArPSBCaXRBcnJheS5fb25CaXRDb3VudFtrICYgMHhmZl07XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZENvdW50VmVyc2lvbiA9IHRoaXMuX3ZlcnNpb247XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICh2YWx1ZSA/IHRoaXMuX3NlbGVjdGVkQ291bnQgOiB0aGlzLl9sZW5ndGggLSB0aGlzLl9zZWxlY3RlZENvdW50KTtcbiAgICB9XG4gICAgLy8vIFJldHVybnMgYSBudW1iZXIgb2Ygc2V0IGJpdHMgd2hlcmUgYWxzbyBbY2hlY2tdIGlzIHRydWVcbiAgICBjb3VudFdoZXJlKGNoZWNrKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSAwO1xuICAgICAgICBpZiAodGhpcy50cnVlQ291bnQoKSA9PSB0aGlzLl9sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fbGVuZ3RoOyBpKyspXG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IGNoZWNrKGkpID8gMSA6IDA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gLTE7IChpID0gdGhpcy5maW5kTmV4dChpLCB0cnVlKSkgIT0gLTE7KVxuICAgICAgICAgICAgICAgIHJlc3VsdCArPSBjaGVjayhpKSA/IDEgOiAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIC8vLyBQZXJmb3JtcyBiaXQgXCJhbmRcIiBhbmQgY291bnRzIGJpdHMgb2YgdGhlIHNwZWNpZmllZCB2YWx1ZSwgd2l0aG91dCBiaXRzZXQgbW9kaWZpY2F0aW9uLlxuICAgIGFuZFdpdGhDb3VudEJpdHMoc2Vjb25kLCB2YWx1ZSkge1xuICAgICAgICBpZiAodGhpcy5fbGVuZ3RoID09IDApXG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgbGV0IGNvdW50ID0gMDtcbiAgICAgICAgY29uc3QgbGVuID0gdGhpcy5sZW5ndGhJbkludHM7XG4gICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgZm9yICg7IGkgPCBsZW4gLSAxOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGsgPSB0aGlzLl9kYXRhW2ldICYgc2Vjb25kLl9kYXRhW2ldOyBrICE9IDA7IGsgPj4+PSA4KVxuICAgICAgICAgICAgICAgIGNvdW50ICs9IEJpdEFycmF5Ll9vbkJpdENvdW50W2sgJiAweGZmXTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGUgbGFzdCBpbnQuXG4gICAgICAgIGxldCBrID0gdGhpcy5fZGF0YVtpXSAmIHNlY29uZC5fZGF0YVtpXTtcbiAgICAgICAgY29uc3QgcmVtYWluaW5nQml0cyA9IHRoaXMuX2xlbmd0aCAmIDB4MWY7XG4gICAgICAgIGlmIChyZW1haW5pbmdCaXRzICE9IDApXG4gICAgICAgICAgICBrICY9IH4oKDQyOTQ5NjcyOTUpIDw8IHJlbWFpbmluZ0JpdHMpO1xuICAgICAgICBmb3IgKDsgayAhPSAwOyBrID4+Pj0gOClcbiAgICAgICAgICAgIGNvdW50ICs9IEJpdEFycmF5Ll9vbkJpdENvdW50W2sgJiAweGZmXTtcbiAgICAgICAgcmV0dXJuICh2YWx1ZSA/IGNvdW50IDogdGhpcy5fbGVuZ3RoIC0gY291bnQpO1xuICAgIH1cbiAgICBjbGVhcigpIHtcbiAgICAgICAgdGhpcy5zZXRMZW5ndGgoMCk7XG4gICAgfVxuICAgIGNvbnRhaW5zKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmROZXh0KC0xLCB2YWx1ZSkgPj0gMDtcbiAgICB9XG4gICAgZ2V0IGFsbFRydWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvdW50Qml0cyh0cnVlKSA9PSB0aGlzLl9sZW5ndGg7XG4gICAgfVxuICAgIGdldCBhbGxGYWxzZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY291bnRCaXRzKGZhbHNlKSA9PSB0aGlzLl9sZW5ndGg7XG4gICAgfVxuICAgIGdldCBhbnlUcnVlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb3VudEJpdHModHJ1ZSkgPiAwO1xuICAgIH1cbiAgICBnZXQgYW55RmFsc2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvdW50Qml0cyhmYWxzZSkgPiAwO1xuICAgIH1cbiAgICAvLy8gUmV0dXJucyB0aGUgcG9zaXRpb24gb2YgdGhlIG5leHQgYml0IG9mIHRoZSBzcGVjaWZpZWQgdmFsdWUsIHN0YXJ0aW5nIGZyb20gdGhlIHNwZWNpZmllZCBwb3NpdGlvbi5cbiAgICAvLy8gUmV0dXJucyAtMSwgaWYgdGhlcmUgYXJlIG5vIHN1Y2ggYml0cy5cbiAgICBmaW5kTmV4dChpbmRleCwgdmFsdWUgPSB0cnVlKSB7XG4gICAgICAgIHRoaXMuYXNzdXJlSW5SYW5nZShpbmRleCwgLTEsIHRoaXMuX2xlbmd0aCwgJ2luZGV4Jyk7XG4gICAgICAgIGlmIChpbmRleCA+PSB0aGlzLl9sZW5ndGggLSAxKVxuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICBpbmRleCA9IGluZGV4IDwgMCA/IDAgOiBpbmRleCArIDE7IC8vIHNraXAgc3RhcnRcbiAgICAgICAgbGV0IHVudXNlZEJpdHMgPSBpbmRleCAmIDB4MWY7XG4gICAgICAgIGNvbnN0IG51bUludHMgPSB0aGlzLmxlbmd0aEluSW50cztcbiAgICAgICAgZm9yIChsZXQgaSA9IE1hdGguZmxvb3IoaW5kZXggLyAzMik7IGkgPCBudW1JbnRzOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBrID0gKHZhbHVlID8gdGhpcy5fZGF0YVtpXSA6IH50aGlzLl9kYXRhW2ldKTsgLy8gdWludCBjYXN0XG4gICAgICAgICAgICBpZiAodW51c2VkQml0cyAhPSAwKSB7XG4gICAgICAgICAgICAgICAgayAmPSAoKDB4ZmZmZmZmZmYgPDwgdW51c2VkQml0cykgJiAweGZmZmZmZmZmKTtcbiAgICAgICAgICAgICAgICB1bnVzZWRCaXRzID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCF2YWx1ZSAmJiBrID09IC00Mjk0OTY3Mjk2KSAvKiBsb29raW5nIGZvciBmYWxzZSwgYWxsIGJpdHMgYXJlIHNldCAqLyB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgayAhPSAwOyBqICs9IDgsIGsgPj4+PSA4KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcCA9IEJpdEFycmF5Ll9maXJzdE9uQml0W2sgJiAweGZmXTtcbiAgICAgICAgICAgICAgICBpZiAocCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4ID0gcCArIChpICogMzIpICsgajtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID49IHRoaXMuX2xlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIC8vLyBGaW5kcyBwcmV2aW91cyBiaXQgb2YgdGhlIHNwZWNpZmllZCB2YWx1ZSBpbiB0aGUgYml0c2V0LlxuICAgIGZpbmRQcmV2KGluZGV4LCB2YWx1ZSA9IHRydWUpIHtcbiAgICAgICAgaWYgKGluZGV4ID09IDApXG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIHRoaXMuYXNzdXJlSW5SYW5nZShpbmRleCwgLTEsIHRoaXMuX2xlbmd0aCwgJ2luZGV4Jyk7XG4gICAgICAgIGluZGV4ID0gaW5kZXggPCAwID8gdGhpcy5fbGVuZ3RoIC0gMSA6IGluZGV4IC0gMTsgLy8gc2tpcCBzdGFydFxuICAgICAgICBjb25zdCBsYXN0SW50SWR4ID0gTWF0aC5mbG9vcihpbmRleCAvIDB4MjApO1xuICAgICAgICBsZXQgcmVtYWluaW5nQml0cyA9IChpbmRleCArIDEpICYgMHgxZjtcbiAgICAgICAgZm9yIChsZXQgaSA9IGxhc3RJbnRJZHg7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBsZXQgayA9ICh2YWx1ZSA/IHRoaXMuX2RhdGFbaV0gOiB+dGhpcy5fZGF0YVtpXSk7IC8vIGNhc3RcbiAgICAgICAgICAgIGlmIChyZW1haW5pbmdCaXRzICE9IDApIHtcbiAgICAgICAgICAgICAgICBrICY9IH4oKDQyOTQ5NjcyOTUpIDw8IHJlbWFpbmluZ0JpdHMpO1xuICAgICAgICAgICAgICAgIHJlbWFpbmluZ0JpdHMgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDI0OyBrICE9IDA7IGogLT0gOCwgayA8PD0gOCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHAgPSBCaXRBcnJheS5fbGFzdE9uQml0W2sgPj4+IDB4MThdO1xuICAgICAgICAgICAgICAgIGlmIChwID49IDApXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwICsgKGkgKiAzMikgKyBqO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG59XG5CaXRBcnJheS5fb25CaXRDb3VudCA9IEludDhBcnJheS5mcm9tKFtcbiAgICAwLCAxLCAxLCAyLCAxLCAyLCAyLCAzLCAxLCAyLCAyLCAzLCAyLCAzLCAzLCA0LFxuICAgIDEsIDIsIDIsIDMsIDIsIDMsIDMsIDQsIDIsIDMsIDMsIDQsIDMsIDQsIDQsIDUsXG4gICAgMSwgMiwgMiwgMywgMiwgMywgMywgNCwgMiwgMywgMywgNCwgMywgNCwgNCwgNSxcbiAgICAyLCAzLCAzLCA0LCAzLCA0LCA0LCA1LCAzLCA0LCA0LCA1LCA0LCA1LCA1LCA2LFxuICAgIDEsIDIsIDIsIDMsIDIsIDMsIDMsIDQsIDIsIDMsIDMsIDQsIDMsIDQsIDQsIDUsXG4gICAgMiwgMywgMywgNCwgMywgNCwgNCwgNSwgMywgNCwgNCwgNSwgNCwgNSwgNSwgNixcbiAgICAyLCAzLCAzLCA0LCAzLCA0LCA0LCA1LCAzLCA0LCA0LCA1LCA0LCA1LCA1LCA2LFxuICAgIDMsIDQsIDQsIDUsIDQsIDUsIDUsIDYsIDQsIDUsIDUsIDYsIDUsIDYsIDYsIDcsXG4gICAgMSwgMiwgMiwgMywgMiwgMywgMywgNCwgMiwgMywgMywgNCwgMywgNCwgNCwgNSxcbiAgICAyLCAzLCAzLCA0LCAzLCA0LCA0LCA1LCAzLCA0LCA0LCA1LCA0LCA1LCA1LCA2LFxuICAgIDIsIDMsIDMsIDQsIDMsIDQsIDQsIDUsIDMsIDQsIDQsIDUsIDQsIDUsIDUsIDYsXG4gICAgMywgNCwgNCwgNSwgNCwgNSwgNSwgNiwgNCwgNSwgNSwgNiwgNSwgNiwgNiwgNyxcbiAgICAyLCAzLCAzLCA0LCAzLCA0LCA0LCA1LCAzLCA0LCA0LCA1LCA0LCA1LCA1LCA2LFxuICAgIDMsIDQsIDQsIDUsIDQsIDUsIDUsIDYsIDQsIDUsIDUsIDYsIDUsIDYsIDYsIDcsXG4gICAgMywgNCwgNCwgNSwgNCwgNSwgNSwgNiwgNCwgNSwgNSwgNiwgNSwgNiwgNiwgNyxcbiAgICA0LCA1LCA1LCA2LCA1LCA2LCA2LCA3LCA1LCA2LCA2LCA3LCA2LCA3LCA3LCA4XG5dKTtcbkJpdEFycmF5Ll9maXJzdE9uQml0ID0gSW50OEFycmF5LmZyb20oW1xuICAgIC0xLCAwLCAxLCAwLCAyLCAwLCAxLCAwLCAzLCAwLCAxLCAwLCAyLCAwLCAxLCAwLFxuICAgIDQsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsXG4gICAgNSwgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCxcbiAgICA0LCAwLCAxLCAwLCAyLCAwLCAxLCAwLCAzLCAwLCAxLCAwLCAyLCAwLCAxLCAwLFxuICAgIDYsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsXG4gICAgNCwgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCxcbiAgICA1LCAwLCAxLCAwLCAyLCAwLCAxLCAwLCAzLCAwLCAxLCAwLCAyLCAwLCAxLCAwLFxuICAgIDQsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsXG4gICAgNywgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCxcbiAgICA0LCAwLCAxLCAwLCAyLCAwLCAxLCAwLCAzLCAwLCAxLCAwLCAyLCAwLCAxLCAwLFxuICAgIDUsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsXG4gICAgNCwgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCxcbiAgICA2LCAwLCAxLCAwLCAyLCAwLCAxLCAwLCAzLCAwLCAxLCAwLCAyLCAwLCAxLCAwLFxuICAgIDQsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsXG4gICAgNSwgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCxcbiAgICA0LCAwLCAxLCAwLCAyLCAwLCAxLCAwLCAzLCAwLCAxLCAwLCAyLCAwLCAxLCAwXG5dKTtcbkJpdEFycmF5Ll9sYXN0T25CaXQgPSBJbnQ4QXJyYXkuZnJvbShbXG4gICAgLTEsIDAsIDEsIDEsIDIsIDIsIDIsIDIsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsXG4gICAgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCxcbiAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LFxuICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsXG4gICAgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNixcbiAgICA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LFxuICAgIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsXG4gICAgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNixcbiAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LFxuICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsXG4gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNyxcbiAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LFxuICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsXG4gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNyxcbiAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LFxuICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDdcbl0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWW1sMExXRnljbUY1TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lZbWwwTFdGeWNtRjVMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQkxFMUJRVTBzUTBGQlF5eFBRVUZQTEU5QlFVOHNVVUZCVVR0SlFXOUZNMElzV1VGQldTeEhRVUY1UWl4RlFVRkZMR1ZCUVdsRExFdEJRVXM3VVVGYWNrVXNXVUZCVHl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOYUxHRkJRVkVzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEWWl4cFFrRkJXU3hIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU5xUWl4dFFrRkJZeXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU51UWl3d1FrRkJjVUlzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTXpRaXcwUWtGQmRVSXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNM1FpeHRRa0ZCWXl4SFFVRkhMRVZCUVVVc1EwRkJRenRSUVVOd1Fpd3dRa0ZCY1VJc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU51UXl4eFFrRkJaMElzUjBGQlJ5eExRVUZMTEVOQlFVTTdVVUZMZGtJc1NVRkJTU3hQUVVGUExFZEJRVWNzUzBGQlN5eFJRVUZSTEVWQlFVVTdXVUZETTBJc1RVRkJUU3hOUVVGTkxFZEJRVWNzUjBGQlJ5eERRVUZETzFsQlEyNUNMRTFCUVUwc1NVRkJTU3hIUVVGSExGRkJRVkVzUTBGQlF5eGhRVUZoTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1dVRkROVU1zU1VGQlNTeFpRVUZaTEVWQlFVVTdaMEpCUTJoQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlR0dlFrRkRiRU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8yRkJRMmhDTzFsQlEwUXNTVUZCU1N4RFFVRkRMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU03V1VGRGJFSXNTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhOUVVGTkxFTkJRVU03VTBGRGRrSTdZVUZCVFN4SlFVRkpMRWRCUVVjc1dVRkJXU3hYUVVGWExFVkJRVVU3V1VGRGNrTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1IwRkJSeXhIUVVGclFpeERRVUZETzFsQlEyaERMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzV1VGQmMwSXNRMEZCUXp0VFFVTjJRenRoUVVGTk8xbEJRMHdzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4eFFrRkJjVUlzUTBGQlF5eERRVUZETzFOQlEzaERPMGxCUTBnc1EwRkJRenRKUVVkRUxGVkJRVlVzUzBGQlN5eFBRVUZQTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJSVzVETEZWQlFWVXNRMEZCUXl4SFFVRlhMRVZCUVVVc1QwRkJaVHRSUVVOeVF5eEpRVUZKTEVkQlFVY3NSMEZCUnl4RFFVRkRPMWxCUVVVc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eEhRVUZITEU5QlFVOHNPRUpCUVRoQ0xFTkJRVU1zUTBGQlF6dEpRVU42UlN4RFFVRkRPMGxCUlVRc1lVRkJZU3hEUVVGRExFdEJRV0VzUlVGQlJTeEhRVUZYTEVWQlFVVXNSMEZCVnl4RlFVRkZMRTlCUVdVN1VVRkRjRVVzU1VGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEhRVUZITEVOQlFVTTdXVUZEYUVNc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eFpRVUZaTEU5QlFVOHNTMEZCU3l4TFFVRkxMRzFDUVVGdFFpeEhRVUZITEV0QlFVc3NSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVOd1JpeERRVUZETzBsQlJVUXNTVUZCU1N4RFFVRkRMRWRCUVdkQ0xFVkJRVVVzUjBGQlowSXNSVUZCUlN4TFFVRmhPMUZCUTNCRUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhMUVVGTExFVkJRVVVzUTBGQlF5eEZRVUZGTzFsQlF6VkNMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRjRUlzUTBGQlF6dEpRVVZFTEZGQlFWRXNRMEZCUXl4TFFVRmxPMUZCUTNSQ0xFbEJRVWtzU1VGQlNTeERRVUZETEU5QlFVOHNTVUZCU1N4TFFVRkxMRU5CUVVNc1QwRkJUenRaUVVNdlFpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRzFDUVVGdFFpeEpRVUZKTEVOQlFVTXNUMEZCVHl4UFFVRlBMRXRCUVVzc1EwRkJReXhQUVVGUExFZEJRVWNzUTBGQlF5eERRVUZETzFGQlF6RkZMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEV0QlFVc3NSVUZCUlN4SlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVGRkxFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXp0UlFVTjBSQ3hKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdTVUZEYkVJc1EwRkJRenRKUVVWRUxFbEJRVWtzVFVGQlRUdFJRVU5TTEU5QlFVOHNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJRenRKUVVOMFFpeERRVUZETzBsQlJVUXNTVUZCU1N4TlFVRk5PMUZCUTFJc1QwRkJUeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETzBsQlEzQkNMRU5CUVVNN1NVRkZSQ3hKUVVGSkxFMUJRVTBzUTBGQlF5eEpRVUZwUWp0UlFVTXhRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVTnNRaXhKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdTVUZEYkVJc1EwRkJRenRKUVVWRUxFbEJRVWtzVDBGQlR6dFJRVU5VTEU5QlFVOHNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJRenRKUVVOMlFpeERRVUZETzBsQlJVUXNTVUZCU1N4UFFVRlBMRU5CUVVNc1MwRkJZVHRSUVVOMlFpeEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRXRCUVVzc1EwRkJRenRKUVVONFFpeERRVUZETzBsQlJVUXNaMEpCUVdkQ0xFTkJRVU1zVFVGQlRTeEhRVUZITEVsQlFVazdVVUZETlVJc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETzBsQlEyeENMRU5CUVVNN1NVRkZSQ3hKUVVGSkxGbEJRVms3VVVGRFpDeFBRVUZQTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE8wbEJRMnhFTEVOQlFVTTdTVUZGUkN4SlFVRkpMR0ZCUVdFN1VVRkRaaXhQUVVGUExFbEJRVWtzUTBGQlF5eFJRVUZSTEVsQlFVa3NTVUZCU1N4RFFVRkRMSEZDUVVGeFFpeERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTTdTVUZEYUVZc1EwRkJRenRKUVVWRUxFbEJRVWtzWVVGQllTeERRVUZETEVsQlFWazdVVUZETlVJc1NVRkJTU3hEUVVGRExHTkJRV01zUjBGQlJ5eEpRVUZKTEVOQlFVTTdVVUZETTBJc1NVRkJTU3hEUVVGRExIRkNRVUZ4UWl4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU03U1VGRE4wTXNRMEZCUXp0SlFVVkVMRWxCUVVrc1NVRkJTVHRSUVVOT0xFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyUXNRMEZCUXp0SlFVVkVMRk5CUVZNc1EwRkJReXhMUVVGaE8xRkJRM0pDTEVsQlFVa3NTMEZCU3l4SFFVRkhMRU5CUVVNN1dVRkRXQ3hOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU03VVVGRmNFTXNTVUZCU1N4TFFVRkxMRWxCUVVrc1NVRkJTU3hEUVVGRExFOUJRVTg3V1VGQlJTeFBRVUZQTzFGQlEyeERMRTFCUVUwc1YwRkJWeXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTTdVVUZEZEVRc1NVRkJTU3hEUVVGRExGZEJRVmNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eFhRVUZYTEVkQlFVY3NTVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJUdFpRVU53Unl4TlFVRk5MRTlCUVU4c1IwRkJSeXhKUVVGSkxGZEJRVmNzUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXp0WlFVTTNReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVc1QwRkJUeXhGUVVGRkxFTkJRVU1zVjBGQlZ5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXp0WlFVTndSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZITEU5QlFVOHNRMEZCUXp0VFFVTjBRanRSUVVWRUxFbEJRVWtzUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVN1dVRkRlRUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRWxCUVVrc1IwRkJSeXhEUVVGRE8yZENRVU42UWl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkZha1lzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eFpRVUZaTEVWQlFVVXNWMEZCVnl4RFFVRkRMRU5CUVVNN1UwRkRjRVE3VVVGRFJDeEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRXRCUVVzc1EwRkJRenRSUVVOeVFpeEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1NVRkRiRUlzUTBGQlF6dEpRVVZFTEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJZeXhGUVVGRkxFbEJRV003VVVGRE0wTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhKUVVGSkxFbEJRVWtzUTBGQlF5eFBRVUZQTzFsQlF6bENMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zYlVKQlFXMUNMRWxCUVVrc1EwRkJReXhQUVVGUExFOUJRVThzU1VGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkZla1VzVFVGQlRTeEpRVUZKTEVkQlFVY3NTVUZCU1N4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzFGQlEzaERMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXp0UlFVTTFRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZITEZGQlFWRXNRMEZCUXl4aFFVRmhMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzFGQlEyeEVMRWxCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzUTBGQlF5eERRVUZETzFGQlJXeENMRTFCUVUwc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTTdVVUZET1VJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVU3V1VGRE1VSXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkZhRVFzVDBGQlR5eEpRVUZKTEVOQlFVTTdTVUZEWkN4RFFVRkRPMGxCUlU4c1RVRkJUU3hEUVVGRExHRkJRV0VzUTBGQlF5eE5RVUZqTzFGQlEzcERMRTlCUVU4c1NVRkJTU3hYUVVGWExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUXpkRUxFTkJRVU03U1VGRlJDeE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRMRTFCUVhOQ08xRkJRM1JETEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1VVRkJVU3hEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0UlFVTjZReXhKUVVGSkxFTkJRVU1zVVVGQlVTeEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVVnNRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0WlFVTnlReXhKUVVGSkxFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUTFnc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRPMU5CUTJoRk8xRkJRMFFzVDBGQlR5eEpRVUZKTEVOQlFVTTdTVUZEWkN4RFFVRkRPMGxCUlVRc2MwZEJRWE5ITzBsQlEzUkhMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zUzBGQllTeEZRVUZGTEVsQlFXTTdVVUZETVVNc1RVRkJUU3hKUVVGSkxFZEJRVWNzU1VGQlNTeFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkRha01zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFdEJRVXNzUlVGQlJTeEZRVUZGTEVOQlFVTTdXVUZETlVJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRk1VSXNTVUZCU1N4RFFVRkRMRkZCUVZFc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGJFSXNUMEZCVHl4SlFVRkpMRU5CUVVNN1NVRkRaQ3hEUVVGRE8wbEJSVVFzYTBWQlFXdEZPMGxCUTJ4RkxFMUJRVTBzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCVXp0UlFVTjZRaXhQUVVGUExGRkJRVkVzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFTkJRVk1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXp0SlFVTjJSU3hEUVVGRE8wbEJSVVFzTkVWQlFUUkZPMGxCUXpWRkxFMUJRVTBzUTBGQlF5eGxRVUZsTEVOQlFVTXNUMEZCWlN4RlFVRkZMRXRCUVd0Q08xRkJRM2hFTEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1VVRkJVU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzFGQlEyNURMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzUzBGQlN5eERRVUZETzFGQlEyNUNMRTlCUVU4c1NVRkJTU3hEUVVGRE8wbEJRMlFzUTBGQlF6dEpRVVZFTEhsRFFVRjVRenRKUVVONlF5eE5RVUZOTEVOQlFVTXNVMEZCVXl4RFFVRkRMRXRCUVdsQ08xRkJRMmhETEUxQlFVMHNSMEZCUnl4SFFVRkhMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGRGVrSXNUVUZCVFN4SlFVRkpMRWRCUVVjc1NVRkJTU3hSUVVGUkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTI1RExFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NTVUZCU1N4WFFVRlhMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzaEVMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTjJRaXhKUVVGSkxFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEWWl4SlFVRkpMRWxCUVVrc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRllpeFBRVUZQTEVOQlFVTXNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJUdFpRVU40UWl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEVkQlFVY3NRMEZEYmtJc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRlRVFzUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRU5CUTI1RExFZEJRVWNzUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRU5CUVVNN1dVRkZka01zU1VGQlNTeEpRVUZKTEVOQlFVTXNRMEZCUXp0VFFVTllPMUZCUlVRc1NVRkJTU3hIUVVGSExFZEJRVWNzU1VGQlNTeEpRVUZKTEVOQlFVTTdXVUZEYWtJc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRE8xRkJSWFJFTEVsQlFVa3NSMEZCUnl4SFFVRkhMRWxCUVVrc1NVRkJTU3hEUVVGRE8xbEJRMnBDTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVVndSQ3hKUVVGSkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVsQlFVa3NRMEZCUXp0WlFVTnFRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTTdVVUZGZWtNc1NVRkJTU3hEUVVGRExGRkJRVkVzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEYkVJc1QwRkJUeXhKUVVGSkxFTkJRVU03U1VGRFpDeERRVUZETzBsQlJVUXNVVUZCVVR0UlFVTk9MRTlCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eFZRVUZWTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF6dEpRVU0zUkN4RFFVRkRPMGxCUlVRc05FTkJRVFJETzBsQlF6VkRMRTFCUVUwc1EwRkJReXhMUVVGbE8xRkJRM0JDTEVsQlFVa3NTVUZCU1N4SlFVRkpMRXRCUVVzN1dVRkJSU3hQUVVGUExFbEJRVWtzUTBGQlF6dFJRVU12UWl4SlFVRkpMRXRCUVVzc1NVRkJTU3hKUVVGSk8xbEJRVVVzVDBGQlR5eExRVUZMTEVOQlFVTTdVVUZEYUVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR5eEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBPMWxCUVVVc1QwRkJUeXhMUVVGTExFTkJRVU03VVVGRGFFUXNTVUZCU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhKUVVGSkxFTkJRVU03V1VGQlJTeFBRVUZQTEVsQlFVa3NRMEZCUXp0UlFVVnVReXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSVHRaUVVNMVF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRVVVzVDBGQlR5eExRVUZMTEVOQlFVTTdVVUZGY0VRc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0WlFVTXZSQ3hKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUTI1RExFOUJRVThzUzBGQlN5eERRVUZETzFOQlEyaENPMUZCUTBRc1QwRkJUeXhKUVVGSkxFTkJRVU03U1VGRFpDeERRVUZETzBsQlJVUXNkVUpCUVhWQ08wbEJRM1pDTEV0QlFVczdVVUZEU0N4TlFVRk5MRkZCUVZFc1IwRkJSeXhKUVVGSkxGRkJRVkVzUTBGQlF5eERRVUZETEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkRlRU1zVVVGQlVTeERRVUZETEV0QlFVc3NSMEZCUnl4WFFVRlhMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRzFEUVVGdFF6dFJRVU5zUml4UlFVRlJMRU5CUVVNc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTTdVVUZEYUVNc1VVRkJVU3hEUVVGRExGRkJRVkVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRPMUZCUTJ4RExFOUJRVThzVVVGQlVTeERRVUZETzBsQlEyeENMRU5CUVVNN1NVRkZSQ3cwUWtGQk5FSTdTVUZETlVJc1NVRkJTU3hEUVVGRExFbEJRV01zUlVGQlJTeE5RVUZsTzFGQlEyeERMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMUZCUlRGQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMWxCUTNKRExFbEJRVWtzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRWQ3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNN1UwRkRhRVU3VVVGRlJDeEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdVVUZET1VJc1QwRkJUeXhKUVVGSkxFTkJRVU03U1VGRFpDeERRVUZETzBsQlJVUXNjVUpCUVhGQ08wbEJRM0pDTEUxQlFVMHNRMEZCUXl4TlFVRk5MRWRCUVVjc1NVRkJTVHRSUVVOc1FpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRk8xbEJRM2hETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZGZEVJc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wbEJRMmhETEVOQlFVTTdTVUZGUkN4dFJVRkJiVVU3U1VGRGJrVXNUVUZCVFN4RFFVRkRMRXRCUVdNc1JVRkJSU3hOUVVGTkxFZEJRVWNzUzBGQlN6dFJRVU51UXl4TlFVRk5MRXRCUVVzc1IwRkJSeXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRE4wSXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF6dFJRVVU1UWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NSMEZCUnl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRkxHZENRVUZuUWp0WlFVTTFReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJRenRSUVVWNFFpeEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTVUZEYUVNc1EwRkJRenRKUVVWRUxDdERRVUVyUXp0SlFVTXZReXc0UTBGQk9FTTdTVUZET1VNc2QwUkJRWGRFTzBsQlEzaEVMRlZCUVZVc1EwRkJReXhQUVVGelFpeEZRVUZGTEV0QlFVc3NSMEZCUnl4SlFVRkpMRVZCUVVVc1MwRkJTeXhIUVVGSExFbEJRVWtzUlVGQlJTeE5RVUZOTEVkQlFVY3NTVUZCU1R0UlFVTXhSU3hKUVVGSkxFdEJRVXM3V1VGRFVDeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzFGQlJUZENMRXRCUVVzc1RVRkJUU3hEUVVGRExFbEJRVWtzVDBGQlR6dFpRVU55UWl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0UlFVVjZRaXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRGFFTXNRMEZCUXp0SlFVVkVMRlZCUVZVc1EwRkJReXhQUVVGelFpeEZRVUZGTEV0QlFVc3NSMEZCUnl4SlFVRkpPMUZCUXpkRExFdEJRVXNzVFVGQlRTeExRVUZMTEVsQlFVa3NUMEZCVHl4RlFVRkZPMWxCUXpOQ0xFbEJRVWtzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hMUVVGTE8yZENRVU0zUWl4UFFVRlBMRXRCUVVzc1EwRkJRenRUUVVOb1FqdFJRVU5FTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJRc1EwRkJRenRKUVVWRUxGRkJRVkVzUTBGQlF5eFBRVUZ6UWl4RlFVRkZMRXRCUVVzc1IwRkJSeXhKUVVGSk8xRkJRek5ETEV0QlFVc3NUVUZCVFN4TFFVRkxMRWxCUVVrc1QwRkJUeXhGUVVGRk8xbEJRek5DTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeExRVUZMTzJkQ1FVTTNRaXhQUVVGUExFbEJRVWtzUTBGQlF6dFRRVU5tTzFGQlEwUXNUMEZCVHl4TFFVRkxMRU5CUVVNN1NVRkRaaXhEUVVGRE8wbEJSVVFzVVVGQlVTeERRVUZETEV0QlFXVXNSVUZCUlN4TFFVRkxMRWRCUVVjc1NVRkJTU3hGUVVGRkxFdEJRVXNzUjBGQlJ5eEpRVUZKTEVWQlFVVXNUVUZCVFN4SFFVRkhMRWxCUVVrc1JVRkJSU3hWUVVGVkxFZEJRVWNzU1VGQlNUdFJRVU53Uml4SlFVRkpMRXRCUVVzc1NVRkJTU3hWUVVGVk8xbEJRM0pDTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhMUVVGTExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdVVUZGTjBJc1NVRkJTU3hWUVVGVkxFVkJRVVU3V1VGRFpDeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRuUWtGRGNrTXNTVUZCU1N4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVU5XTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzJGQlF6RkNPMU5CUTBZN1lVRkJUVHRaUVVOTUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTXNSVUZCUlR0blFrRkRia01zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdVMEZET1VNN1VVRkZSQ3hKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRGFFTXNRMEZCUXp0SlFVVkVMRkZCUVZFc1EwRkJReXhKUVVGWkxFVkJRVVVzUlVGQlZUdFJRVU12UWl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhEUVVGRExFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdVVUZEZEVRc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhQUVVGUExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdVVUZET1VNc1RVRkJUU3hIUVVGSExFZEJRVzFDTEVWQlFVVXNRMEZCUXp0UlFVTXZRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVsQlFVa3NSVUZCUlN4RFFVRkRMRWRCUVVjc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF6dFpRVU0xUWl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNelFpeFBRVUZQTEZGQlFWRXNRMEZCUXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03U1VGRGJFTXNRMEZCUXp0SlFVVkVMR05CUVdNc1EwRkJReXhKUVVGWkxFVkJRVVVzUlVGQlZUdFJRVU55UXl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhEUVVGRExFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdVVUZEZEVRc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhQUVVGUExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdVVUZET1VNc1RVRkJUU3hIUVVGSExFZEJRV01zUlVGQlJTeERRVUZETzFGQlF6RkNMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzU1VGQlNTeEZRVUZGTEVOQlFVTXNSMEZCUnl4RlFVRkZMRVZCUVVVc1JVRkJSU3hEUVVGRE8xbEJRelZDTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpOQ0xFOUJRVThzUjBGQlJ5eERRVUZETzBsQlEySXNRMEZCUXp0SlFVZEVMRkZCUVZFc1EwRkJReXhKUVVGWkxFVkJRVVVzUlVGQlZTeEZRVUZGTEV0QlFXTXNSVUZCUlN4TlFVRk5MRWRCUVVjc1NVRkJTVHRSUVVNNVJDeEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4RFFVRkRMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU03VVVGRGRFUXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzFGQlJXeEVMRTFCUVUwc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJRMnBETEUxQlFVMHNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUlM5Q0xHZENRVUZuUWp0UlFVTm9RaXhKUVVGSkxFdEJRVXNzUlVGQlJUdFpRVU5VTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1MwRkJTeXhGUVVGRkxFTkJRVU1zU1VGQlNTeEhRVUZITEVWQlFVVXNRMEZCUXl4RlFVRkZPMmRDUVVNdlFpeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRMjVDTzJGQlFVMDdXVUZEVEN4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFdEJRVXNzUlVGQlJTeERRVUZETEVsQlFVa3NSMEZCUnl4RlFVRkZMRU5CUVVNc1JVRkJSVHRuUWtGREwwSXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU53UWp0UlFVVkVMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRSUVVNNVFpeFBRVUZQTEVsQlFVa3NRMEZCUXp0SlFVTmtMRU5CUVVNN1NVRkZSQ3h0UlVGQmJVVTdTVUZEYmtVc1UwRkJVeXhEUVVGRExFTkJRVk1zUlVGQlJTeExRVUZqTEVWQlFVVXNUVUZCVFN4SFFVRkhMRWxCUVVrN1VVRkRhRVFzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR6dFpRVU16UWl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExEUkNRVUUwUWl4RFFVRkRMRU5CUVVNN1VVRkZhRVFzU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhEUVVGRE8xbEJRM1JDTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRSUVVVelF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRmNFSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnp0WlFVTjBRaXhOUVVGTkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1dVRkRia1FzU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFdEJRVXM3WjBKQlFVVXNVMEZCVXp0WlFVTjBReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRaUVVOMlFpeERRVUZETEVWQlFVVXNRMEZCUXp0VFFVTk1PMUZCUlVRc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wbEJRMmhETEVOQlFVTTdTVUZGUkN3clJVRkJLMFU3U1VGREwwVXNiVVJCUVcxRU8wbEJRMjVFTEVkQlFVY3NRMEZCUXl4TFFVRmxMRVZCUVVVc1RVRkJUU3hIUVVGSExFbEJRVWs3VVVGRGFFTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTzFsQlF5OUNMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zZFVKQlFYVkNMRU5CUVVNc1EwRkJRenRSUVVVelF5eExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEZsQlFWa3NSVUZCUlN4RFFVRkRMRWRCUVVjc1IwRkJSeXhGUVVGRkxFTkJRVU1zUlVGQlJUdFpRVU51UkN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRmJFTXNTVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMUZCUXpsQ0xFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyUXNRMEZCUXp0SlFVVkVMR2RHUVVGblJqdEpRVU5vUml3clJFRkJLMFE3U1VGREwwUXNUVUZCVFN4RFFVRkRMRXRCUVdVc1JVRkJSU3hOUVVGTkxFZEJRVWNzU1VGQlNUdFJRVU51UXl4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFbEJRVWtzUzBGQlN5eERRVUZETEU5QlFVODdXVUZETDBJc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eDFRa0ZCZFVJc1EwRkJReXhEUVVGRE8xRkJSVE5ETEUxQlFVMHNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU03VVVGRE9VSXNTMEZCU3l4SlFVRkpMRWxCUVVrc1IwRkJSeXhEUVVGRExFVkJRVVVzU1VGQlNTeEhRVUZITEVkQlFVY3NSVUZCUlN4SlFVRkpMRVZCUVVVN1dVRkRia01zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkZla01zU1VGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzFGQlF6bENMRTlCUVU4c1NVRkJTU3hEUVVGRE8wbEJRMlFzUTBGQlF6dEpRVVZFTEdkR1FVRm5SanRKUVVOb1Jpd3JSRUZCSzBRN1NVRkRMMFFzVFVGQlRTeERRVUZETEV0QlFXVXNSVUZCUlN4TlFVRk5MRWRCUVVjc1NVRkJTVHRSUVVOdVF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWxCUVVrc1MwRkJTeXhEUVVGRExFOUJRVTg3V1VGREwwSXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXgxUWtGQmRVSXNRMEZCUXl4RFFVRkRPMUZCUlRORExFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zV1VGQldTeEZRVUZGTEVOQlFVTXNSMEZCUnl4SFFVRkhMRVZCUVVVc1EwRkJReXhGUVVGRk8xbEJRMjVFTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSWEJFTEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0UlFVTTVRaXhQUVVGUExFbEJRVWtzUTBGQlF6dEpRVU5rTEVOQlFVTTdTVUZGUkN4blJFRkJaMFE3U1VGRGFFUXNSMEZCUnl4RFFVRkRMRTFCUVUwc1IwRkJSeXhKUVVGSk8xRkJRMllzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eFpRVUZaTEVWQlFVVXNRMEZCUXl4SFFVRkhMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVU3V1VGRGJrUXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRmFrTXNTVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMUZCUXpsQ0xFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyUXNRMEZCUXp0SlFVVkVMREpGUVVFeVJUdEpRVU16UlN3clJFRkJLMFE3U1VGREwwUXNSVUZCUlN4RFFVRkRMRXRCUVdVc1JVRkJSU3hOUVVGTkxFZEJRVWNzU1VGQlNUdFJRVU12UWl4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFbEJRVWtzUzBGQlN5eERRVUZETEU5QlFVODdXVUZETDBJc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eDFRa0ZCZFVJc1EwRkJReXhEUVVGRE8xRkJSVE5ETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RlFVRkZMRU5CUVVNc1IwRkJSeXhIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZGTzFsQlEyNUVMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVVZzUXl4SlFVRkpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1VVRkRPVUlzVDBGQlR5eEpRVUZKTEVOQlFVTTdTVUZEWkN4RFFVRkRPMGxCUlVRc2NVWkJRWEZHTzBsQlEzSkdMQ3RFUVVFclJEdEpRVU12UkN4SFFVRkhMRU5CUVVNc1MwRkJaU3hGUVVGRkxFMUJRVTBzUjBGQlJ5eEpRVUZKTzFGQlEyaERMRWxCUVVrc1NVRkJTU3hEUVVGRExFOUJRVThzU1VGQlNTeExRVUZMTEVOQlFVTXNUMEZCVHp0WlFVTXZRaXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEhWQ1FVRjFRaXhEUVVGRExFTkJRVU03VVVGRk0wTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMRVZCUVVVc1EwRkJReXhIUVVGSExFZEJRVWNzUlVGQlJTeERRVUZETEVWQlFVVTdXVUZEYmtRc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJXeERMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRSUVVNNVFpeFBRVUZQTEVsQlFVa3NRMEZCUXp0SlFVTmtMRU5CUVVNN1NVRkZSQ3h2UmtGQmIwWTdTVUZEY0VZc1VVRkJVU3hEUVVGRExFZEJRVmNzUlVGQlJTeERRVUZUTEVWQlFVVXNTVUZCU1N4SFFVRkhMRXRCUVVzN1VVRkRNME1zU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkZhRVFzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXp0WlFVRkZMRTlCUVU4N1VVRkZia0lzWjBKQlFXZENPMUZCUTJoQ0xIVkVRVUYxUkR0UlFVVjJSQ3hwUWtGQmFVSTdVVUZEYWtJc1RVRkJUU3hUUVVGVExFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXp0UlFVTXZRaXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRmFrTXNaMFJCUVdkRU8xRkJSV2hFTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1UwRkJVeXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVsQlFVa3NSMEZCUnl4RlFVRkZMRU5CUVVNc1JVRkJSVHRaUVVOMlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSWEpETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1IwRkJSeXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSVHRaUVVOb1F5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVVYyUWl4bFFVRmxPMGxCUTJwQ0xFTkJRVU03U1VGRlJDeHJSa0ZCYTBZN1NVRkRiRVlzZFVKQlFYVkNPMGxCUTNaQ0xGRkJRVkVzUTBGQlF5eEhRVUZYTEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNN1VVRkRla0lzZDBSQlFYZEVPMUZCUTNoRUxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTTdXVUZEVUN4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExITkNRVUZ6UWl4RFFVRkRMRU5CUVVNN1VVRkZNVU1zU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NRMEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8xRkJSWEJFTEVsQlFVa3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJUdFpRVU4yUWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFZEJRVWNzUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTzJkQ1FVTjZReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMU5CUTNSRE8xRkJSVVFzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEyNURMRU5CUVVNN1NVRkZSQ3haUVVGWkxFTkJRVU1zU1VGQll5eEZRVUZGTEVsQlFVa3NSMEZCUnl4SlFVRkpPMUZCUTNSRExFbEJRVWtzU1VGQlNTeERRVUZETEU5QlFVOHNTVUZCU1N4SlFVRkpMRU5CUVVNc1RVRkJUVHRaUVVNM1FpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMSFZDUVVGMVFpeERRVUZETEVOQlFVTTdVVUZGTTBNc1NVRkJTU3hKUVVGSkxFbEJRVWtzU1VGQlNTeEZRVUZGTEVWQlFVVXNjVUpCUVhGQ08xbEJRM1pETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRkRU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xTkJRM0JDTzJGQlFVMDdXVUZEVEN4SlFVRkpMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRlppeExRVUZMTEVsQlFVa3NUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJRMnBGTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hGUVVGRkxFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJSVGxETEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1RVRkJUU3hEUVVGRE8xbEJRM1JDTEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJRenRUUVVOcVFqdFJRVVZFTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJRc1EwRkJRenRKUVVWRUxDdENRVUVyUWp0SlFVTXZRaXhOUVVGTkxFTkJRVU1zUjBGQlZ6dFJRVU5vUWl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1NVRkRla1VzUTBGQlF6dEpRVVZFTEN0Q1FVRXJRanRKUVVNdlFpeE5RVUZOTEVOQlFVTXNSMEZCVnl4RlFVRkZMRWRCUVZrc1JVRkJSU3hOUVVGTkxFZEJRVWNzU1VGQlNUdFJRVU0zUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTjJRaXhKUVVGSkxFMUJRVTA3V1VGRFVpeEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN08xbEJSV2hDTEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJRenRKUVVOd1FpeERRVUZETzBsQlJVUXNhVVpCUVdsR08wbEJRMnBHTEU5QlFVOHNRMEZCUXl4RFFVRlRMRVZCUVVVc1MwRkJZenRSUVVNdlFpeEpRVUZKTEV0QlFVczdXVUZEVUN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE96dFpRVVZ3UkN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlF6TkVMRU5CUVVNN1NVRkZSQ3hQUVVGUExFTkJRVU1zUjBGQlZ6dFJRVU5xUWl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE8wbEJRekZFTEVOQlFVTTdTVUZGUkN4UlFVRlJMRU5CUVVNc1IwRkJWenRSUVVOc1FpeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRemRFTEVOQlFVTTdTVUZGUkN4VFFVRlRPMUZCUTFBc1QwRkJUeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMGxCUXpsQ0xFTkJRVU03U1VGRlJDeFZRVUZWTzFGQlExSXNUMEZCVHl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzBsQlF5OUNMRU5CUVVNN1NVRkZSQ3gxUTBGQmRVTTdTVUZEZGtNc1UwRkJVeXhEUVVGRExFdEJRV003VVVGRGRFSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhKUVVGSkxFTkJRVU03V1VGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXp0UlFVVm9ReXhKUVVGSkxFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJc1NVRkJTU3hKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTzFsQlF5OURMRWxCUVVrc1EwRkJReXhqUVVGakxFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEzaENMRTFCUVUwc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTTdXVUZET1VJc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlExWXNUMEZCVHl4RFFVRkRMRWRCUVVjc1IwRkJSeXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0blFrRkRka0lzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeEZRVUZGTERSQ1FVRTBRanR2UWtGRE1VVXNTVUZCU1N4RFFVRkRMR05CUVdNc1NVRkJTU3hSUVVGUkxFTkJRVU1zVjBGQlZ5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJRenRwUWtGRGRrUTdZVUZEUmp0WlFVVkVMR2RDUVVGblFqdFpRVU5vUWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNSQ0xFMUJRVTBzWVVGQllTeEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRE8xbEJRekZETEVsQlFVa3NZVUZCWVN4SlFVRkpMRU5CUVVNc1JVRkJSU3g1UmtGQmVVWTdaMEpCUXk5SExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4VlFVRlZMRU5CUVVNc1NVRkJTU3hoUVVGaExFTkJRVU1zUTBGQlF6dFpRVVY0UXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlFVTTdaMEpCUTNKQ0xFbEJRVWtzUTBGQlF5eGpRVUZqTEVsQlFVa3NVVUZCVVN4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTTdXVUZGZUVRc1NVRkJTU3hEUVVGRExIRkNRVUZ4UWl4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU03VTBGRE5VTTdVVUZGUkN4UFFVRlBMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1EwRkJRenRKUVVNMVJTeERRVUZETzBsQlJVUXNNa1JCUVRKRU8wbEJRek5FTEZWQlFWVXNRMEZCUXl4TFFVRmxPMUZCUTNoQ0xFbEJRVWtzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTm1MRWxCUVVrc1NVRkJTU3hEUVVGRExGTkJRVk1zUlVGQlJTeEpRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVN1dVRkRjRU1zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXl4RlFVRkZPMmRDUVVOdVF5eE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRUUVVNNVFqdGhRVUZOTzFsQlEwd3NTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRuUWtGRGFrUXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VTBGRE9VSTdVVUZEUkN4UFFVRlBMRTFCUVUwc1EwRkJRenRKUVVOb1FpeERRVUZETzBsQlJVUXNNa1pCUVRKR08wbEJRek5HTEdkQ1FVRm5RaXhEUVVGRExFMUJRV2RDTEVWQlFVVXNTMEZCWXp0UlFVTXZReXhKUVVGSkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVsQlFVa3NRMEZCUXp0WlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRE8xRkJSV2hETEVsQlFVa3NTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOa0xFMUJRVTBzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNN1VVRkRPVUlzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTFZc1QwRkJUeXhEUVVGRExFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVOMlFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1RVRkJUU3hEUVVGRE8yZENRVU0xUkN4TFFVRkxMRWxCUVVrc1VVRkJVU3hEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNN1UwRkRNME03VVVGRlJDeG5Ra0ZCWjBJN1VVRkRhRUlzU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM2hETEUxQlFVMHNZVUZCWVN4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETzFGQlF6RkRMRWxCUVVrc1lVRkJZU3hKUVVGSkxFTkJRVU03V1VGRGNFSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExGVkJRVlVzUTBGQlF5eEpRVUZKTEdGQlFXRXNRMEZCUXl4RFFVRkRPMUZCUTNoRExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJRenRaUVVOeVFpeExRVUZMTEVsQlFVa3NVVUZCVVN4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTTdVVUZGTVVNc1QwRkJUeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRPMGxCUTJoRUxFTkJRVU03U1VGRlJDeExRVUZMTzFGQlEwZ3NTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU53UWl4RFFVRkRPMGxCUlVRc1VVRkJVU3hEUVVGRExFdEJRV003VVVGRGNrSXNUMEZCVHl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVOMlF5eERRVUZETzBsQlJVUXNTVUZCU1N4UFFVRlBPMUZCUTFRc1QwRkJUeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU03U1VGRE9VTXNRMEZCUXp0SlFVVkVMRWxCUVVrc1VVRkJVVHRSUVVOV0xFOUJRVThzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETzBsQlF5OURMRU5CUVVNN1NVRkZSQ3hKUVVGSkxFOUJRVTg3VVVGRFZDeFBRVUZQTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlEyeERMRU5CUVVNN1NVRkZSQ3hKUVVGSkxGRkJRVkU3VVVGRFZpeFBRVUZQTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlEyNURMRU5CUVVNN1NVRkZSQ3h6UjBGQmMwYzdTVUZEZEVjc01FTkJRVEJETzBsQlF6RkRMRkZCUVZFc1EwRkJReXhMUVVGaExFVkJRVVVzUzBGQlN5eEhRVUZITEVsQlFVazdVVUZEYkVNc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXp0UlFVVnlSQ3hKUVVGSkxFdEJRVXNzU1VGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRU5CUVVNN1dVRkJSU3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzcERMRXRCUVVzc1IwRkJSeXhMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4aFFVRmhPMUZCUTJoRUxFbEJRVWtzVlVGQlZTeEhRVUZITEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNN1VVRkRPVUlzVFVGQlRTeFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJRenRSUVVWc1F5eExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eEhRVUZITEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhQUVVGUExFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZEY2tRc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1dVRkJXVHRaUVVNNVJDeEpRVUZKTEZWQlFWVXNTVUZCU1N4RFFVRkRMRVZCUVVVN1owSkJRMjVDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1ZVRkJWU3hKUVVGSkxGVkJRVlVzUTBGQlF5eEhRVUZITEZWQlFWVXNRMEZCUXl4RFFVRkRPMmRDUVVNdlF5eFZRVUZWTEVkQlFVY3NRMEZCUXl4RFFVRkRPMkZCUTJoQ08ybENRVUZOTEVsQlFVa3NRMEZCUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlZTeEZRVUZGTEhsRFFVRjVReXhEUVVGQk8yZENRVU01UlN4VFFVRlRPMkZCUTFZN1dVRkZSQ3hMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSVHRuUWtGRGVFTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1VVRkJVU3hEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJRM3BETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSVHR2UWtGRFZpeExRVUZMTEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0dlFrRkRla0lzU1VGQlNTeExRVUZMTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4N2QwSkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRja01zVDBGQlR5eExRVUZMTEVOQlFVTTdhVUpCUTJRN1lVRkRSanRUUVVOR08xRkJRMFFzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTmFMRU5CUVVNN1NVRkZSQ3cwUkVGQk5FUTdTVUZETlVRc1VVRkJVU3hEUVVGRExFdEJRV0VzUlVGQlJTeExRVUZMTEVkQlFVY3NTVUZCU1R0UlFVTnNReXhKUVVGSkxFdEJRVXNzU1VGQlNTeERRVUZETzFsQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNeFFpeEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRE8xRkJSWEpFTEV0QlFVc3NSMEZCUnl4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMR0ZCUVdFN1VVRkZMMFFzVFVGQlRTeFZRVUZWTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTTdVVUZETlVNc1NVRkJTU3hoUVVGaExFZEJRVWNzUTBGQlF5eExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRE8xRkJSWFpETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1ZVRkJWU3hGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1dVRkRjRU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVDBGQlR6dFpRVU42UkN4SlFVRkpMR0ZCUVdFc1NVRkJTU3hEUVVGRExFVkJRVVU3WjBKQlEzUkNMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4aFFVRmhMRU5CUVVNc1EwRkJRenRuUWtGRGRFTXNZVUZCWVN4SFFVRkhMRU5CUVVNc1EwRkJRenRoUVVOdVFqdFpRVU5FTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1JVRkJSU3hGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFdEJRVXNzUTBGQlF5eEZRVUZGTzJkQ1FVTjRReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eFJRVUZSTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUTBGQlF6dG5Ra0ZETVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF6dHZRa0ZEVWl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1lVRkRNMEk3VTBGRFJqdFJRVU5FTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRXaXhEUVVGRE96dEJRWEoxUWswc2IwSkJRVmNzUjBGQlJ5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRPMGxCUTJ4RExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTTdTVUZET1VNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dEpRVU01UXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRE8wbEJRemxETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1NVRkRPVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXp0SlFVTTVReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzBsQlF6bERMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU03U1VGRE9VTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJRenRKUVVNNVF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXpsRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTTdTVUZET1VNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dEpRVU01UXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRE8wbEJRemxETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1NVRkRPVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXp0SlFVTTVReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzBsQlF6bERMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU03UTBGQlF5eERRVUZETEVOQlFVTTdRVUZGTlVNc2IwSkJRVmNzUjBGQlJ5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRPMGxCUTJ4RExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXp0SlFVTXZReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzBsQlF6bERMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU03U1VGRE9VTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJRenRKUVVNNVF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXpsRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTTdTVUZET1VNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dEpRVU01UXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRE8wbEJRemxETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1NVRkRPVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXp0SlFVTTVReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzBsQlF6bERMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU03U1VGRE9VTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJRenRKUVVNNVF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXpsRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTTdTVUZET1VNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dERRVUZETEVOQlFVTXNRMEZCUXp0QlFVVTFReXh0UWtGQlZTeEhRVUZITEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNN1NVRkRha01zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXk5RExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTTdTVUZET1VNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dEpRVU01UXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRE8wbEJRemxETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1NVRkRPVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXp0SlFVTTVReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzBsQlF6bERMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU03U1VGRE9VTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJRenRKUVVNNVF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXpsRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTTdTVUZET1VNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dEpRVU01UXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRE8wbEJRemxETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1NVRkRPVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXp0SlFVTTVReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzBOQlFVTXNRMEZCUXl4RFFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpWlhod2IzSjBJR1JsWm1GMWJIUWdZMnhoYzNNZ1FtbDBRWEp5WVhrZ2UxeHVJQ0J6ZEdGMGFXTWdYMjl1UW1sMFEyOTFiblFnUFNCSmJuUTRRWEp5WVhrdVpuSnZiU2hiWEc0Z0lDQWdNQ3dnTVN3Z01Td2dNaXdnTVN3Z01pd2dNaXdnTXl3Z01Td2dNaXdnTWl3Z015d2dNaXdnTXl3Z015d2dOQ3hjYmlBZ0lDQXhMQ0F5TENBeUxDQXpMQ0F5TENBekxDQXpMQ0EwTENBeUxDQXpMQ0F6TENBMExDQXpMQ0EwTENBMExDQTFMRnh1SUNBZ0lERXNJRElzSURJc0lETXNJRElzSURNc0lETXNJRFFzSURJc0lETXNJRE1zSURRc0lETXNJRFFzSURRc0lEVXNYRzRnSUNBZ01pd2dNeXdnTXl3Z05Dd2dNeXdnTkN3Z05Dd2dOU3dnTXl3Z05Dd2dOQ3dnTlN3Z05Dd2dOU3dnTlN3Z05peGNiaUFnSUNBeExDQXlMQ0F5TENBekxDQXlMQ0F6TENBekxDQTBMQ0F5TENBekxDQXpMQ0EwTENBekxDQTBMQ0EwTENBMUxGeHVJQ0FnSURJc0lETXNJRE1zSURRc0lETXNJRFFzSURRc0lEVXNJRE1zSURRc0lEUXNJRFVzSURRc0lEVXNJRFVzSURZc1hHNGdJQ0FnTWl3Z015d2dNeXdnTkN3Z015d2dOQ3dnTkN3Z05Td2dNeXdnTkN3Z05Dd2dOU3dnTkN3Z05Td2dOU3dnTml4Y2JpQWdJQ0F6TENBMExDQTBMQ0ExTENBMExDQTFMQ0ExTENBMkxDQTBMQ0ExTENBMUxDQTJMQ0ExTENBMkxDQTJMQ0EzTEZ4dUlDQWdJREVzSURJc0lESXNJRE1zSURJc0lETXNJRE1zSURRc0lESXNJRE1zSURNc0lEUXNJRE1zSURRc0lEUXNJRFVzWEc0Z0lDQWdNaXdnTXl3Z015d2dOQ3dnTXl3Z05Dd2dOQ3dnTlN3Z015d2dOQ3dnTkN3Z05Td2dOQ3dnTlN3Z05Td2dOaXhjYmlBZ0lDQXlMQ0F6TENBekxDQTBMQ0F6TENBMExDQTBMQ0ExTENBekxDQTBMQ0EwTENBMUxDQTBMQ0ExTENBMUxDQTJMRnh1SUNBZ0lETXNJRFFzSURRc0lEVXNJRFFzSURVc0lEVXNJRFlzSURRc0lEVXNJRFVzSURZc0lEVXNJRFlzSURZc0lEY3NYRzRnSUNBZ01pd2dNeXdnTXl3Z05Dd2dNeXdnTkN3Z05Dd2dOU3dnTXl3Z05Dd2dOQ3dnTlN3Z05Dd2dOU3dnTlN3Z05peGNiaUFnSUNBekxDQTBMQ0EwTENBMUxDQTBMQ0ExTENBMUxDQTJMQ0EwTENBMUxDQTFMQ0EyTENBMUxDQTJMQ0EyTENBM0xGeHVJQ0FnSURNc0lEUXNJRFFzSURVc0lEUXNJRFVzSURVc0lEWXNJRFFzSURVc0lEVXNJRFlzSURVc0lEWXNJRFlzSURjc1hHNGdJQ0FnTkN3Z05Td2dOU3dnTml3Z05Td2dOaXdnTml3Z055d2dOU3dnTml3Z05pd2dOeXdnTml3Z055d2dOeXdnT0YwcE8xeHVYRzRnSUhOMFlYUnBZeUJmWm1seWMzUlBia0pwZENBOUlFbHVkRGhCY25KaGVTNW1jbTl0S0Z0Y2JpQWdJQ0F0TVN3Z01Dd2dNU3dnTUN3Z01pd2dNQ3dnTVN3Z01Dd2dNeXdnTUN3Z01Td2dNQ3dnTWl3Z01Dd2dNU3dnTUN4Y2JpQWdJQ0EwTENBd0xDQXhMQ0F3TENBeUxDQXdMQ0F4TENBd0xDQXpMQ0F3TENBeExDQXdMQ0F5TENBd0xDQXhMQ0F3TEZ4dUlDQWdJRFVzSURBc0lERXNJREFzSURJc0lEQXNJREVzSURBc0lETXNJREFzSURFc0lEQXNJRElzSURBc0lERXNJREFzWEc0Z0lDQWdOQ3dnTUN3Z01Td2dNQ3dnTWl3Z01Dd2dNU3dnTUN3Z015d2dNQ3dnTVN3Z01Dd2dNaXdnTUN3Z01Td2dNQ3hjYmlBZ0lDQTJMQ0F3TENBeExDQXdMQ0F5TENBd0xDQXhMQ0F3TENBekxDQXdMQ0F4TENBd0xDQXlMQ0F3TENBeExDQXdMRnh1SUNBZ0lEUXNJREFzSURFc0lEQXNJRElzSURBc0lERXNJREFzSURNc0lEQXNJREVzSURBc0lESXNJREFzSURFc0lEQXNYRzRnSUNBZ05Td2dNQ3dnTVN3Z01Dd2dNaXdnTUN3Z01Td2dNQ3dnTXl3Z01Dd2dNU3dnTUN3Z01pd2dNQ3dnTVN3Z01DeGNiaUFnSUNBMExDQXdMQ0F4TENBd0xDQXlMQ0F3TENBeExDQXdMQ0F6TENBd0xDQXhMQ0F3TENBeUxDQXdMQ0F4TENBd0xGeHVJQ0FnSURjc0lEQXNJREVzSURBc0lESXNJREFzSURFc0lEQXNJRE1zSURBc0lERXNJREFzSURJc0lEQXNJREVzSURBc1hHNGdJQ0FnTkN3Z01Dd2dNU3dnTUN3Z01pd2dNQ3dnTVN3Z01Dd2dNeXdnTUN3Z01Td2dNQ3dnTWl3Z01Dd2dNU3dnTUN4Y2JpQWdJQ0ExTENBd0xDQXhMQ0F3TENBeUxDQXdMQ0F4TENBd0xDQXpMQ0F3TENBeExDQXdMQ0F5TENBd0xDQXhMQ0F3TEZ4dUlDQWdJRFFzSURBc0lERXNJREFzSURJc0lEQXNJREVzSURBc0lETXNJREFzSURFc0lEQXNJRElzSURBc0lERXNJREFzWEc0Z0lDQWdOaXdnTUN3Z01Td2dNQ3dnTWl3Z01Dd2dNU3dnTUN3Z015d2dNQ3dnTVN3Z01Dd2dNaXdnTUN3Z01Td2dNQ3hjYmlBZ0lDQTBMQ0F3TENBeExDQXdMQ0F5TENBd0xDQXhMQ0F3TENBekxDQXdMQ0F4TENBd0xDQXlMQ0F3TENBeExDQXdMRnh1SUNBZ0lEVXNJREFzSURFc0lEQXNJRElzSURBc0lERXNJREFzSURNc0lEQXNJREVzSURBc0lESXNJREFzSURFc0lEQXNYRzRnSUNBZ05Dd2dNQ3dnTVN3Z01Dd2dNaXdnTUN3Z01Td2dNQ3dnTXl3Z01Dd2dNU3dnTUN3Z01pd2dNQ3dnTVN3Z01GMHBPMXh1WEc0Z0lITjBZWFJwWXlCZmJHRnpkRTl1UW1sMElEMGdTVzUwT0VGeWNtRjVMbVp5YjIwb1cxeHVJQ0FnSUMweExDQXdMQ0F4TENBeExDQXlMQ0F5TENBeUxDQXlMQ0F6TENBekxDQXpMQ0F6TENBekxDQXpMQ0F6TENBekxGeHVJQ0FnSURRc0lEUXNJRFFzSURRc0lEUXNJRFFzSURRc0lEUXNJRFFzSURRc0lEUXNJRFFzSURRc0lEUXNJRFFzSURRc1hHNGdJQ0FnTlN3Z05Td2dOU3dnTlN3Z05Td2dOU3dnTlN3Z05Td2dOU3dnTlN3Z05Td2dOU3dnTlN3Z05Td2dOU3dnTlN4Y2JpQWdJQ0ExTENBMUxDQTFMQ0ExTENBMUxDQTFMQ0ExTENBMUxDQTFMQ0ExTENBMUxDQTFMQ0ExTENBMUxDQTFMQ0ExTEZ4dUlDQWdJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzWEc0Z0lDQWdOaXdnTml3Z05pd2dOaXdnTml3Z05pd2dOaXdnTml3Z05pd2dOaXdnTml3Z05pd2dOaXdnTml3Z05pd2dOaXhjYmlBZ0lDQTJMQ0EyTENBMkxDQTJMQ0EyTENBMkxDQTJMQ0EyTENBMkxDQTJMQ0EyTENBMkxDQTJMQ0EyTENBMkxDQTJMRnh1SUNBZ0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNYRzRnSUNBZ055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055eGNiaUFnSUNBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xGeHVJQ0FnSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc1hHNGdJQ0FnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl4Y2JpQWdJQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTEZ4dUlDQWdJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzWEc0Z0lDQWdOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXhjYmlBZ0lDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNYU2s3WEc1Y2JpQWdjSEpwZG1GMFpTQmZaR0YwWVRvZ1ZXbHVkRE15UVhKeVlYazdYRzRnSUhCeWFYWmhkR1VnWDJ4bGJtZDBhQ0E5SURBN1hHNGdJSEJ5YVhaaGRHVWdYM1psY25OcGIyNGdQU0F3TzF4dUlDQndjbWwyWVhSbElGOTFjR1JoZEdWTVpYWmxiQ0E5SURBN1hHNGdJSEJ5YVhaaGRHVWdYM05sYkdWamRHVmtRMjkxYm5RZ1BTQXdPMXh1SUNCd2NtbDJZWFJsSUY5elpXeGxZM1JsWkVOdmRXNTBWbVZ5YzJsdmJpQTlJQzB4TzF4dUlDQndjbWwyWVhSbElGOXpaV3hsWTNSbFpFbHVaR1Y0WlhOV1pYSnphVzl1SUQwZ0xURTdYRzRnSUhCeWFYWmhkR1VnWDNabGNuTnBiMjVsWkU1aGJXVWdQU0FuSnp0Y2JpQWdjSEpwZG1GMFpTQmZkbVZ5YzJsdmJtVmtUbUZ0WlZabGNuTnBiMjRnUFNBdE1UdGNiaUFnVTBoU1NVNUxYMVJJVWtWVFNFOU1SQ0E5SURCNE1UQXdPMXh1WEc0Z0lHTnZibk4wY25WamRHOXlLR1JoZEdFNklGVnBiblF6TWtGeWNtRjVMQ0JzWlc1bmRHZzZJRzUxYldKbGNpbGNiaUFnWTI5dWMzUnlkV04wYjNJb2JHVnVaM1JvT2lCdWRXMWlaWElzSUdSbFptRjFiSFJXWVd4MVpUODZJR0p2YjJ4bFlXNHBYRzRnSUdOdmJuTjBjblZqZEc5eUtHRnlaem9nYm5WdFltVnlJSHdnVldsdWRETXlRWEp5WVhrc0lHUmxabUYxYkhSV1lXeDFaVG9nWW05dmJHVmhiaUI4SUc1MWJXSmxjaUE5SUdaaGJITmxLU0I3WEc0Z0lDQWdhV1lnS0hSNWNHVnZaaUJoY21jZ1BUMDlJQ2R1ZFcxaVpYSW5LU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQnNaVzVuZEdnZ1BTQmhjbWM3WEc0Z0lDQWdJQ0JqYjI1emRDQmlkV1ptSUQwZ1FtbDBRWEp5WVhrdVgyTnlaV0YwWlVKMVptWmxjaWhzWlc1bmRHZ3BPMXh1SUNBZ0lDQWdhV1lnS0dSbFptRjFiSFJXWVd4MVpTa2dlMXh1SUNBZ0lDQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUdKMVptWXViR1Z1WjNSb095QnBLeXNwWEc0Z0lDQWdJQ0FnSUNBZ1luVm1abHRwWFNBOUlDMHhPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdkR2hwY3k1ZlpHRjBZU0E5SUdKMVptWTdYRzRnSUNBZ0lDQjBhR2x6TGw5c1pXNW5kR2dnUFNCc1pXNW5kR2c3WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2hoY21jZ2FXNXpkR0Z1WTJWdlppQlZhVzUwTXpKQmNuSmhlU2tnZTF4dUlDQWdJQ0FnZEdocGN5NWZaR0YwWVNBOUlHRnlaeUJoY3lCVmFXNTBNekpCY25KaGVUdGNiaUFnSUNBZ0lIUm9hWE11WDJ4bGJtZDBhQ0E5SUdSbFptRjFiSFJXWVd4MVpTQmhjeUJ1ZFcxaVpYSTdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduU1c1MllXeHBaQ0JqYjI1emRISjFZM1J2Y2ljcE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc1Y2JpQWdaMlYwVW1GM1JHRjBZU2dwSUhzZ2NtVjBkWEp1SUhSb2FYTXVYMlJoZEdFN0lIMWNibHh1SUNCaGMzTjFjbVZIYjJWNktHNTFiVG9nYm5WdFltVnlMQ0JoY21kT1lXMWxPaUJUZEhKcGJtY3BPaUIyYjJsa0lIdGNiaUFnSUNCcFppQW9iblZ0SUR3Z01Da2dkR2h5YjNjZ2JtVjNJRVZ5Y205eUtHQWtlMkZ5WjA1aGJXVjlJSE5vYjNWc1pDQmlaU0JuY21WaGRHVnlJSFJvWVc0Z2VtVnliMkFwTzF4dUlDQjlYRzVjYmlBZ1lYTnpkWEpsU1c1U1lXNW5aU2gyWVd4MVpUb2diblZ0WW1WeUxDQnRhVzQ2SUc1MWJXSmxjaXdnYldGNE9pQnVkVzFpWlhJc0lHRnlaMDVoYldVNklGTjBjbWx1WnlrNklIWnZhV1FnZTF4dUlDQWdJR2xtSUNnb2RtRnNkV1VnUENCdGFXNHBJSHg4SUNoMllXeDFaU0ErSUcxaGVDa3BYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb1lFRnlaM1Z0Wlc1MElDUjdZWEpuVG1GdFpYMGdLQ1I3ZG1Gc2RXVjlLU0J2ZFhRZ2IyWWdjbUZ1WjJVZ0tDUjdiV2x1ZlN3Z0pIdHRZWGg5S1dBcE8xeHVJQ0I5WEc1Y2JpQWdZMjl3ZVNoemNtTTZJRlZwYm5Rek1rRnljbUY1TENCa2MzUTZJRlZwYm5Rek1rRnljbUY1TENCamIzVnVkRG9nYm5WdFltVnlLVG9nZG05cFpDQjdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQmpiM1Z1ZERzZ2FTc3JLVnh1SUNBZ0lDQWdaSE4wVzJsZElEMGdjM0pqVzJsZE8xeHVJQ0I5WEc1Y2JpQWdZMjl3ZVVaeWIyMG9iM1JvWlhJNklFSnBkRUZ5Y21GNUtUb2dkbTlwWkNCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11WDJ4bGJtZDBhQ0FoUFNCdmRHaGxjaTVmYkdWdVozUm9LVnh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtHQk1aVzVuZEdoeklHUnBabVpsY2lBb0pIdDBhR2x6TGw5c1pXNW5kR2g5SUNFOUlDUjdiM1JvWlhJdVgyeGxibWQwYUgwcFlDazdYRzRnSUNBZ2RHaHBjeTVqYjNCNUtHOTBhR1Z5TGw5a1lYUmhMQ0IwYUdsekxsOWtZWFJoTENCMGFHbHpMbXhsYm1kMGFFbHVTVzUwY3lrN1hHNGdJQ0FnZEdocGN5NWZkbVZ5YzJsdmJpc3JPMXh1SUNCOVhHNWNiaUFnWjJWMElHeGxibWQwYUNncElIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWZiR1Z1WjNSb08xeHVJQ0I5WEc1Y2JpQWdaMlYwSUdKMVptWmxjaWdwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZlpHRjBZVHRjYmlBZ2ZWeHVYRzRnSUhObGRDQmlkV1ptWlhJb1pHRjBZVG9nVldsdWRETXlRWEp5WVhrcElIdGNiaUFnSUNCMGFHbHpMbDlrWVhSaElEMGdaR0YwWVR0Y2JpQWdJQ0IwYUdsekxsOTJaWEp6YVc5dUt5czdYRzRnSUgxY2JseHVJQ0JuWlhRZ2RtVnljMmx2YmlncElIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWZkbVZ5YzJsdmJqdGNiaUFnZlZ4dVhHNGdJSE5sZENCMlpYSnphVzl1S0haaGJIVmxPaUJ1ZFcxaVpYSXBJSHRjYmlBZ0lDQjBhR2x6TGw5MlpYSnphVzl1SUQwZ2RtRnNkV1U3WEc0Z0lIMWNibHh1SUNCcGJtTnlaVzFsYm5SV1pYSnphVzl1S0c1dmRHbG1lU0E5SUhSeWRXVXBPaUIyYjJsa0lIdGNiaUFnSUNCMGFHbHpMbDkyWlhKemFXOXVLeXM3WEc0Z0lIMWNibHh1SUNCblpYUWdiR1Z1WjNSb1NXNUpiblJ6S0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUJOWVhSb0xtWnNiMjl5S0NoMGFHbHpMbDlzWlc1bmRHZ2dLeUF3ZURGbUtTQXZJREI0TWpBcE8xeHVJQ0I5WEc1Y2JpQWdaMlYwSUhabGNuTnBiMjVsWkU1aGJXVW9LU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WDNabGNuTnBiMjRnUFQwZ2RHaHBjeTVmZG1WeWMybHZibVZrVG1GdFpWWmxjbk5wYjI0Z1B5QjBhR2x6TGw5MlpYSnphVzl1WldST1lXMWxJRG9nSnljN1hHNGdJSDFjYmx4dUlDQnpaWFFnZG1WeWMybHZibVZrVG1GdFpTaHVZVzFsT2lCemRISnBibWNwSUh0Y2JpQWdJQ0IwYUdsekxsOTJaWEp6YVc5dVpXUk9ZVzFsSUQwZ2JtRnRaVHRjYmlBZ0lDQjBhR2x6TGw5MlpYSnphVzl1WldST1lXMWxWbVZ5YzJsdmJpQTlJSFJvYVhNdVgzWmxjbk5wYjI0N1hHNGdJSDFjYmx4dUlDQm5aWFFnYzJWc1ppZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjenRjYmlBZ2ZWeHVYRzRnSUhObGRFeGxibWQwYUNoMllXeDFaVG9nYm5WdFltVnlLVG9nZG05cFpDQjdYRzRnSUNBZ2FXWWdLSFpoYkhWbElEd2dNQ2xjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpZ25jMmh2ZFd4a0lHSmxJRDQ5SURBbktUdGNibHh1SUNBZ0lHbG1JQ2gyWVd4MVpTQTlQU0IwYUdsekxsOXNaVzVuZEdncElISmxkSFZ5Ymp0Y2JpQWdJQ0JqYjI1emRDQnVTVzUwYzA1bFpXUmxaQ0E5SUUxaGRHZ3VabXh2YjNJb0tIWmhiSFZsSUNzZ01IZ3haaWtnTHlBd2VESXdLVHRjYmlBZ0lDQnBaaUFvS0c1SmJuUnpUbVZsWkdWa0lENGdkR2hwY3k1ZlpHRjBZUzVzWlc1bmRHZ3BJSHg4SUNnb2JrbHVkSE5PWldWa1pXUWdLeUIwYUdsekxsTklVa2xPUzE5VVNGSkZVMGhQVEVRcElEd2dkR2hwY3k1ZlpHRjBZUzVzWlc1bmRHZ3BLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQnVaWGRFWVhSaElEMGdibVYzSUZWcGJuUXpNa0Z5Y21GNUtHNUpiblJ6VG1WbFpHVmtLVHRjYmlBZ0lDQWdJSFJvYVhNdVkyOXdlU2gwYUdsekxsOWtZWFJoTENCdVpYZEVZWFJoTENBb2JrbHVkSE5PWldWa1pXUWdQaUIwYUdsekxsOWtZWFJoTG14bGJtZDBhQ2tnUHlCMGFHbHpMbDlrWVhSaExteGxibWQwYUNBNklHNUpiblJ6VG1WbFpHVmtLVHRjYmlBZ0lDQWdJSFJvYVhNdVgyUmhkR0VnUFNCdVpYZEVZWFJoTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNoMllXeDFaU0ErSUhSb2FYTXVYMnhsYm1kMGFDa2dlMXh1SUNBZ0lDQWdhV1lnS0hSb2FYTXVYMnhsYm1kMGFDQWxJREI0TWpBZ1BpQXdLVnh1SUNBZ0lDQWdJQ0IwYUdsekxsOWtZWFJoVzNSb2FYTXViR1Z1WjNSb1NXNUpiblJ6SUMwZ01WMGdKajBnS0RFZ1BEd2dLQ2gwYUdsekxsOXNaVzVuZEdnZ0pTQXdlREl3S1NBbUlEQjRNV1lwS1NBdElERTdYRzVjYmlBZ0lDQWdJSFJvYVhNdVgyUmhkR0V1Wm1sc2JDZ3dMQ0IwYUdsekxteGxibWQwYUVsdVNXNTBjeXdnYmtsdWRITk9aV1ZrWldRcE8xeHVJQ0FnSUgxY2JpQWdJQ0IwYUdsekxsOXNaVzVuZEdnZ1BTQjJZV3gxWlR0Y2JpQWdJQ0IwYUdsekxsOTJaWEp6YVc5dUt5czdYRzRnSUgxY2JseHVJQ0J6ZEdGMGFXTWdabkp2YlVGdVpDaHpaWFF4T2lCQ2FYUkJjbkpoZVN3Z2MyVjBNam9nUW1sMFFYSnlZWGtwT2lCQ2FYUkJjbkpoZVNCN1hHNGdJQ0FnYVdZZ0tITmxkREV1WDJ4bGJtZDBhQ0FoUFNCelpYUXlMbDlzWlc1bmRHZ3BYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb1lFeGxibWQwYUhNZ1pHbG1abVZ5SUNna2UzTmxkREV1WDJ4bGJtZDBhSDBnSVQwZ0pIdHpaWFF5TGw5c1pXNW5kR2g5S1dBcE8xeHVYRzRnSUNBZ1kyOXVjM1FnZEdWdGNDQTlJRzVsZHlCQ2FYUkJjbkpoZVNoelpYUXhMbDlzWlc1bmRHZ3BPMXh1SUNBZ0lIUmxiWEF1WDJ4bGJtZDBhQ0E5SUhObGRERXVYMnhsYm1kMGFEdGNiaUFnSUNCMFpXMXdMbDlrWVhSaElEMGdRbWwwUVhKeVlYa3VYMk55WldGMFpVSjFabVpsY2loMFpXMXdMbDlzWlc1bmRHZ3BPMXh1SUNBZ0lIUmxiWEF1WDNabGNuTnBiMjRnUFNBd08xeHVYRzRnSUNBZ1kyOXVjM1FnYkdWdUlEMGdjMlYwTVM1c1pXNW5kR2hKYmtsdWRITTdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQnNaVzQ3SUdrckt5bGNiaUFnSUNBZ0lIUmxiWEF1WDJSaGRHRmJhVjBnUFNCelpYUXhMbDlrWVhSaFcybGRJQ1lnYzJWME1pNWZaR0YwWVZ0cFhUdGNibHh1SUNBZ0lISmxkSFZ5YmlCMFpXMXdPMXh1SUNCOVhHNWNiaUFnY0hKcGRtRjBaU0J6ZEdGMGFXTWdYMk55WldGMFpVSjFabVpsY2loc1pXNW5kR2c2SUc1MWJXSmxjaWs2SUZWcGJuUXpNa0Z5Y21GNUlIdGNiaUFnSUNCeVpYUjFjbTRnYm1WM0lGVnBiblF6TWtGeWNtRjVLRTFoZEdndVpteHZiM0lvS0d4bGJtZDBhQ0FySURCNE1XWXBJQzhnTUhneU1Da3BPMXh1SUNCOVhHNWNiaUFnYzNSaGRHbGpJR1p5YjIxV1lXeDFaWE1vZG1Gc2RXVnpPaUJCY25KaGVUeGliMjlzWldGdVBpazZJRUpwZEVGeWNtRjVJSHRjYmlBZ0lDQmpiMjV6ZENCMFpXMXdJRDBnYm1WM0lFSnBkRUZ5Y21GNUtIWmhiSFZsY3k1c1pXNW5kR2dwTzF4dUlDQWdJSFJsYlhBdVgzWmxjbk5wYjI0Z1BTQXdPMXh1WEc0Z0lDQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0IwWlcxd0xsOXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJQ0FnYVdZZ0tIWmhiSFZsYzF0cFhTbGNiaUFnSUNBZ0lDQWdkR1Z0Y0M1ZlpHRjBZVnROWVhSb0xtWnNiMjl5S0drZ0x5QXdlREl3S1YwZ2ZEMGdNU0E4UENBb0tHa2dKU0F3ZURJd0tTQW1JREI0TVdZcE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdkR1Z0Y0R0Y2JpQWdmVnh1WEc0Z0lDOHZMeUJEYjI1emRISjFZM1J6SUdFZ1cwSnBkRk5sZEYwZ2IyWWdiR1Z1WjNSb0lGdGpiM1Z1ZEYwc0lIZG9aWEpsSUdsa2VDMTBhQ0JpYVhRZ2FYTWdaR1YwWlhKdGFXNWxaQ0JpZVNCaElHTmhiR3dnZEc4Z1cyWnNZV2RkSUNocFpIZ3BMbHh1SUNCemRHRjBhV01nWm5KdmJWTmxjU2hqYjNWdWREb2diblZ0WW1WeUxDQm1iR0ZuT2lCR2RXNWpkR2x2YmlrNklFSnBkRUZ5Y21GNUlIdGNiaUFnSUNCamIyNXpkQ0IwWlcxd0lEMGdibVYzSUVKcGRFRnljbUY1S0dOdmRXNTBLVHRjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJR052ZFc1ME95QXJLMmtwWEc0Z0lDQWdJQ0IwWlcxd0xuTmxkRUpwZENocExDQm1iR0ZuS0drcEtUdGNibHh1SUNBZ0lIUmxiWEF1WDNabGNuTnBiMjRnUFNBd08xeHVJQ0FnSUhKbGRIVnliaUIwWlcxd08xeHVJQ0I5WEc1Y2JpQWdMeTh2SUVOdmJuTjBjblZqZEhNZ1lTQmJRbWwwVTJWMFhTQm1jbTl0SUdFZ2MzUnlhVzVuSUZ0elhTQmpiMjUwWVdsdWFXNW5JQ2N3SnlCdmNpQW5NU2N1WEc0Z0lITjBZWFJwWXlCbWNtOXRVM1J5YVc1bktITTZJSE4wY21sdVp5azZJRUpwZEVGeWNtRjVJSHRjYmlBZ0lDQnlaWFIxY200Z1FtbDBRWEp5WVhrdVpuSnZiVk5sY1NoekxteGxibWQwYUN3Z0tHazZJRzUxYldKbGNpa2dQVDRnY3k1amFHRnlRWFFvYVNrZ1BUMGdKekVuS1R0Y2JpQWdmVnh1WEc0Z0lDOHZMeUJEYjI1emRISjFZM1J6SUdFZ1cwSnBkRk5sZEYwc0lHSmhjMlZrSUc5dUlHeGxibWQwYUNCYlgyeGxibWQwYUYwZ1lXNWtJR0o1ZEdVZ1lYSnlZWGtnVzE5a1lYUmhYUzVjYmlBZ2MzUmhkR2xqSUdaeWIyMVZhVzUwTXpKQmNuSmhlU2hmYkdWdVozUm9PaUJ1ZFcxaVpYSXNJRjlrWVhSaE9pQlZhVzUwTXpKQmNuSmhlU2s2SUVKcGRFRnljbUY1SUh0Y2JpQWdJQ0JqYjI1emRDQjBaVzF3SUQwZ2JtVjNJRUpwZEVGeWNtRjVLRjlzWlc1bmRHZ3BPMXh1SUNBZ0lIUmxiWEF1WDJSaGRHRWdQU0JmWkdGMFlUdGNiaUFnSUNCeVpYUjFjbTRnZEdWdGNEdGNiaUFnZlZ4dVhHNGdJQzh2THlCRVpYTmxjbWxoYkdsNlpYTWdZU0JiUW1sMFUyVjBYU0JtY205dElGdGllWFJsYzEwdVhHNGdJSE4wWVhScFl5Qm1jbTl0UW5sMFpYTW9ZbmwwWlhNNklGVnBiblE0UVhKeVlYa3BPaUJDYVhSQmNuSmhlU0I3WEc0Z0lDQWdZMjl1YzNRZ2JHVnVJRDBnWW5sMFpYTXViR1Z1WjNSb08xeHVJQ0FnSUdOdmJuTjBJSFJsYlhBZ1BTQnVaWGNnUW1sMFFYSnlZWGtvYkdWdUlDb2dPQ2s3WEc0Z0lDQWdkR1Z0Y0M1ZlpHRjBZU0E5SUc1bGR5QlZhVzUwTXpKQmNuSmhlU2hOWVhSb0xtWnNiMjl5S0Noc1pXNGdLeUF6S1NBdklEUXBLVHRjYmlBZ0lDQjBaVzF3TGw5c1pXNW5kR2dnUFNCc1pXNGdLaUE0TzF4dUlDQWdJR3hsZENCdWRXMHhJRDBnTUR0Y2JpQWdJQ0JzWlhRZ2JuVnRNaUE5SURBN1hHNWNiaUFnSUNCM2FHbHNaU0FvS0d4bGJpQXRJRzUxYlRJcElENDlJRFFwSUh0Y2JpQWdJQ0FnSUhSbGJYQXVYMlJoZEdGYmJuVnRNU3NyWFNBOUlDaGNiaUFnSUNBZ0lDQWdLQ2hpZVhSbGMxdHVkVzB5WFNBbUlEQjRabVlwSUh3Z0tDaGllWFJsYzF0dWRXMHlJQ3NnTVYwZ0ppQXdlR1ptS1NBOFBDQTRLU2tnZkZ4dUlDQWdJQ0FnSUNBb0tHSjVkR1Z6VzI1MWJUSWdLeUF5WFNBbUlEQjRabVlwSUR3OElEQjRNVEFwWEc0Z0lDQWdJQ0FwSUh3Z0tDaGllWFJsYzF0dWRXMHlJQ3NnTTEwZ0ppQXdlR1ptS1NBOFBDQXdlREU0S1R0Y2JseHVJQ0FnSUNBZ2JuVnRNaUFyUFNBME8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaHNaVzRnTFNCdWRXMHlJRDA5SURNcFhHNGdJQ0FnSUNCMFpXMXdMbDlrWVhSaFcyNTFiVEZkSUQwZ0tHSjVkR1Z6VzI1MWJUSWdLeUF5WFNBbUlEQjRabVlwSUR3OElEQjRNVEE3WEc1Y2JpQWdJQ0JwWmlBb2JHVnVJQzBnYm5WdE1pQTlQU0F5S1Z4dUlDQWdJQ0FnZEdWdGNDNWZaR0YwWVZ0dWRXMHhYU0I4UFNBb1lubDBaWE5iYm5WdE1pQXJJREZkSUNZZ01IaG1aaWtnUER3Z09EdGNibHh1SUNBZ0lHbG1JQ2hzWlc0Z0xTQnVkVzB5SUQwOUlERXBYRzRnSUNBZ0lDQjBaVzF3TGw5a1lYUmhXMjUxYlRGZElIdzlJR0o1ZEdWelcyNTFiVEpkSUNZZ01IaG1aanRjYmx4dUlDQWdJSFJsYlhBdVgzWmxjbk5wYjI0Z1BTQXdPMXh1SUNBZ0lISmxkSFZ5YmlCMFpXMXdPMXh1SUNCOVhHNWNiaUFnZEc5VGRISnBibWNvS1RvZ2MzUnlhVzVuSUh0Y2JpQWdJQ0J5WlhSMWNtNGdZQ1I3ZEdocGN5NWZiR1Z1WjNSb2ZTQmlhWFJ6TENBa2UzUm9hWE11WTI5MWJuUkNhWFJ6S0hSeWRXVXBmU0J6WlhSZ08xeHVJQ0I5WEc1Y2JpQWdMeTh2SUZCbGNtWnZjbTF6SUdSbFpYQWdZMjl0Y0dGeWFYTnZiaUJ2WmlCMGQyOGdZbWwwYzJWMGN5NWNiaUFnWlhGMVlXeHpLRzkwYUdWeU9pQkNhWFJCY25KaGVTazZJR0p2YjJ4bFlXNGdlMXh1SUNBZ0lHbG1JQ2gwYUdseklEMDlJRzkwYUdWeUtTQnlaWFIxY200Z2RISjFaVHRjYmlBZ0lDQnBaaUFvYjNSb1pYSWdQVDBnYm5Wc2JDa2djbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJR2xtSUNoMGFHbHpMbDlzWlc1bmRHZ2dJVDBnYjNSb1pYSXVYMnhsYm1kMGFDa2djbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJR2xtSUNoMGFHbHpMbDlzWlc1bmRHZ2dQVDBnTUNrZ2NtVjBkWEp1SUhSeWRXVTdYRzVjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSFJvYVhNdVgyUmhkR0V1YkdWdVozUm9JQzBnTVRzZ2FTc3JLVnh1SUNBZ0lDQWdhV1lnS0hSb2FYTXVYMlJoZEdGYmFWMGdJVDBnYjNSb1pYSXVYMlJoZEdGYmFWMHBJSEpsZEhWeWJpQm1ZV3h6WlR0Y2JseHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQW9kR2hwY3k1ZlpHRjBZUzVzWlc1bmRHZ2dMU0F4S1NBcUlEZzdJR2tnUENCMGFHbHpMbDlzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ2FXWWdLSFJvYVhNdVoyVjBRbWwwS0drcElDRTlJRzkwYUdWeUxtZGxkRUpwZENocEtTbGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2RISjFaVHRjYmlBZ2ZWeHVYRzRnSUM4cUtpQkRiRzl1WlhNZ1lTQmlhWFJ6WlhRdUlDb3ZYRzRnSUdOc2IyNWxLQ2s2SUVKcGRFRnljbUY1SUh0Y2JpQWdJQ0JqYjI1emRDQmlhWFJCY25KaGVTQTlJRzVsZHlCQ2FYUkJjbkpoZVNnd0xDQm1ZV3h6WlNrN1hHNGdJQ0FnWW1sMFFYSnlZWGt1WDJSaGRHRWdQU0JWYVc1ME16SkJjbkpoZVM1bWNtOXRLSFJvYVhNdVgyUmhkR0VwT3lBdkx5QmxabVpsWTNScGRtVWdiR1Z1WjNSb09pQW9iR1Z1WjNSb1NXNUpiblJ6S1Z4dUlDQWdJR0pwZEVGeWNtRjVMbDlzWlc1bmRHZ2dQU0IwYUdsekxsOXNaVzVuZEdnN1hHNGdJQ0FnWW1sMFFYSnlZWGt1WDNabGNuTnBiMjRnUFNCMGFHbHpMbDkyWlhKemFXOXVPMXh1SUNBZ0lISmxkSFZ5YmlCaWFYUkJjbkpoZVR0Y2JpQWdmVnh1WEc0Z0lDOHFLaUJKYm1sMGFXRnNhWHBsY3lCaElHSnBkSE5sZEM0Z0tpOWNiaUFnYVc1cGRDaG1iR0ZuT2lCR2RXNWpkR2x2Yml3Z2JtOTBhV1o1T2lCaWIyOXNaV0Z1S1RvZ1FtbDBRWEp5WVhrZ2UxeHVJQ0FnSUhSb2FYTXVjMlYwUVd4c0tHWmhiSE5sTENCbVlXeHpaU2s3WEc1Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUhSb2FYTXVYMnhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnSUNCcFppQW9abXhoWnlocEtTbGNiaUFnSUNBZ0lDQWdkR2hwY3k1ZlpHRjBZVnROWVhSb0xtWnNiMjl5S0drZ0x5QXdlREl3S1YwZ2ZEMGdNU0E4UENBb0tHa2dKU0F3ZURJd0tTQW1JREI0TVdZcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhSb2FYTXVhVzVqY21WdFpXNTBWbVZ5YzJsdmJpaHViM1JwWm5rcE8xeHVJQ0FnSUhKbGRIVnliaUIwYUdsek8xeHVJQ0I5WEc1Y2JpQWdMeTh2SUVsdWRtVnlkSE1nWVNCaWFYUnpaWFF1WEc0Z0lHbHVkbVZ5ZENodWIzUnBabmtnUFNCMGNuVmxLVG9nZG05cFpDQjdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQjBhR2x6TGw5a1lYUmhMbXhsYm1kMGFEc2dhU3NyS1Z4dUlDQWdJQ0FnZEdocGN5NWZaR0YwWVZ0cFhTQmVQU0F0TVR0Y2JseHVJQ0FnSUhSb2FYTXVhVzVqY21WdFpXNTBWbVZ5YzJsdmJpaHViM1JwWm5rcE8xeHVJQ0I5WEc1Y2JpQWdMeTh2SUZObGRITWdZV3hzSUdKcGRITWdkRzhnVzNaaGJIVmxYU3dnYjNCMGFXOXVZV3hzZVNCemRYQndjbVZ6YzJsdVp5QnViM1JwWm1sallYUnBiMjV6TGx4dUlDQnpaWFJCYkd3b2RtRnNkV1U2SUdKdmIyeGxZVzRzSUc1dmRHbG1lU0E5SUdaaGJITmxLVG9nZG05cFpDQjdYRzRnSUNBZ1kyOXVjM1FnWm14aFozTWdQU0IyWVd4MVpTQS9JQzB4SURvZ01EdGNiaUFnSUNCamIyNXpkQ0JzWlc0Z1BTQjBhR2x6TG14bGJtZDBhRWx1U1c1MGN6dGNibHh1SUNBZ0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2diR1Z1T3lCcEt5c3BJQzh2ZEc5a2J6b2diM0IwYVcxcGVtVmNiaUFnSUNBZ0lIUm9hWE11WDJSaGRHRmJhVjBnUFNCbWJHRm5jenRjYmx4dUlDQWdJSFJvYVhNdWFXNWpjbVZ0Wlc1MFZtVnljMmx2YmlodWIzUnBabmtwTzF4dUlDQjlYRzVjYmlBZ0x5OHZJRk5sZEhNZ1ltbDBjeUJoZENCYmFXNWtaWGhsYzEwZ2NHOXphWFJwYjI0Z2RHOGdXM1poYkhWbFhTNWNiaUFnTHk4dklFTnNaV0Z5Y3lCMGFHVWdZbWwwYzJWMElHbG1JRnRqYkdWaGNsMGdabXhoWnlCcGN5QjBjblZsTGx4dUlDQXZMeThnUTJoaGJtZGxJRzV2ZEdsbWFXTmhkR2x2YmlCcGN5QnlZV2x6WldRZ2QyaGxiaUJiYm05MGFXWjVYU0JwY3lCMGNuVmxMbHh1SUNCelpYUkpibVJsZUdWektHbHVaR1Y0WlhNNklFRnljbUY1UEc1MWJXSmxjajRzSUhaaGJIVmxJRDBnZEhKMVpTd2dZMnhsWVhJZ1BTQjBjblZsTENCdWIzUnBabmtnUFNCMGNuVmxLVG9nZG05cFpDQjdYRzRnSUNBZ2FXWWdLR05zWldGeUtWeHVJQ0FnSUNBZ2RHaHBjeTV6WlhSQmJHd29JWFpoYkhWbExDQm1ZV3h6WlNrN1hHNWNiaUFnSUNCbWIzSWdLR052Ym5OMElHa2diMllnYVc1a1pYaGxjeWxjYmlBZ0lDQWdJSFJvYVhNdWMyVjBSbUZ6ZENocExDQjJZV3gxWlNrN1hHNWNiaUFnSUNCMGFHbHpMbWx1WTNKbGJXVnVkRlpsY25OcGIyNG9ibTkwYVdaNUtUdGNiaUFnZlZ4dVhHNGdJR1YyWlhKNVNXNWtaWGdvYVc1a1pYaGxjem9nUVhKeVlYazhiblZ0WW1WeVBpd2dkbUZzZFdVZ1BTQjBjblZsS1RvZ1ltOXZiR1ZoYmlCN1hHNGdJQ0FnWm05eUlDaGpiMjV6ZENCcGJtUmxlQ0J2WmlCcGJtUmxlR1Z6S1NCN1hHNGdJQ0FnSUNCcFppQW9kR2hwY3k1blpYUkNhWFFvYVc1a1pYZ3BJQ0U5SUhaaGJIVmxLVnh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdabUZzYzJVN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQjBjblZsTzF4dUlDQjlYRzVjYmlBZ1lXNTVTVzVrWlhnb2FXNWtaWGhsY3pvZ1FYSnlZWGs4Ym5WdFltVnlQaXdnZG1Gc2RXVWdQU0IwY25WbEtUb2dZbTl2YkdWaGJpQjdYRzRnSUNBZ1ptOXlJQ2hqYjI1emRDQnBibVJsZUNCdlppQnBibVJsZUdWektTQjdYRzRnSUNBZ0lDQnBaaUFvZEdocGN5NW5aWFJDYVhRb2FXNWtaWGdwSUQwOUlIWmhiSFZsS1Z4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZEhKMVpUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJR1poYkhObE8xeHVJQ0I5WEc1Y2JpQWdjMlYwVjJobGNtVW9ZMmhsWTJzNklFWjFibU4wYVc5dUxDQjJZV3gxWlNBOUlIUnlkV1VzSUdOc1pXRnlJRDBnZEhKMVpTd2dibTkwYVdaNUlEMGdkSEoxWlN3Z1lXeHNiM2REYkdWaGNpQTlJSFJ5ZFdVcE9pQjJiMmxrSUh0Y2JpQWdJQ0JwWmlBb1kyeGxZWElnSmlZZ1lXeHNiM2REYkdWaGNpbGNiaUFnSUNBZ0lIUm9hWE11YzJWMFFXeHNLQ0YyWVd4MVpTd2dabUZzYzJVcE8xeHVYRzRnSUNBZ2FXWWdLR0ZzYkc5M1EyeGxZWElwSUh0Y2JpQWdJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2RHaHBjeTVmYkdWdVozUm9PeUJwS3lzcElIdGNiaUFnSUNBZ0lDQWdhV1lnS0dOb1pXTnJLR2twS1Z4dUlDQWdJQ0FnSUNBZ0lIUm9hWE11YzJWMFJtRnpkQ2hwTENCMllXeDFaU2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2dkR2hwY3k1ZmJHVnVaM1JvT3lCcEt5c3BYRzRnSUNBZ0lDQWdJSFJvYVhNdWMyVjBSbUZ6ZENocExDQmphR1ZqYXlocEtTQS9JSFpoYkhWbElEb2dJWFpoYkhWbEtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCMGFHbHpMbWx1WTNKbGJXVnVkRlpsY25OcGIyNG9ibTkwYVdaNUtUdGNiaUFnZlZ4dVhHNGdJR2RsZEZKaGJtZGxLR1p5YjIwNklHNTFiV0psY2l3Z2RHODZJRzUxYldKbGNpazZJRUpwZEVGeWNtRjVJSHRjYmlBZ0lDQjBhR2x6TG1GemMzVnlaVWx1VW1GdVoyVW9abkp2YlN3Z01Dd2dkR2hwY3k1ZmJHVnVaM1JvSUMwZ01Td2dKMlp5YjIwbktUdGNiaUFnSUNCMGFHbHpMbUZ6YzNWeVpVbHVVbUZ1WjJVb2RHOHNJREFzSUhSb2FYTXVYMnhsYm1kMGFDd2dKM1J2SnlrN1hHNGdJQ0FnWTI5dWMzUWdZWEp5T2lCQmNuSmhlVHhpYjI5c1pXRnVQaUE5SUZ0ZE8xeHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQm1jbTl0T3lCcElEd2dkRzg3SUNzcmFTbGNiaUFnSUNBZ0lHRnljaTV3ZFhOb0tIUm9hWE11WjJWMFFtbDBLR2twS1R0Y2JpQWdJQ0J5WlhSMWNtNGdRbWwwUVhKeVlYa3Vabkp2YlZaaGJIVmxjeWhoY25JcE8xeHVJQ0I5WEc1Y2JpQWdaMlYwVW1GdVoyVkJjMHhwYzNRb1puSnZiVG9nYm5WdFltVnlMQ0IwYnpvZ2JuVnRZbVZ5S1RvZ1ltOXZiR1ZoYmx0ZElIdGNiaUFnSUNCMGFHbHpMbUZ6YzNWeVpVbHVVbUZ1WjJVb1puSnZiU3dnTUN3Z2RHaHBjeTVmYkdWdVozUm9JQzBnTVN3Z0oyWnliMjBuS1R0Y2JpQWdJQ0IwYUdsekxtRnpjM1Z5WlVsdVVtRnVaMlVvZEc4c0lEQXNJSFJvYVhNdVgyeGxibWQwYUN3Z0ozUnZKeWs3WEc0Z0lDQWdZMjl1YzNRZ1lYSnlPaUJpYjI5c1pXRnVXMTBnUFNCYlhUdGNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdabkp2YlRzZ2FTQThJSFJ2T3lBcksya3BYRzRnSUNBZ0lDQmhjbkl1Y0hWemFDaDBhR2x6TG1kbGRFSnBkQ2hwS1NrN1hHNGdJQ0FnY21WMGRYSnVJR0Z5Y2p0Y2JpQWdmVnh1WEc1Y2JpQWdjMlYwVW1GdVoyVW9abkp2YlRvZ2JuVnRZbVZ5TENCMGJ6b2diblZ0WW1WeUxDQjJZV3gxWlRvZ1ltOXZiR1ZoYml3Z2JtOTBhV1o1SUQwZ2RISjFaU2s2SUVKcGRFRnljbUY1SUh0Y2JpQWdJQ0IwYUdsekxtRnpjM1Z5WlVsdVVtRnVaMlVvWm5KdmJTd2dNQ3dnZEdocGN5NWZiR1Z1WjNSb0lDMGdNU3dnSjJaeWIyMG5LVHRjYmlBZ0lDQjBhR2x6TG1GemMzVnlaVWx1VW1GdVoyVW9kRzhzSURBc0lIUm9hWE11WDJ4bGJtZDBhQ0F0SURFc0lDZDBieWNwTzF4dVhHNGdJQ0FnWTI5dWMzUWdjM1JoY25RZ1BTQk5ZWFJvTG0xcGJpaG1jbTl0TENCMGJ5azdYRzRnSUNBZ1kyOXVjM1FnWlc1a0lEMGdUV0YwYUM1dFlYZ29abkp2YlN3Z2RHOHBPMXh1WEc0Z0lDQWdMeTkwYjJSdk9pQnZjSFJwYldsNlpWeHVJQ0FnSUdsbUlDaDJZV3gxWlNrZ2UxeHVJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJSE4wWVhKME95QnBJRHc5SUdWdVpEc2dhU3NyS1Z4dUlDQWdJQ0FnSUNCMGFHbHpMbk5sZEZSeWRXVW9hU2s3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lHWnZjaUFvYkdWMElHa2dQU0J6ZEdGeWREc2dhU0E4UFNCbGJtUTdJR2tyS3lsY2JpQWdJQ0FnSUNBZ2RHaHBjeTV6WlhSR1lXeHpaU2hwS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IwYUdsekxtbHVZM0psYldWdWRGWmxjbk5wYjI0b2JtOTBhV1o1S1R0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3p0Y2JpQWdmVnh1WEc0Z0lDOHZMeUJUWlhSeklHNGdjbUZ1Wkc5dGJIa2dZMmh2YzJWdUlHSnBkSE1nZEc4Z2RtRnNkV1VzSUhKbGJXRnBibWx1WnlCaWFYUnpJSFJ2SUNGMllXeDFaUzVjYmlBZ2MyVjBVbUZ1Wkc5dEtHNDZJRzUxYldKbGNpd2dkbUZzZFdVNklHSnZiMnhsWVc0c0lHNXZkR2xtZVNBOUlIUnlkV1VwT2lCMmIybGtJSHRjYmlBZ0lDQnBaaUFvYmlBOElEQWdmSHdnYmlBK0lIUm9hWE11WDJ4bGJtZDBhQ2xjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpZ25iaUJ0ZFhOMElHSmxJRDQ5SURBZ0ppWWdQRDBnUTI5MWJuUW5LVHRjYmx4dUlDQWdJR2xtSUNodUlENGdkR2hwY3k1ZmJHVnVaM1JvSUM4Z01pbGNiaUFnSUNBZ0lIUm9hWE11YzJWMFVtRnVaRzl0S0hSb2FYTXVYMnhsYm1kMGFDQXRJRzRzSUNGMllXeDFaU2s3WEc1Y2JpQWdJQ0IwYUdsekxuTmxkRUZzYkNnaGRtRnNkV1VwTzF4dVhHNGdJQ0FnWm05eUlDaHNaWFFnYXlBOUlEQTdJR3NnUENCdU95a2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ2FTQTlJRTFoZEdndVpteHZiM0lvVFdGMGFDNXlZVzVrYjIwb0tTQXFJSFJvYVhNdVgyeGxibWQwYUNrN1hHNGdJQ0FnSUNCcFppQW9kR2hwY3k1blpYUkNhWFFvYVNrZ1BUMGdkbUZzZFdVcElHTnZiblJwYm5WbE8xeHVJQ0FnSUNBZ2RHaHBjeTV6WlhSR1lYTjBLR2tzSUhaaGJIVmxLVHRjYmlBZ0lDQWdJR3NyS3p0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IwYUdsekxtbHVZM0psYldWdWRGWmxjbk5wYjI0b2JtOTBhV1o1S1R0Y2JpQWdmVnh1WEc0Z0lDOHZMeUJOYjJScFptbGxjeUJqZFhKeVpXNTBJR0pwZEhObGRDQmllU0J3WlhKbWIzSnRhVzVuSUhSb1pTQmlhWFIzYVhObElFRk9SQ0J2Y0dWeVlYUnBiMjRnWVdkaGFXNXpkQ0IwYUdWY2JpQWdMeTh2SUdOdmNuSmxjM0J2Ym1ScGJtY2daV3hsYldWdWRITWdhVzRnZEdobElITndaV05wWm1sbFpDQmlhWFJ6WlhRdVhHNGdJR0Z1WkNoMllXeDFaVG9nUW1sMFFYSnlZWGtzSUc1dmRHbG1lU0E5SUhSeWRXVXBPaUJDYVhSQmNuSmhlU0I3WEc0Z0lDQWdhV1lnS0hSb2FYTXVYMnhsYm1kMGFDQWhQU0IyWVd4MVpTNWZiR1Z1WjNSb0tWeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0NkQmNuSmhlU0JzWlc1bmRHaHpJR1JwWm1abGNpNG5LVHRjYmx4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd0xDQnNaVzRnUFNCMGFHbHpMbXhsYm1kMGFFbHVTVzUwY3pzZ2FTQThJR3hsYmpzZ2FTc3JLVnh1SUNBZ0lDQWdkR2hwY3k1ZlpHRjBZVnRwWFNBbVBTQjJZV3gxWlM1ZlpHRjBZVnRwWFR0Y2JseHVJQ0FnSUhSb2FYTXVhVzVqY21WdFpXNTBWbVZ5YzJsdmJpaHViM1JwWm5rcE8xeHVJQ0FnSUhKbGRIVnliaUIwYUdsek8xeHVJQ0I5WEc1Y2JpQWdMeTh2SUZCbGNtWnZjbTF6SUhSb1pTQmlhWFIzYVhObElFRk9SQ0JPVDFRZ2IzQmxjbUYwYVc5dUlHOXVJSFJvWlNCbGJHVnRaVzUwY3lCcGJpQjBhR1VnWTNWeWNtVnVkQ0JpYVhSelpYUmNiaUFnTHk4dklHRm5ZV2x1YzNRZ2RHaGxJR052Y25KbGMzQnZibVJwYm1jZ1pXeGxiV1Z1ZEhNZ2FXNGdkR2hsSUhOd1pXTnBabWxsWkNCaWFYUnpaWFF1WEc0Z0lHRnVaRTV2ZENoMllXeDFaVG9nUW1sMFFYSnlZWGtzSUc1dmRHbG1lU0E5SUhSeWRXVXBPaUJDYVhSQmNuSmhlU0I3WEc0Z0lDQWdhV1lnS0hSb2FYTXVYMnhsYm1kMGFDQWhQU0IyWVd4MVpTNWZiR1Z1WjNSb0tWeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0NkQmNuSmhlU0JzWlc1bmRHaHpJR1JwWm1abGNpNG5LVHRjYmx4dUlDQWdJR052Ym5OMElHeGxiaUE5SUhSb2FYTXViR1Z1WjNSb1NXNUpiblJ6TzF4dUlDQWdJR1p2Y2lBb2JHVjBJRzUxYlRJZ1BTQXdPeUJ1ZFcweUlEd2diR1Z1T3lCdWRXMHlLeXNwWEc0Z0lDQWdJQ0IwYUdsekxsOWtZWFJoVzI1MWJUSmRJQ1k5SUg1MllXeDFaUzVmWkdGMFlWdHVkVzB5WFR0Y2JseHVJQ0FnSUhSb2FYTXVhVzVqY21WdFpXNTBWbVZ5YzJsdmJpaHViM1JwWm5rcE8xeHVJQ0FnSUhKbGRIVnliaUIwYUdsek8xeHVJQ0I5WEc1Y2JpQWdMeTh2SUZCbGNtWnZjbTF6SUhSb1pTQmlhWFIzYVhObElFNVBWQ0JCVGtRZ2IzQmxjbUYwYVc5dUlHOXVJSFJvWlNCbGJHVnRaVzUwY3lCcGJpQjBhR1VnWTNWeWNtVnVkQ0JpYVhSelpYUmNiaUFnTHk4dklHRm5ZV2x1YzNRZ2RHaGxJR052Y25KbGMzQnZibVJwYm1jZ1pXeGxiV1Z1ZEhNZ2FXNGdkR2hsSUhOd1pXTnBabWxsWkNCaWFYUnpaWFF1WEc0Z0lHNXZkRUZ1WkNoMllXeDFaVG9nUW1sMFFYSnlZWGtzSUc1dmRHbG1lU0E5SUhSeWRXVXBPaUJDYVhSQmNuSmhlU0I3WEc0Z0lDQWdhV1lnS0hSb2FYTXVYMnhsYm1kMGFDQWhQU0IyWVd4MVpTNWZiR1Z1WjNSb0tWeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0NkQmNuSmhlU0JzWlc1bmRHaHpJR1JwWm1abGNpNG5LVHRjYmx4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd0xDQnNaVzRnUFNCMGFHbHpMbXhsYm1kMGFFbHVTVzUwY3pzZ2FTQThJR3hsYmpzZ2FTc3JLVnh1SUNBZ0lDQWdkR2hwY3k1ZlpHRjBZVnRwWFNBOUlDaCtkR2hwY3k1ZlpHRjBZVnRwWFNrZ0ppQjJZV3gxWlM1ZlpHRjBZVnRwWFR0Y2JseHVJQ0FnSUhSb2FYTXVhVzVqY21WdFpXNTBWbVZ5YzJsdmJpaHViM1JwWm5rcE8xeHVJQ0FnSUhKbGRIVnliaUIwYUdsek8xeHVJQ0I5WEc1Y2JpQWdMeTh2SUVsdWRtVnlkSE1nWVd4c0lHSnBkQ0IyWVd4MVpYTWdhVzRnZEdobElHTjFjbkpsYm5RZ1ltbDBjMlYwWEc0Z0lHNXZkQ2h1YjNScFpua2dQU0IwY25WbEtUb2dRbWwwUVhKeVlYa2dlMXh1SUNBZ0lHWnZjaUFvYkdWMElHa2dQU0F3TENCc1pXNGdQU0IwYUdsekxteGxibWQwYUVsdVNXNTBjenNnYVNBOElHeGxianNnYVNzcktWeHVJQ0FnSUNBZ2RHaHBjeTVmWkdGMFlWdHBYU0E5SUg1MGFHbHpMbDlrWVhSaFcybGRPMXh1WEc0Z0lDQWdkR2hwY3k1cGJtTnlaVzFsYm5SV1pYSnphVzl1S0c1dmRHbG1lU2s3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE03WEc0Z0lIMWNibHh1SUNBdkx5OGdVR1Z5Wm05eWJYTWdkR2hsSUdKcGRIZHBjMlVnVDFJZ2IzQmxjbUYwYVc5dUlHOXVJSFJvWlNCbGJHVnRaVzUwY3lCcGJpQjBhR1VnWTNWeWNtVnVkQ0JpYVhSelpYUmNiaUFnTHk4dklHRm5ZV2x1YzNRZ2RHaGxJR052Y25KbGMzQnZibVJwYm1jZ1pXeGxiV1Z1ZEhNZ2FXNGdkR2hsSUhOd1pXTnBabWxsWkNCaWFYUnpaWFF1WEc0Z0lHOXlLSFpoYkhWbE9pQkNhWFJCY25KaGVTd2dibTkwYVdaNUlEMGdkSEoxWlNrZ2UxeHVJQ0FnSUdsbUlDaDBhR2x6TGw5c1pXNW5kR2dnSVQwZ2RtRnNkV1V1WDJ4bGJtZDBhQ2xjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpZ25RWEp5WVhrZ2JHVnVaM1JvY3lCa2FXWm1aWEl1SnlrN1hHNWNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdNQ3dnYkdWdUlEMGdkR2hwY3k1c1pXNW5kR2hKYmtsdWRITTdJR2tnUENCc1pXNDdJR2tyS3lsY2JpQWdJQ0FnSUhSb2FYTXVYMlJoZEdGYmFWMGdmRDBnZG1Gc2RXVXVYMlJoZEdGYmFWMDdYRzVjYmlBZ0lDQjBhR2x6TG1sdVkzSmxiV1Z1ZEZabGNuTnBiMjRvYm05MGFXWjVLVHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjenRjYmlBZ2ZWeHVYRzRnSUM4dkx5QlFaWEptYjNKdGN5QjBhR1VnWW1sMGQybHpaU0JsZUdOc2RYTnBkbVVnVDFJZ2IzQmxjbUYwYVc5dUlHOXVJSFJvWlNCbGJHVnRaVzUwY3lCcGJpQjBhR1VnWTNWeWNtVnVkQ0JpYVhSelpYUmNiaUFnTHk4dklHRm5ZV2x1YzNRZ2RHaGxJR052Y25KbGMzQnZibVJwYm1jZ1pXeGxiV1Z1ZEhNZ2FXNGdkR2hsSUhOd1pXTnBabWxsWkNCaWFYUnpaWFF1WEc0Z0lIaHZjaWgyWVd4MVpUb2dRbWwwUVhKeVlYa3NJRzV2ZEdsbWVTQTlJSFJ5ZFdVcElIdGNiaUFnSUNCcFppQW9kR2hwY3k1ZmJHVnVaM1JvSUNFOUlIWmhiSFZsTGw5c1pXNW5kR2dwWEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9KMEZ5Y21GNUlHeGxibWQwYUhNZ1pHbG1abVZ5TGljcE8xeHVYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREFzSUd4bGJpQTlJSFJvYVhNdWJHVnVaM1JvU1c1SmJuUnpPeUJwSUR3Z2JHVnVPeUJwS3lzcFhHNGdJQ0FnSUNCMGFHbHpMbDlrWVhSaFcybGRJRjQ5SUhaaGJIVmxMbDlrWVhSaFcybGRPMXh1WEc0Z0lDQWdkR2hwY3k1cGJtTnlaVzFsYm5SV1pYSnphVzl1S0c1dmRHbG1lU2s3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE03WEc0Z0lIMWNibHh1SUNBdkx5OGdTVzV6WlhKMGN5QnVJREF0WW1sMGN5QmhkQ0J3YjNOcGRHbHZiaUJ3YjNNc0lISmxjMmw2YVc1bklITmxiR1lnWVc1a0lITm9hV1owYVc1bklHSnBkSE1nWVhCd2NtOXdjbWxoZEdWc2VTNWNiaUFnYVc1elpYSjBRWFFvY0c5ek9pQnVkVzFpWlhJc0lHNDZJRzUxYldKbGNpd2dabXhoWnlBOUlHWmhiSE5sS1RvZ2RtOXBaQ0I3WEc0Z0lDQWdkR2hwY3k1aGMzTjFjbVZKYmxKaGJtZGxLSEJ2Y3l3Z01Dd2dkR2hwY3k1ZmJHVnVaM1JvTENBbmNHOXpKeWs3WEc1Y2JpQWdJQ0JwWmlBb2JpQTlQU0F3S1NCeVpYUjFjbTQ3WEc1Y2JpQWdJQ0F2TDFSUFJFODZJRzl3ZEdsdGFYcGxYRzRnSUNBZ0x5OTBhR1VnYlc5emRDQndjbWx0YVhScGRtVWdhVzF3YkdWdFpXNTBZWFJwYjI0c0lHOXdkR2x0YVhwbElHbDBJR3hoZEdWeUlWeHVYRzRnSUNBZ0x5OGdZbVZuYVc1VmNHUmhkR1VvS1R0Y2JpQWdJQ0JqYjI1emRDQnZiR1JzWlc1bmRHZ2dQU0IwYUdsekxsOXNaVzVuZEdnN1hHNGdJQ0FnZEdocGN5NXpaWFJNWlc1bmRHZ29kR2hwY3k1ZmJHVnVaM1JvSUNzZ2JpazdYRzVjYmlBZ0lDQXZMMmxtSUNnaFkyOXVkR0ZwYm5Nb0lXWnNZV2NwS1NCeVpYUjFjbTQ3SUM4dklHNXZkR2hwYm1jZ2RHOGdaRzljYmx4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNCdmJHUnNaVzVuZEdnZ0xTQXhPeUJwSUQ0OUlIQnZjenNnYVMwdEtWeHVJQ0FnSUNBZ2RHaHBjeTV6WlhSQ2FYUW9hU0FySUc0c0lIUm9hWE11WjJWMFFtbDBLR2twS1R0Y2JseHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQndiM003SUdrZ1BDQndiM01nS3lCdU95QnBLeXNwWEc0Z0lDQWdJQ0IwYUdsekxuTmxkRUpwZENocExDQm1iR0ZuS1R0Y2JseHVJQ0FnSUM4dklHVnVaRlZ3WkdGMFpTZ3BPMXh1SUNCOVhHNWNiaUFnTHk4dklFUmxiR1YwWlhNZ2JpQmlhWFJ6SUdKbFoybHVibWx1WnlCaGRDQndiM05wZEdsdmJpQndiM01zSUhKbGMybDZhVzVuSUhObGJHWWdZVzVrSUhOb2FXWjBhVzVuSUhKbGJXRnBibWx1WjF4dUlDQXZMeThnWW1sMGN5QmhjSEJ5YjNCeWFXRjBaV3g1TGx4dUlDQnlaVzF2ZG1WQmRDaHdiM002SUc1MWJXSmxjaXdnYmlBOUlERXBPaUIyYjJsa0lIdGNiaUFnSUNBdkx5QjBhR1VnYlc5emRDQndjbWx0YVhScGRtVWdhVzF3YkdWdFpXNTBZWFJwYjI0c0lHOXdkR2x0YVhwbElHbDBJR3hoZEdWeUlWeHVJQ0FnSUdsbUlDaHVJRHdnTUNsY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduYmlCallXNXViM1FnWW1VZ2JtVm5ZWFJwZG1VbktUdGNibHh1SUNBZ0lIUm9hWE11WVhOemRYSmxTVzVTWVc1blpTaHdiM01zSURBc0lIUm9hWE11WDJ4bGJtZDBhQ0F0SUc0c0lDZHdiM01uS1R0Y2JseHVJQ0FnSUdsbUlDaDBhR2x6TG1OdmJuUmhhVzV6S0hSeWRXVXBLU0I3WEc0Z0lDQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ2NHOXpPeUJwSUR3Z2RHaHBjeTVmYkdWdVozUm9JQzBnYmpzZ2FTc3JLVnh1SUNBZ0lDQWdJQ0IwYUdsekxuTmxkRUpwZENocExDQjBhR2x6TG1kbGRFSnBkQ2hwSUNzZ2Jpa3BPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIUm9hWE11YzJWMFRHVnVaM1JvS0hSb2FYTXVYMnhsYm1kMGFDQXRJRzRwTzF4dUlDQjlYRzVjYmlBZ2NtVnRiM1psUW5sTllYTnJLRzFoYzJzNklFSnBkRUZ5Y21GNUxDQm1iR0ZuSUQwZ2RISjFaU2s2SUVKcGRFRnljbUY1SUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTVmYkdWdVozUm9JQ0U5SUcxaGMyc3ViR1Z1WjNSb0tWeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0Nkc1pXNW5kR2dnSVQwZ2JXRnpheTVzWlc1bmRHZ25LVHRjYmx4dUlDQWdJR2xtSUNodFlYTnJJRDA5SUhSb2FYTXBJSHNnTHk4Z2JtOGdibVZsWkNCMGJ5QnBkR1Z5WVhSbFhHNGdJQ0FnSUNCMGFHbHpMbk5sZEV4bGJtZDBhQ2h0WVhOckxtTnZkVzUwUW1sMGN5Z2habXhoWnlrcE8xeHVJQ0FnSUNBZ2RHaHBjeTV6WlhSQmJHd29JV1pzWVdjcE8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0JzWlhRZ1pITjBTV1I0SUQwZ01EdGNibHh1SUNBZ0lDQWdabTl5SUNoc1pYUWdjM0pqU1dSNElEMGdMVEU3SUNoemNtTkpaSGdnUFNCdFlYTnJMbVpwYm1ST1pYaDBLSE55WTBsa2VDd2dJV1pzWVdjcEtTQWhQU0F0TVRzcFhHNGdJQ0FnSUNBZ0lIUm9hWE11YzJWMFJtRnpkQ2hrYzNSSlpIZ3JLeXdnZEdocGN5NW5aWFJDYVhRb2MzSmpTV1I0S1NrN1hHNWNiaUFnSUNBZ0lIUm9hWE11WDJ4bGJtZDBhQ0E5SUdSemRFbGtlRHRjYmlBZ0lDQWdJSFJvYVhNdVgzWmxjbk5wYjI0ckt6dGNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnZEdocGN6dGNiaUFnZlZ4dVhHNGdJQzh2THlCVGFXMXBiR0Z5SUhSdklIUm9aU0JiWFNCdmNHVnlZWFJ2Y2k1Y2JpQWdaMlYwUW1sMEtIQnZjem9nYm5WdFltVnlLVG9nWW05dmJHVmhiaUI3WEc0Z0lDQWdjbVYwZFhKdUlDaDBhR2x6TGw5a1lYUmhXMDFoZEdndVpteHZiM0lvY0c5eklDOGdNSGd5TUNsZElDWWdLREVnUER3Z0tIQnZjeUFtSURCNE1XWXBLU2tnSVQwZ01EdGNiaUFnZlZ4dVhHNGdJQzh2THlCVGFXMXBiR0Z5SUhSdklIUm9aU0JiWFNCdmNHVnlZWFJ2Y2k1Y2JpQWdjMlYwUW1sMEtIQnZjem9nYm5WdFltVnlMQ0JpYVhRNklHSnZiMnhsWVc0c0lHNXZkR2xtZVNBOUlIUnlkV1VwSUh0Y2JpQWdJQ0IwYUdsekxuTmxkRVpoYzNRb2NHOXpMQ0JpYVhRcE8xeHVJQ0FnSUdsbUlDaHViM1JwWm5rcFhHNGdJQ0FnSUNCMGFHbHpMbDkyWlhKemFXOXVLeXM3WEc0Z0lDQWdaV3h6WlZ4dUlDQWdJQ0FnZEdocGN5NWZkbVZ5YzJsdmJpc3JPMXh1SUNCOVhHNWNiaUFnTHk4dklGTmxkSE1nVzJsZExYUm9JR0pwZENCMGJ5QmJkbUZzZFdWZExDQmtiMlZ6SUc1dmRDQmphR1ZqYXlCaWIzVnVaSE1zSUdSdlpYTWdibTkwSUdsdVkzSmxiV1Z1ZENCMlpYSnphVzl1WEc0Z0lITmxkRVpoYzNRb2FUb2diblZ0WW1WeUxDQjJZV3gxWlRvZ1ltOXZiR1ZoYmlrNklIWnZhV1FnZTF4dUlDQWdJR2xtSUNoMllXeDFaU2xjYmlBZ0lDQWdJSFJvYVhNdVgyUmhkR0ZiVFdGMGFDNW1iRzl2Y2locElDOGdNSGd5TUNsZElIdzlJREVnUER3Z0tHa2dKaUF3ZURGbUtUdGNiaUFnSUNCbGJITmxYRzRnSUNBZ0lDQjBhR2x6TGw5a1lYUmhXMDFoZEdndVpteHZiM0lvYVNBdklEQjRNakFwWFNBbVBTQitLREVnUER3Z0tHa2dKaUF3ZURGbUtTazdYRzRnSUgxY2JseHVJQ0J6WlhSVWNuVmxLSEJ2Y3pvZ2JuVnRZbVZ5S1RvZ2RtOXBaQ0I3WEc0Z0lDQWdkR2hwY3k1ZlpHRjBZVnROWVhSb0xtWnNiMjl5S0hCdmN5QXZJREI0TWpBcFhTQjhQU0F4SUR3OElDaHdiM01nSmlBd2VERm1LVHRjYmlBZ2ZWeHVYRzRnSUhObGRFWmhiSE5sS0hCdmN6b2diblZ0WW1WeUtTQjdYRzRnSUNBZ2RHaHBjeTVmWkdGMFlWdE5ZWFJvTG1ac2IyOXlLSEJ2Y3lBdklEQjRNakFwWFNBbVBTQitLREVnUER3Z0tIQnZjeUFtSURCNE1XWXBLVHRjYmlBZ2ZWeHVYRzRnSUhSeWRXVkRiM1Z1ZENncE9pQnVkVzFpWlhJZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtTnZkVzUwUW1sMGN5aDBjblZsS1R0Y2JpQWdmVnh1WEc0Z0lHWmhiSE5sUTI5MWJuUW9LVG9nYm5WdFltVnlJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVqYjNWdWRFSnBkSE1vWm1Gc2MyVXBPMXh1SUNCOVhHNWNiaUFnTHk4dklFTnZkVzUwY3lCaWFYUnpJRzltSUhSb1pTQnpjR1ZqYVdacFpXUWdkbUZzZFdVdVhHNGdJR052ZFc1MFFtbDBjeWgyWVd4MVpUb2dZbTl2YkdWaGJpazZJRzUxYldKbGNpQjdYRzRnSUNBZ2FXWWdLSFJvYVhNdVgyeGxibWQwYUNBOVBTQXdLU0J5WlhSMWNtNGdNRHRjYmx4dUlDQWdJR2xtSUNoMGFHbHpMbDl6Wld4bFkzUmxaRU52ZFc1MFZtVnljMmx2YmlBaFBTQjBhR2x6TGw5MlpYSnphVzl1S1NCN1hHNGdJQ0FnSUNCMGFHbHpMbDl6Wld4bFkzUmxaRU52ZFc1MElEMGdNRHRjYmlBZ0lDQWdJR052Ym5OMElHeGxiaUE5SUhSb2FYTXViR1Z1WjNSb1NXNUpiblJ6TzF4dUlDQWdJQ0FnYkdWMElHa2dQU0F3TzF4dUlDQWdJQ0FnWm05eUlDZzdJR2tnUENCc1pXNGdMU0F4T3lCcEt5c3BJSHRjYmlBZ0lDQWdJQ0FnWm05eUlDaHNaWFFnYXlBOUlIUm9hWE11WDJSaGRHRmJhVjA3SUdzZ0lUMGdNRHNnYXlBK1BqNDlJRGdwSUhzZ0x5OTBiMlJ2T2lCallYTjBJR1JoZEdGYmFWMGdkRzhnZFdsdWRGeHVJQ0FnSUNBZ0lDQWdJSFJvYVhNdVgzTmxiR1ZqZEdWa1EyOTFiblFnS3owZ1FtbDBRWEp5WVhrdVgyOXVRbWwwUTI5MWJuUmJheUFtSURCNFptWmRPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUM4dklGUm9aU0JzWVhOMElHbHVkQzVjYmlBZ0lDQWdJR3hsZENCcklEMGdkR2hwY3k1ZlpHRjBZVnRwWFR0Y2JpQWdJQ0FnSUdOdmJuTjBJSEpsYldGcGJtbHVaMEpwZEhNZ1BTQjBhR2x6TGw5c1pXNW5kR2dnSmlBd2VERm1PMXh1SUNBZ0lDQWdhV1lnS0hKbGJXRnBibWx1WjBKcGRITWdJVDBnTUNrZ0x5b2dhV1lnY21WdFlXbHVhVzVuUW1sMGN5QTlQU0F3TENCMGFHVWdiR0Z6ZENCcGJuUWdhWE1nWm5Wc2JIa2dkWE5sWkNCaGJtUWdRVXhNSUdKcGRITWdjMmh2ZFd4a0lHSmxJR3hsWm5RZ1lYTWdhWE1nS2k5Y2JpQWdJQ0FnSUNBZ2F5QW1QU0IrS0NnME1qazBPVFkzTWprMUtTQThQQ0J5WlcxaGFXNXBibWRDYVhSektUdGNibHh1SUNBZ0lDQWdabTl5SUNnN0lHc2dJVDBnTURzZ2F5QStQajQ5SURncFhHNGdJQ0FnSUNBZ0lIUm9hWE11WDNObGJHVmpkR1ZrUTI5MWJuUWdLejBnUW1sMFFYSnlZWGt1WDI5dVFtbDBRMjkxYm5SYmF5QW1JREI0Wm1aZE8xeHVYRzRnSUNBZ0lDQjBhR2x6TGw5elpXeGxZM1JsWkVOdmRXNTBWbVZ5YzJsdmJpQTlJSFJvYVhNdVgzWmxjbk5wYjI0N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJQ2gyWVd4MVpTQS9JSFJvYVhNdVgzTmxiR1ZqZEdWa1EyOTFiblFnT2lCMGFHbHpMbDlzWlc1bmRHZ2dMU0IwYUdsekxsOXpaV3hsWTNSbFpFTnZkVzUwS1R0Y2JpQWdmVnh1WEc0Z0lDOHZMeUJTWlhSMWNtNXpJR0VnYm5WdFltVnlJRzltSUhObGRDQmlhWFJ6SUhkb1pYSmxJR0ZzYzI4Z1cyTm9aV05yWFNCcGN5QjBjblZsWEc0Z0lHTnZkVzUwVjJobGNtVW9ZMmhsWTJzNklFWjFibU4wYVc5dUtUb2diblZ0WW1WeUlIdGNiaUFnSUNCc1pYUWdjbVZ6ZFd4MElEMGdNRHRjYmlBZ0lDQnBaaUFvZEdocGN5NTBjblZsUTI5MWJuUW9LU0E5UFNCMGFHbHpMbDlzWlc1bmRHZ3BJSHRjYmlBZ0lDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnZEdocGN5NWZiR1Z1WjNSb095QnBLeXNwWEc0Z0lDQWdJQ0FnSUhKbGMzVnNkQ0FyUFNCamFHVmpheWhwS1NBL0lERWdPaUF3TzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTFRFN0lDaHBJRDBnZEdocGN5NW1hVzVrVG1WNGRDaHBMQ0IwY25WbEtTa2dJVDBnTFRFN0tWeHVJQ0FnSUNBZ0lDQnlaWE4xYkhRZ0t6MGdZMmhsWTJzb2FTa2dQeUF4SURvZ01EdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSEpsYzNWc2REdGNiaUFnZlZ4dVhHNGdJQzh2THlCUVpYSm1iM0p0Y3lCaWFYUWdYQ0poYm1SY0lpQmhibVFnWTI5MWJuUnpJR0pwZEhNZ2IyWWdkR2hsSUhOd1pXTnBabWxsWkNCMllXeDFaU3dnZDJsMGFHOTFkQ0JpYVhSelpYUWdiVzlrYVdacFkyRjBhVzl1TGx4dUlDQmhibVJYYVhSb1EyOTFiblJDYVhSektITmxZMjl1WkRvZ1FtbDBRWEp5WVhrc0lIWmhiSFZsT2lCaWIyOXNaV0Z1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTVmYkdWdVozUm9JRDA5SURBcElISmxkSFZ5YmlBd08xeHVYRzRnSUNBZ2JHVjBJR052ZFc1MElEMGdNRHRjYmlBZ0lDQmpiMjV6ZENCc1pXNGdQU0IwYUdsekxteGxibWQwYUVsdVNXNTBjenRjYmlBZ0lDQnNaWFFnYVNBOUlEQTdYRzRnSUNBZ1ptOXlJQ2c3SUdrZ1BDQnNaVzRnTFNBeE95QnBLeXNwSUh0Y2JpQWdJQ0FnSUdadmNpQW9iR1YwSUdzZ1BTQjBhR2x6TGw5a1lYUmhXMmxkSUNZZ2MyVmpiMjVrTGw5a1lYUmhXMmxkT3lCcklDRTlJREE3SUdzZ1BqNCtQU0E0S1Z4dUlDQWdJQ0FnSUNCamIzVnVkQ0FyUFNCQ2FYUkJjbkpoZVM1ZmIyNUNhWFJEYjNWdWRGdHJJQ1lnTUhobVpsMDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5OGdWR2hsSUd4aGMzUWdhVzUwTGx4dUlDQWdJR3hsZENCcklEMGdkR2hwY3k1ZlpHRjBZVnRwWFNBbUlITmxZMjl1WkM1ZlpHRjBZVnRwWFR0Y2JpQWdJQ0JqYjI1emRDQnlaVzFoYVc1cGJtZENhWFJ6SUQwZ2RHaHBjeTVmYkdWdVozUm9JQ1lnTUhneFpqdGNiaUFnSUNCcFppQW9jbVZ0WVdsdWFXNW5RbWwwY3lBaFBTQXdLVnh1SUNBZ0lDQWdheUFtUFNCK0tDZzBNamswT1RZM01qazFLU0E4UENCeVpXMWhhVzVwYm1kQ2FYUnpLVHRjYmlBZ0lDQm1iM0lnS0RzZ2F5QWhQU0F3T3lCcklENCtQajBnT0NsY2JpQWdJQ0FnSUdOdmRXNTBJQ3M5SUVKcGRFRnljbUY1TGw5dmJrSnBkRU52ZFc1MFcyc2dKaUF3ZUdabVhUdGNibHh1SUNBZ0lISmxkSFZ5YmlBb2RtRnNkV1VnUHlCamIzVnVkQ0E2SUhSb2FYTXVYMnhsYm1kMGFDQXRJR052ZFc1MEtUdGNiaUFnZlZ4dVhHNGdJR05zWldGeUtDazZJSFp2YVdRZ2UxeHVJQ0FnSUhSb2FYTXVjMlYwVEdWdVozUm9LREFwTzF4dUlDQjlYRzVjYmlBZ1kyOXVkR0ZwYm5Nb2RtRnNkV1U2SUdKdmIyeGxZVzRwT2lCaWIyOXNaV0Z1SUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1bWFXNWtUbVY0ZENndE1Td2dkbUZzZFdVcElENDlJREE3WEc0Z0lIMWNibHh1SUNCblpYUWdZV3hzVkhKMVpTZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVqYjNWdWRFSnBkSE1vZEhKMVpTa2dQVDBnZEdocGN5NWZiR1Z1WjNSb08xeHVJQ0I5WEc1Y2JpQWdaMlYwSUdGc2JFWmhiSE5sS0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtTnZkVzUwUW1sMGN5aG1ZV3h6WlNrZ1BUMGdkR2hwY3k1ZmJHVnVaM1JvTzF4dUlDQjlYRzVjYmlBZ1oyVjBJR0Z1ZVZSeWRXVW9LU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WTI5MWJuUkNhWFJ6S0hSeWRXVXBJRDRnTUR0Y2JpQWdmVnh1WEc0Z0lHZGxkQ0JoYm5sR1lXeHpaU2dwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1amIzVnVkRUpwZEhNb1ptRnNjMlVwSUQ0Z01EdGNiaUFnZlZ4dVhHNGdJQzh2THlCU1pYUjFjbTV6SUhSb1pTQndiM05wZEdsdmJpQnZaaUIwYUdVZ2JtVjRkQ0JpYVhRZ2IyWWdkR2hsSUhOd1pXTnBabWxsWkNCMllXeDFaU3dnYzNSaGNuUnBibWNnWm5KdmJTQjBhR1VnYzNCbFkybG1hV1ZrSUhCdmMybDBhVzl1TGx4dUlDQXZMeThnVW1WMGRYSnVjeUF0TVN3Z2FXWWdkR2hsY21VZ1lYSmxJRzV2SUhOMVkyZ2dZbWwwY3k1Y2JpQWdabWx1WkU1bGVIUW9hVzVrWlhnNklHNTFiV0psY2l3Z2RtRnNkV1VnUFNCMGNuVmxLVG9nYm5WdFltVnlJSHRjYmlBZ0lDQjBhR2x6TG1GemMzVnlaVWx1VW1GdVoyVW9hVzVrWlhnc0lDMHhMQ0IwYUdsekxsOXNaVzVuZEdnc0lDZHBibVJsZUNjcE8xeHVYRzRnSUNBZ2FXWWdLR2x1WkdWNElENDlJSFJvYVhNdVgyeGxibWQwYUNBdElERXBJSEpsZEhWeWJpQXRNVHRjYmlBZ0lDQnBibVJsZUNBOUlHbHVaR1Y0SUR3Z01DQS9JREFnT2lCcGJtUmxlQ0FySURFN0lDOHZJSE5yYVhBZ2MzUmhjblJjYmlBZ0lDQnNaWFFnZFc1MWMyVmtRbWwwY3lBOUlHbHVaR1Y0SUNZZ01IZ3haanRjYmlBZ0lDQmpiMjV6ZENCdWRXMUpiblJ6SUQwZ2RHaHBjeTVzWlc1bmRHaEpia2x1ZEhNN1hHNWNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdUV0YwYUM1bWJHOXZjaWhwYm1SbGVDQXZJRE15S1RzZ2FTQThJRzUxYlVsdWRITTdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ2JHVjBJR3NnUFNBb2RtRnNkV1VnUHlCMGFHbHpMbDlrWVhSaFcybGRJRG9nZm5Sb2FYTXVYMlJoZEdGYmFWMHBPeUF2THlCMWFXNTBJR05oYzNSY2JpQWdJQ0FnSUdsbUlDaDFiblZ6WldSQ2FYUnpJQ0U5SURBcElIdGNiaUFnSUNBZ0lDQWdheUFtUFNBb0tEQjRabVptWm1abVptWWdQRHdnZFc1MWMyVmtRbWwwY3lrZ0ppQXdlR1ptWm1abVptWm1LVHRjYmlBZ0lDQWdJQ0FnZFc1MWMyVmtRbWwwY3lBOUlEQTdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLQ0YyWVd4MVpTQW1KaUJySUQwOUlDMDBNamswT1RZM01qazJLU0F2S2lCc2IyOXJhVzVuSUdadmNpQm1ZV3h6WlN3Z1lXeHNJR0pwZEhNZ1lYSmxJSE5sZENBcUwzdGNiaUFnSUNBZ0lDQWdZMjl1ZEdsdWRXVTdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJR1p2Y2lBb2JHVjBJR29nUFNBd095QnJJQ0U5SURBN0lHb2dLejBnT0N3Z2F5QStQajQ5SURncElIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2NDQTlJRUpwZEVGeWNtRjVMbDltYVhKemRFOXVRbWwwVzJzZ0ppQXdlR1ptWFR0Y2JpQWdJQ0FnSUNBZ2FXWWdLSEFnUGowZ01Da2dlMXh1SUNBZ0lDQWdJQ0FnSUdsdVpHVjRJRDBnY0NBcklDaHBJQ29nTXpJcElDc2dhanRjYmlBZ0lDQWdJQ0FnSUNCcFppQW9hVzVrWlhnZ1BqMGdkR2hwY3k1ZmJHVnVaM1JvS1NCeVpYUjFjbTRnTFRFN1hHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHbHVaR1Y0TzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQXRNVHRjYmlBZ2ZWeHVYRzRnSUM4dkx5QkdhVzVrY3lCd2NtVjJhVzkxY3lCaWFYUWdiMllnZEdobElITndaV05wWm1sbFpDQjJZV3gxWlNCcGJpQjBhR1VnWW1sMGMyVjBMbHh1SUNCbWFXNWtVSEpsZGlocGJtUmxlRG9nYm5WdFltVnlMQ0IyWVd4MVpTQTlJSFJ5ZFdVcE9pQnVkVzFpWlhJZ2UxeHVJQ0FnSUdsbUlDaHBibVJsZUNBOVBTQXdLU0J5WlhSMWNtNGdMVEU3WEc0Z0lDQWdkR2hwY3k1aGMzTjFjbVZKYmxKaGJtZGxLR2x1WkdWNExDQXRNU3dnZEdocGN5NWZiR1Z1WjNSb0xDQW5hVzVrWlhnbktUdGNibHh1SUNBZ0lHbHVaR1Y0SUQwZ2FXNWtaWGdnUENBd0lEOGdkR2hwY3k1ZmJHVnVaM1JvSUMwZ01TQTZJR2x1WkdWNElDMGdNVHNnTHk4Z2MydHBjQ0J6ZEdGeWRGeHVYRzRnSUNBZ1kyOXVjM1FnYkdGemRFbHVkRWxrZUNBOUlFMWhkR2d1Wm14dmIzSW9hVzVrWlhnZ0x5QXdlREl3S1R0Y2JpQWdJQ0JzWlhRZ2NtVnRZV2x1YVc1blFtbDBjeUE5SUNocGJtUmxlQ0FySURFcElDWWdNSGd4Wmp0Y2JseHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQnNZWE4wU1c1MFNXUjRPeUJwSUQ0OUlEQTdJR2t0TFNrZ2UxeHVJQ0FnSUNBZ2JHVjBJR3NnUFNBb2RtRnNkV1VnUHlCMGFHbHpMbDlrWVhSaFcybGRJRG9nZm5Sb2FYTXVYMlJoZEdGYmFWMHBPeUF2THlCallYTjBYRzRnSUNBZ0lDQnBaaUFvY21WdFlXbHVhVzVuUW1sMGN5QWhQU0F3S1NCN1hHNGdJQ0FnSUNBZ0lHc2dKajBnZmlnb05ESTVORGsyTnpJNU5Ta2dQRHdnY21WdFlXbHVhVzVuUW1sMGN5azdYRzRnSUNBZ0lDQWdJSEpsYldGcGJtbHVaMEpwZEhNZ1BTQXdPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdabTl5SUNoc1pYUWdhaUE5SURJME95QnJJQ0U5SURBN0lHb2dMVDBnT0N3Z2F5QThQRDBnT0NrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCd0lEMGdRbWwwUVhKeVlYa3VYMnhoYzNSUGJrSnBkRnRySUQ0K1BpQXdlREU0WFR0Y2JpQWdJQ0FnSUNBZ2FXWWdLSEFnUGowZ01DbGNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjQ0FySUNocElDb2dNeklwSUNzZ2FqdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJQzB4TzF4dUlDQjlYRzU5WEc0aVhYMD0iLCIvKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG5pbXBvcnQgKiBhcyB1bWogZnJvbSAndW1hcC1qcyc7XG5pbXBvcnQgeyBUU05FIH0gZnJvbSAnQGtlY2tlbHQvdHNuZSc7XG5pbXBvcnQgeyBWZWN0b3IsIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdHlwZS1kZWNsYXJhdGlvbnMnO1xuaW1wb3J0IHsgdHJhbnNwb3NlTWF0cml4LCBhc3NlcnQsIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdmVjdG9yLW9wZXJhdGlvbnMnO1xuaW1wb3J0IHsgU1BFQmFzZSwgUFNQRUJhc2UsIE9yaWdpbmFsU1BFIH0gZnJvbSAnLi9zcGUnO1xuaW1wb3J0IHsgTWVhc3VyZSwgQXZhaWxhYmxlTWV0cmljcywgaXNCaXRBcnJheU1ldHJpYyB9IGZyb20gJy4vdHlwZWQtbWV0cmljcy90eXBlZC1tZXRyaWNzJztcbmltcG9ydCBCaXRBcnJheSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy9iaXQtYXJyYXknO1xuaW1wb3J0IHsgRGlzdGFuY2VNYXRyaXgsIERpc3RhbmNlTWF0cml4U2VydmljZSwgZGlzdGFuY2VNYXRyaXhQcm94eSwgZG1MaW5lYXJJbmRleCB9IGZyb20gJy4vZGlzdGFuY2UtbWF0cml4JztcbmV4cG9ydCB2YXIgRGltUmVkdWN0aW9uTWV0aG9kcztcbihmdW5jdGlvbiAoRGltUmVkdWN0aW9uTWV0aG9kcykge1xuICAgIERpbVJlZHVjdGlvbk1ldGhvZHNbXCJVTUFQXCJdID0gXCJVTUFQXCI7XG4gICAgRGltUmVkdWN0aW9uTWV0aG9kc1tcIlRfU05FXCJdID0gXCJ0LVNORVwiO1xufSkoRGltUmVkdWN0aW9uTWV0aG9kcyB8fCAoRGltUmVkdWN0aW9uTWV0aG9kcyA9IHt9KSk7XG4vKiogVW1hcCB1c2VzIHByZWNhbGN1bGF0ZWQgZGlzdGFuY2UgbWF0cml4IHRvIHNhdmUgdGltZS4gdGhvdWdoIGZvciB0b28gbXVjaCBkYXRhLCBtZW1vcnkgYmVjb21lcyBjb25zdHJhaW50LlxuICogaWYgd2UgaGF2ZSAxMDAgMDAwIHJvd3MsIGRpc3RhbmNlIG1hdHJpeCB3aWxsIHRha2UgfjEwZ2Igb2YgbWVtb3J5IGFuZCBwcm9iYWJseSBvdmVyZmxvdy5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BWF9ESVNUQU5DRV9NQVRSSVhfUk9XUyA9IDIwMDAwO1xuZXhwb3J0IGNsYXNzIFVNQVBPcHRpb25zIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5sZWFybmluZ1JhdGUgPSB7IHVpTmFtZTogJ0xlYXJpbmlnIHJhdGUnLCB2YWx1ZTogMSwgdG9vbHRpcDogJ1RoZSBpbml0aWFsIGxlYXJuaW5nIHJhdGUgZm9yIHRoZSBlbWJlZGRpbmcgb3B0aW1pemF0aW9uJyB9O1xuICAgICAgICB0aGlzLm5Db21wb25lbnRzID0geyB1aU5hbWU6ICdDb21wb25lbnRzJywgdmFsdWU6IDIsIHRvb2x0aXA6ICdUaGUgbnVtYmVyIG9mIGNvbXBvbmVudHMgKGRpbWVuc2lvbnMpIHRvIHByb2plY3QgdGhlIGRhdGEgdG8nIH07XG4gICAgICAgIHRoaXMubkVwb2NocyA9IHsgdWlOYW1lOiAnRXBvY2hzJywgdmFsdWU6IDAsIHRvb2x0aXA6ICdUaGUgbnVtYmVyIG9mIGVwb2NocyB0byBvcHRpbWl6ZSBlbWJlZGRpbmdzIHZpYSBTR0QuIENvbXB1dGVkIGF1dG9tYXRpY2FsbHkgaWYgc2V0IHRvIDAnIH07XG4gICAgICAgIHRoaXMubk5laWdoYm9ycyA9IHsgdWlOYW1lOiAnTmVpZ2hib3JzJywgdmFsdWU6IDE1LCB0b29sdGlwOiAnVGhlIG51bWJlciBvZiBuZWFyZXN0IG5laWdoYm9ycyB0byBjb25zdHJ1Y3QgdGhlIGZ1enp5IG1hbmlmb2xkJyB9O1xuICAgICAgICB0aGlzLnNwcmVhZCA9IHsgdWlOYW1lOiAnU3ByZWFkJywgdmFsdWU6IDEsIHRvb2x0aXA6ICdUaGUgZWZmZWN0aXZlIHNjYWxlIG9mIGVtYmVkZGVkIHBvaW50cywgdXNlZCB3aXRoIG1pbiBkaXN0YW5jZSB0byBjb250cm9sIHRoZSBjbHVtcGVkL2Rpc3BlcnNlZCBuYXR1cmUgb2YgdGhlIGVtYmVkZGluZycgfTtcbiAgICAgICAgdGhpcy5taW5EaXN0ID0geyB1aU5hbWU6ICdNaW4gZGlzdGFuY2UnLCB2YWx1ZTogMC4xLCB0b29sdGlwOiAnVGhlIGVmZmVjdGl2ZSBtaW5pbXVtIGRpc3RhbmNlIGJldHdlZW4gZW1iZWRkZWQgcG9pbnRzLCB1c2VkIHdpdGggc3ByZWFkIHRvIGNvbnRyb2wgdGhlIGNsdW1wZWQvZGlzcGVyc2VkIG5hdHVyZSBvZiB0aGUgZW1iZWRkaW5nJyB9O1xuICAgIH1cbiAgICA7XG59XG5leHBvcnQgY2xhc3MgVFNORU9wdGlvbnMge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmVwc2lsb24gPSB7IHVpTmFtZTogJ0Vwc2lsb24nLCB2YWx1ZTogMTAsIHRvb2x0aXA6ICdFcHNpbG9uIGlzIGxlYXJuaW5nIHJhdGUnIH07XG4gICAgICAgIHRoaXMucGVycGxleGl0eSA9IHsgdWlOYW1lOiAnUGVycGxleGl0eScsIHZhbHVlOiAzMCwgdG9vbHRpcDogJ1JvdWdobHkgaG93IG1hbnkgbmVpZ2hib3JzIGVhY2ggcG9pbnQgaW5mbHVlbmNlcycgfTtcbiAgICAgICAgdGhpcy5kaW0gPSB7IHVpTmFtZTogJ0RpbWVuc2lvbmFsaXR5JywgdmFsdWU6IDIsIHRvb2x0aXA6ICdEaW1lbnNpb25hbGl0eSBvZiB0aGUgZW1iZWRkaW5nJyB9O1xuICAgIH1cbiAgICA7XG59XG4vKiogQWJzdHJhY3QgZGltZW5zaW9uYWxpdHkgcmVkdWNlciAqL1xuY2xhc3MgUmVkdWNlciB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICB0aGlzLmRhdGEgPSBvcHRpb25zLmRhdGE7XG4gICAgfVxufVxuLyoqIHQtU05FIGRpbWVuc2lvbmFsaXR5IHJlZHVjdGlvbi4gKi9cbmNsYXNzIFRTTkVSZWR1Y2VyIGV4dGVuZHMgUmVkdWNlciB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBUU05FUmVkdWNlci5cbiAgICAgKiBAcGFyYW0ge09wdGlvbnN9IG9wdGlvbnMgT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgKiBAbWVtYmVyb2YgVFNORVJlZHVjZXJcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLnJlZHVjZXIgPSBuZXcgVFNORShvcHRpb25zKTtcbiAgICAgICAgdGhpcy5pdGVyYXRpb25zID0gb3B0aW9ucz8uaXRlcmF0aW9ucyA/PyAxMDA7XG4gICAgICAgIHRoaXMuZGlzdGFuY2VGbmFtZSA9IG9wdGlvbnMuZGlzdGFuY2VGbmFtZTtcbiAgICAgICAgdGhpcy5kaXN0YW5jZUZuID0gb3B0aW9ucy5kaXN0YW5jZUZuO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFbWJlZHMgdGhlIGRhdGEgZ2l2ZW4gaW50byB0aGUgdHdvLWRpbWVuc2lvbmFsIHNwYWNlIHVzaW5nIHQtU05FIG1ldGhvZC5cXFxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3BhcmFsbGVsRGlzdGFuY2VXb3JrZXJzXSBXaGV0aGVyIHRvIHVzZSBwYXJhbGxlbCBkaXN0YW5jZSB3b3JrZXJzLlxuICAgICAqIEByZXR1cm4ge2FueX0gQ2FydGVzaWFuIGNvb3JkaW5hdGUgb2YgdGhpcyBlbWJlZGRpbmcgYW5kIGRpc3RhbmNlIG1hdHJpeCB3aGVyZSBhcHBsaWNhYmxlLlxuICAgICAqL1xuICAgIGFzeW5jIHRyYW5zZm9ybShwYXJhbGxlbERpc3RhbmNlV29ya2Vycykge1xuICAgICAgICBjb25zdCBkaXN0YW5jZSA9IHBhcmFsbGVsRGlzdGFuY2VXb3JrZXJzID8gYXdhaXQgKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1hdHJpeFNlcnZpY2UgPSBuZXcgRGlzdGFuY2VNYXRyaXhTZXJ2aWNlKHRydWUsIGZhbHNlKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlzdCA9IGF3YWl0IG1hdHJpeFNlcnZpY2UuY2FsYyh0aGlzLmRhdGEsIHRoaXMuZGlzdGFuY2VGbmFtZSk7XG4gICAgICAgICAgICAgICAgbWF0cml4U2VydmljZS50ZXJtaW5hdGUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGlzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgbWF0cml4U2VydmljZS50ZXJtaW5hdGUoKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSgpIDpcbiAgICAgICAgICAgICgoKSA9PiB7IGNvbnN0IHJldCA9IERpc3RhbmNlTWF0cml4LmNhbGModGhpcy5kYXRhLCAoYSwgYikgPT4gdGhpcy5kaXN0YW5jZUZuKGEsIGIpKTsgcmV0Lm5vcm1hbGl6ZSgpOyByZXR1cm4gcmV0LmRhdGE7IH0pKCk7XG4gICAgICAgIGNvbnN0IG1hdHJpeFByb3h5ID0gZGlzdGFuY2VNYXRyaXhQcm94eShkaXN0YW5jZSwgdGhpcy5kYXRhLmxlbmd0aCk7XG4gICAgICAgIHRoaXMucmVkdWNlci5pbml0RGF0YURpc3QobWF0cml4UHJveHkpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuaXRlcmF0aW9uczsgKytpKVxuICAgICAgICAgICAgdGhpcy5yZWR1Y2VyLnN0ZXAoKTsgLy8gZXZlcnkgdGltZSB5b3UgY2FsbCB0aGlzLCBzb2x1dGlvbiBnZXRzIGJldHRlclxuICAgICAgICByZXR1cm4geyBkaXN0YW5jZTogZGlzdGFuY2UsIGVtYmVkZGluZzogdGhpcy5yZWR1Y2VyLmdldFNvbHV0aW9uKCkgfTtcbiAgICB9XG59XG4vKipcbiAqIEltcGxlbWVudHMgVU1BUCBkaW1lbnNpb25hbGl0eSByZWR1Y3Rpb24uXG4gKlxuICogQGNsYXNzIFVNQVBSZWR1Y2VyXG4gKiBAZXh0ZW5kcyB7UmVkdWNlcn1cbiAqL1xuY2xhc3MgVU1BUFJlZHVjZXIgZXh0ZW5kcyBSZWR1Y2VyIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFVNQVBSZWR1Y2VyLlxuICAgICAqIEBwYXJhbSB7T3B0aW9uc30gb3B0aW9ucyBPcHRpb25zIHRvIHBhc3MgdG8gdGhlIGNvbnN0cnVjdG9yLlxuICAgICAqIEBtZW1iZXJvZiBVTUFQUmVkdWNlclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIGFzc2VydCgnZGlzdGFuY2VGbmFtZScgaW4gb3B0aW9ucyk7XG4gICAgICAgIGFzc2VydCgnZGlzdGFuY2VGbicgaW4gb3B0aW9ucyk7XG4gICAgICAgIHRoaXMuZGlzdGFuY2VGbiA9IG9wdGlvbnMuZGlzdGFuY2VGbjtcbiAgICAgICAgdGhpcy5kaXN0YW5jZUZuYW1lID0gb3B0aW9ucy5kaXN0YW5jZUZuYW1lO1xuICAgICAgICB0aGlzLmRtSW5kZXhGdW5jID0gZG1MaW5lYXJJbmRleCh0aGlzLmRhdGEubGVuZ3RoKTtcbiAgICAgICAgLy9VbWFwIHVzZXMgdmVjdG9yIGluZGV4aW5nLCBzbyB3ZSBuZWVkIHRvIGNyZWF0ZSBhbiBhcnJheSBvZiB2ZWN0b3JzIGFzIGluZGVjZXMuXG4gICAgICAgIHRoaXMudmVjdG9ycyA9IG5ldyBBcnJheSh0aGlzLmRhdGEubGVuZ3RoKS5maWxsKDApLm1hcCgoXywgaSkgPT4gW2ldKTtcbiAgICAgICAgdGhpcy51c2luZ0Rpc3RhbmNlTWF0cml4ID0gISghb3B0aW9ucy5wcmVDYWxjdWxhdGVEaXN0YW5jZU1hdHJpeCAmJiB0aGlzLmRhdGEubGVuZ3RoID4gTUFYX0RJU1RBTkNFX01BVFJJWF9ST1dTKTtcbiAgICAgICAgaWYgKCF0aGlzLnVzaW5nRGlzdGFuY2VNYXRyaXgpXG4gICAgICAgICAgICBvcHRpb25zLmRpc3RhbmNlRm4gPSB0aGlzLl9lbmNvZGVkRGlzdGFuY2UuYmluZCh0aGlzKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgb3B0aW9ucy5kaXN0YW5jZUZuID0gdGhpcy5fZW5jb2RlZERpc3RhbmNlTWF0cml4LmJpbmQodGhpcyk7XG4gICAgICAgIGlmICh0aGlzLmRhdGEubGVuZ3RoIDwgMTUpXG4gICAgICAgICAgICBvcHRpb25zLm5OZWlnaGJvcnMgPSB0aGlzLmRhdGEubGVuZ3RoIC0gMTtcbiAgICAgICAgdGhpcy5yZWR1Y2VyID0gbmV3IHVtai5VTUFQKG9wdGlvbnMpO1xuICAgICAgICAvLyB0aGlzLnJlZHVjZXIuZGlzdGFuY2VGbiA9IHRoaXMuX2VuY29kZWREaXN0YW5jZS5iaW5kKHRoaXMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDdXN0b20gZGlzdGFuY2Ugd3JhcHBlciB0byBoYXZlIG51bWVyaWMgaW5wdXRzIGluc3RlYWQgb2Ygc3RyaW5nIG9uZXMuXG4gICAgICpcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICogQHBhcmFtIHtudW1iZXJbXX0gYSBUaGUgZmlyc3QgaXRlbS5cbiAgICAgKiBAcGFyYW0ge251bWJlcltdfSBiIFRoZSBmaXJzdCBpdGVtLlxuICAgICAqIEByZXR1cm4ge251bWJlcn0gRGlzdGFuY2UgbWV0cmljLlxuICAgICAqIEBtZW1iZXJvZiBVTUFQUmVkdWNlclxuICAgICAqL1xuICAgIF9lbmNvZGVkRGlzdGFuY2VNYXRyaXgoYSwgYikge1xuICAgICAgICBpZiAoYVswXSA9PT0gYlswXSlcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICBpZiAoYVswXSA+IGJbMF0pXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kaXN0YW5jZU1hdHJpeFt0aGlzLmRtSW5kZXhGdW5jKGJbMF0sIGFbMF0pXTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzdGFuY2VNYXRyaXhbdGhpcy5kbUluZGV4RnVuYyhhWzBdLCBiWzBdKV07XG4gICAgfVxuICAgIF9lbmNvZGVkRGlzdGFuY2UoYSwgYikge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXN0YW5jZUZuKHRoaXMuZGF0YVthWzBdXSwgdGhpcy5kYXRhW2JbMF1dKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRW1iZWRzIHRoZSBkYXRhIGdpdmVuIGludG8gdGhlIHR3by1kaW1lbnNpb25hbCBzcGFjZSB1c2luZyBVTUFQIG1ldGhvZC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtwYXJhbGxlbERpc3RhbmNlV29ya2Vyc10gV2hldGhlciB0byB1c2UgcGFyYWxsZWwgZGlzdGFuY2UgbWF0cml4IHdvcmtlcnMuXG4gICAgICogQHJldHVybiB7YW55fSBDYXJ0ZXNpYW4gY29vcmRpbmF0ZSBvZiB0aGlzIGVtYmVkZGluZy5cbiAgICAgKi9cbiAgICBhc3luYyB0cmFuc2Zvcm0ocGFyYWxsZWxEaXN0YW5jZVdvcmtlcnMpIHtcbiAgICAgICAgaWYgKHRoaXMudXNpbmdEaXN0YW5jZU1hdHJpeCkge1xuICAgICAgICAgICAgdGhpcy5kaXN0YW5jZU1hdHJpeCA9IHBhcmFsbGVsRGlzdGFuY2VXb3JrZXJzID8gYXdhaXQgKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXRyaXhTZXJ2aWNlID0gbmV3IERpc3RhbmNlTWF0cml4U2VydmljZSh0cnVlLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlzdCA9IGF3YWl0IG1hdHJpeFNlcnZpY2UuY2FsYyh0aGlzLmRhdGEsIHRoaXMuZGlzdGFuY2VGbmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIG1hdHJpeFNlcnZpY2UudGVybWluYXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkaXN0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICBtYXRyaXhTZXJ2aWNlLnRlcm1pbmF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKCkgOlxuICAgICAgICAgICAgICAgICgoKSA9PiB7IGNvbnN0IHJldCA9IERpc3RhbmNlTWF0cml4LmNhbGModGhpcy5kYXRhLCAoYSwgYikgPT4gdGhpcy5kaXN0YW5jZUZuKGEsIGIpKTsgcmV0dXJuIHJldC5kYXRhOyB9KSgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVtYmVkZGluZyA9IHRoaXMucmVkdWNlci5maXQodGhpcy52ZWN0b3JzKTtcbiAgICAgICAgZnVuY3Rpb24gYXJyYXlDYXN0MkNvb3JkaW5hdGVzKGRhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQXJyYXkoZGF0YS5sZW5ndGgpLmZpbGwoMCkubWFwKChfLCBpKSA9PiAoVmVjdG9yLmZyb20oZGF0YVtpXSkpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBlbWJlZGRpbmc6IGFycmF5Q2FzdDJDb29yZGluYXRlcyhlbWJlZGRpbmcpLCAuLi4odGhpcy5kaXN0YW5jZU1hdHJpeCA/IHsgZGlzdGFuY2U6IHRoaXMuZGlzdGFuY2VNYXRyaXggfSA6IHt9KSB9O1xuICAgIH1cbn1cbi8qKlxuICogSW1wbGVtZW50cyBvcmlnaW5hbCBTUEUgZGltZW5zaW9uYWxpdHkgcmVkdWN0aW9uLlxuICpcbiAqIEBjbGFzcyBTUEVSZWR1Y2VyXG4gKiBAZXh0ZW5kcyB7UmVkdWNlcn1cbiAqL1xuY2xhc3MgU1BFUmVkdWNlciBleHRlbmRzIFJlZHVjZXIge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgU1BFUmVkdWNlci5cbiAgICAgKiBAcGFyYW0ge09wdGlvbnN9IG9wdGlvbnMgT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgKiBAbWVtYmVyb2YgU1BFUmVkdWNlclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIHRoaXMucmVkdWNlciA9IG5ldyBTUEVCYXNlKG9wdGlvbnMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFbWJlZHMgdGhlIGRhdGEgZ2l2ZW4gaW50byB0aGUgdHdvLWRpbWVuc2lvbmFsIHNwYWNlIHVzaW5nIHRoZSBvcmlnaW5hbCBTUEUgbWV0aG9kLlxuICAgICAqIEByZXR1cm4ge2FueX0gQ2FydGVzaWFuIGNvb3JkaW5hdGUgb2YgdGhpcyBlbWJlZGRpbmcgYW5kIGRpc3RhbmNlIG1hdHJpeCB3aGVyZSBhcHBsaWNhYmxlLlxuICAgICAqL1xuICAgIGFzeW5jIHRyYW5zZm9ybSgpIHtcbiAgICAgICAgY29uc3QgZW1iID0gYXdhaXQgdGhpcy5yZWR1Y2VyLmVtYmVkKHRoaXMuZGF0YSk7XG4gICAgICAgIHJldHVybiB7IGRpc3RhbmNlOiB0aGlzLnJlZHVjZXIuZGlzdGFuY2UsIGVtYmVkZGluZzogZW1iIH07XG4gICAgfVxufVxuLyoqXG4gKiBJbXBsZW1lbnRzIG1vZGlmaWVkIFNQRSBkaW1lbnNpb25hbGl0eSByZWR1Y3Rpb24uXG4gKlxuICogQGNsYXNzIFBTUEVSZWR1Y2VyXG4gKiBAZXh0ZW5kcyB7UmVkdWNlcn1cbiAqL1xuY2xhc3MgUFNQRVJlZHVjZXIgZXh0ZW5kcyBSZWR1Y2VyIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFBTUEVSZWR1Y2VyLlxuICAgICAqIEBwYXJhbSB7T3B0aW9uc30gb3B0aW9ucyBPcHRpb25zIHRvIHBhc3MgdG8gdGhlIGNvbnN0cnVjdG9yLlxuICAgICAqIEBtZW1iZXJvZiBQU1BFUmVkdWNlclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIHRoaXMucmVkdWNlciA9IG5ldyBQU1BFQmFzZShvcHRpb25zKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRW1iZWRzIHRoZSBkYXRhIGdpdmVuIGludG8gdGhlIHR3by1kaW1lbnNpb25hbCBzcGFjZSB1c2luZyB0aGUgbW9kaWZpZWQgU1BFIG1ldGhvZC5cbiAgICAgKiBAcmV0dXJuIHthbnl9IENhcnRlc2lhbiBjb29yZGluYXRlIG9mIHRoaXMgZW1iZWRkaW5nIGFuZCBkaXN0YW5jZSBtYXRyaXggd2hlcmUgYXBwbGljYWJsZS5cbiAgICAgKi9cbiAgICBhc3luYyB0cmFuc2Zvcm0oKSB7XG4gICAgICAgIGNvbnN0IGVtYiA9IGF3YWl0IHRoaXMucmVkdWNlci5lbWJlZCh0aGlzLmRhdGEpO1xuICAgICAgICByZXR1cm4geyBkaXN0YW5jZTogdGhpcy5yZWR1Y2VyLmRpc3RhbmNlLCBlbWJlZGRpbmc6IGVtYiB9O1xuICAgIH1cbn1cbi8qKlxuICogSW1wbGVtZW50cyBvcmlnaW5hbCBTUEUgZGltZW5zaW9uYWxpdHkgcmVkdWN0aW9uLlxuICpcbiAqIEBjbGFzcyBPcmlnaW5hbFNQRVJlZHVjZXJcbiAqIEBleHRlbmRzIHtSZWR1Y2VyfVxuICovXG5jbGFzcyBPcmlnaW5hbFNQRVJlZHVjZXIgZXh0ZW5kcyBSZWR1Y2VyIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIE9yaWdpbmFsU1BFUmVkdWNlci5cbiAgICAgKiBAcGFyYW0ge09wdGlvbnN9IG9wdGlvbnMgT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgKiBAbWVtYmVyb2YgT3JpZ2luYWxTUEVSZWR1Y2VyXG4gICAgICovXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5yZWR1Y2VyID0gbmV3IE9yaWdpbmFsU1BFKG9wdGlvbnMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFbWJlZHMgdGhlIGRhdGEgZ2l2ZW4gaW50byB0aGUgdHdvLWRpbWVuc2lvbmFsIHNwYWNlIHVzaW5nIHRoZSBvcmlnaW5hbCBTUEUgbWV0aG9kLlxuICAgICAqIEByZXR1cm4ge2FueX0gQ2FydGVzaWFuIGNvb3JkaW5hdGUgb2YgdGhpcyBlbWJlZGRpbmcgYW5kIGRpc3RhbmNlIG1hdHJpeCB3aGVyZSBhcHBsaWNhYmxlLlxuICAgICAqL1xuICAgIGFzeW5jIHRyYW5zZm9ybSgpIHtcbiAgICAgICAgY29uc3QgZW1iID0gYXdhaXQgdGhpcy5yZWR1Y2VyLmVtYmVkKHRoaXMuZGF0YSk7XG4gICAgICAgIHJldHVybiB7IGRpc3RhbmNlOiB0aGlzLnJlZHVjZXIuZGlzdGFuY2UsIGVtYmVkZGluZzogZW1iIH07XG4gICAgfVxufVxuY29uc3QgQXZhaWxhYmxlUmVkdWNlcnMgPSB7XG4gICAgJ1VNQVAnOiBVTUFQUmVkdWNlcixcbiAgICAndC1TTkUnOiBUU05FUmVkdWNlcixcbiAgICAnU1BFJzogU1BFUmVkdWNlcixcbiAgICAncFNQRSc6IFBTUEVSZWR1Y2VyLFxuICAgICdPcmlnaW5hbFNQRSc6IE9yaWdpbmFsU1BFUmVkdWNlcixcbn07XG4vKipcbiAqIFVuaWZpZWQgY2xhc3MgaW1wbGVtZW50aW5nIGRpZmZlcmVudCBkaW1lbnNpb25hbGl0eSByZWR1Y3Rpb24gbWV0aG9kcy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgRGltZW5zaW9uYWxpdHlSZWR1Y2VyXG4gKi9cbmV4cG9ydCBjbGFzcyBEaW1lbnNpb25hbGl0eVJlZHVjZXIge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgRGltZW5zaW9uYWxpdHlSZWR1Y2VyLlxuICAgICAqIEBwYXJhbSB7YW55W119IGRhdGEgVmVjdG9ycyB0byBlbWJlZC5cbiAgICAgKiBAcGFyYW0ge0tub3duTWV0aG9kc30gbWV0aG9kIEVtYmVkZGluZyBtZXRob2QgdG8gYmUgYXBwbGllZFxuICAgICAqIEBwYXJhbSB7S25vd25NZXRyaWNzfSBtZXRyaWMgRGlzdGFuY2UgbWV0cmljIHRvIGJlIGNvbXB1dGVkIGJldHdlZW4gZWFjaCBvZiB0aGUgdmVjdG9ycy5cbiAgICAgKiBAcGFyYW0ge09wdGlvbnN9IFtvcHRpb25zXSBPcHRpb25zIHRvIHBhc3MgdG8gdGhlIGltcGxlbWVudGluZyBlbWJlZGRlcnMuXG4gICAgICogQG1lbWJlcm9mIERpbWVuc2lvbmFsaXR5UmVkdWNlclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGRhdGEsIG1ldGhvZCwgbWV0cmljLCBvcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IG1lYXN1cmUgPSBuZXcgTWVhc3VyZShtZXRyaWMpLmdldE1lYXN1cmUoKTtcbiAgICAgICAgbGV0IHNwZWNPcHRpb25zID0ge307XG4gICAgICAgIGlmIChpc0JpdEFycmF5TWV0cmljKG1ldHJpYykpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSlcbiAgICAgICAgICAgICAgICBkYXRhW2ldID0gbmV3IEJpdEFycmF5KGRhdGFbaV0uX2RhdGEsIGRhdGFbaV0uX2xlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1ldGhvZCA9PSAnVU1BUCcpIHtcbiAgICAgICAgICAgIHNwZWNPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIC4uLnsgZGF0YTogZGF0YSB9LFxuICAgICAgICAgICAgICAgIC4uLnsgZGlzdGFuY2VGbjogbWVhc3VyZSB9LFxuICAgICAgICAgICAgICAgIC4uLnsgZGlzdGFuY2VGbmFtZTogbWV0cmljIH0sXG4gICAgICAgICAgICAgICAgLi4ueyBuRXBvY2hzOiBvcHRpb25zPy5jeWNsZXMgfSxcbiAgICAgICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChtZXRob2QgPT0gJ3QtU05FJykge1xuICAgICAgICAgICAgc3BlY09wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgLi4ueyBkYXRhOiBkYXRhIH0sXG4gICAgICAgICAgICAgICAgLi4ueyBkaXN0YW5jZUZuOiBtZWFzdXJlIH0sXG4gICAgICAgICAgICAgICAgLi4ueyBkaXN0YW5jZUZuYW1lOiBtZXRyaWMgfSxcbiAgICAgICAgICAgICAgICAuLi57IGl0ZXJhdGlvbnM6IG9wdGlvbnM/LmN5Y2xlcyA/PyB1bmRlZmluZWQgfSxcbiAgICAgICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChtZXRob2QgPT0gJ1NQRScpIHtcbiAgICAgICAgICAgIHNwZWNPcHRpb25zID0geyAuLi57IGRhdGE6IGRhdGEgfSwgLi4ueyBkaXN0YW5jZTogbWVhc3VyZSB9LCBkaXN0YW5jZUZ1bmN0aW9uTmFtZTogbWV0cmljLCAuLi5vcHRpb25zIH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzcGVjT3B0aW9ucyA9IHsgLi4ueyBkYXRhOiBkYXRhIH0sIC4uLnsgZGlzdGFuY2U6IG1lYXN1cmUgfSwgZGlzdGFuY2VGdW5jdGlvbk5hbWU6IG1ldHJpYywgLi4ub3B0aW9ucyB9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVkdWNlciA9IG5ldyBBdmFpbGFibGVSZWR1Y2Vyc1ttZXRob2RdKHNwZWNPcHRpb25zKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRW1iZWRzIHRoZSBkYXRhIGdpdmVuIGludG8gdGhlIHR3by1kaW1lbnNpb25hbCBzcGFjZSB1c2luZyB0aGUgY2hvc2VuIG1ldGhvZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gdHJhbnNwb3NlIFdoZXRoZXIgdG8gdHJhbnNmb3JtIGNvb3JkaW5hdGVzIHRvIGhhdmUgY29sdW1ucy1maXJzdCBvcmllbnRhdGlvbi5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHBhcmFsbGVsRGlzdGFuY2VXb3JrZXJzIFdoZXRoZXIgdG8gdXNlIHBhcmFsbGVsIGRpc3RhbmNlIGNvbXB1dGF0aW9uLlxuICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgZW1iZWRkaW5nIG1ldGhvZCB3YXMgbm90IGZvdW5kLlxuICAgICAqIEByZXR1cm4ge2FueX0gQ2FydGVzaWFuIGNvb3JkaW5hdGUgb2YgdGhpcyBlbWJlZGRpbmcgYW5kIGRpc3RhbmNlIG1hdHJpeCB3aGVyZSBhcHBsaWNhYmxlLlxuICAgICAqIEBtZW1iZXJvZiBEaW1lbnNpb25hbGl0eVJlZHVjZXJcbiAgICAgKi9cbiAgICBhc3luYyB0cmFuc2Zvcm0odHJhbnNwb3NlID0gZmFsc2UsIHBhcmFsbGVsRGlzdGFuY2VXb3JrZXJzKSB7XG4gICAgICAgIGlmICh0aGlzLnJlZHVjZXIgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVkdWNlciB3YXMgbm90IGRlZmluZWQuJyk7XG4gICAgICAgIGxldCB7IGVtYmVkZGluZywgZGlzdGFuY2UgfSA9IGF3YWl0IHRoaXMucmVkdWNlci50cmFuc2Zvcm0ocGFyYWxsZWxEaXN0YW5jZVdvcmtlcnMpO1xuICAgICAgICBpZiAodHJhbnNwb3NlKVxuICAgICAgICAgICAgZW1iZWRkaW5nID0gdHJhbnNwb3NlTWF0cml4KGVtYmVkZGluZyk7XG4gICAgICAgIHJldHVybiB7IGRpc3RhbmNlOiBkaXN0YW5jZSwgZW1iZWRkaW5nOiBlbWJlZGRpbmcgfTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBtZXRyaWNzIGF2YWlsYWJsZSBieSB0eXBlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtBdmFpbGFibGVEYXRhVHlwZXN9IHR5cGVOYW1lIHR5cGUgbmFtZVxuICAgICAqIEByZXR1cm4ge3N0cmluZ1tdfSBNZXRyaWMgbmFtZXMgd2hpY2ggZXhwZWN0cyB0aGUgZ2l2ZW4gZGF0YSB0eXBlXG4gICAgICogQG1lbWJlcm9mIERpbWVuc2lvbmFsaXR5UmVkdWNlclxuICAgICAqL1xuICAgIHN0YXRpYyBhdmFpbGFibGVNZXRyaWNzQnlUeXBlKHR5cGVOYW1lKSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhBdmFpbGFibGVNZXRyaWNzW3R5cGVOYW1lXSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgZGltZW5zaW9uYWxpdHkgcmVkdWN0aW9uIG1ldGhvZHMgYXZhaWxhYmxlLlxuICAgICAqXG4gICAgICogQHJlYWRvbmx5XG4gICAgICogQG1lbWJlcm9mIERpbWVuc2lvbmFsaXR5UmVkdWNlclxuICAgICAqL1xuICAgIHN0YXRpYyBnZXQgYXZhaWxhYmxlTWV0aG9kcygpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKEF2YWlsYWJsZVJlZHVjZXJzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBtZXRyaWNzIGF2YWlsYWJsZS5cbiAgICAgKlxuICAgICAqIEByZWFkb25seVxuICAgICAqIEBtZW1iZXJvZiBEaW1lbnNpb25hbGl0eVJlZHVjZXJcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0IGF2YWlsYWJsZU1ldHJpY3MoKSB7XG4gICAgICAgIGxldCBhbnMgPSBbXTtcbiAgICAgICAgT2JqZWN0LnZhbHVlcyhBdmFpbGFibGVNZXRyaWNzKS5mb3JFYWNoKChvYmopID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFycmF5ID0gT2JqZWN0LnZhbHVlcyhvYmopO1xuICAgICAgICAgICAgYW5zID0gWy4uLmFucywgLi4uYXJyYXldO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGFucztcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljbVZrZFdObExXUnBiV1Z1YzJsdmJtRnNhWFI1TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2ljbVZrZFdObExXUnBiV1Z1YzJsdmJtRnNhWFI1TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJMRFJDUVVFMFFqdEJRVU0xUWl4UFFVRlBMRXRCUVVzc1IwRkJSeXhOUVVGTkxGTkJRVk1zUTBGQlF6dEJRVU12UWl4UFFVRlBMRVZCUVVNc1NVRkJTU3hGUVVGRExFMUJRVTBzWlVGQlpTeERRVUZETzBGQlEyNURMRTlCUVU4c1JVRkhUQ3hOUVVGTkxFZEJSMUFzVFVGQlRTeHBSRUZCYVVRc1EwRkJRenRCUVVONlJDeFBRVUZQTEVWQlEwd3NaVUZCWlN4RlFVTm1MRTFCUVUwc1IwRkRVQ3hOUVVGTkxHbEVRVUZwUkN4RFFVRkRPMEZCUTNwRUxFOUJRVThzUlVGQlF5eFBRVUZQTEVWQlFVVXNVVUZCVVN4RlFVRkZMRmRCUVZjc1JVRkJReXhOUVVGTkxFOUJRVThzUTBGQlF6dEJRVU55UkN4UFFVRlBMRVZCUVVNc1QwRkJUeXhGUVVGblFpeG5Ra0ZCWjBJc1JVRkROME1zWjBKQlFXZENMRVZCUVhGQ0xFMUJRVTBzSzBKQlFTdENMRU5CUVVNN1FVRkROMFVzVDBGQlR5eFJRVUZSTEUxQlFVMHNlVU5CUVhsRExFTkJRVU03UVVGRkwwUXNUMEZCVHl4RlFVRkRMR05CUVdNc1JVRkJSU3h4UWtGQmNVSXNSVUZCUlN4dFFrRkJiVUlzUlVGQlJTeGhRVUZoTEVWQlFVTXNUVUZCVFN4dFFrRkJiVUlzUTBGQlF6dEJRVTgxUnl4TlFVRk5MRU5CUVU0c1NVRkJXU3h0UWtGSFdEdEJRVWhFTEZkQlFWa3NiVUpCUVcxQ08wbEJRemRDTEc5RFFVRmhMRU5CUVVFN1NVRkRZaXh6UTBGQlpTeERRVUZCTzBGQlEycENMRU5CUVVNc1JVRklWeXh0UWtGQmJVSXNTMEZCYmtJc2JVSkJRVzFDTEZGQlJ6bENPMEZCZDBKRU96dEhRVVZITzBGQlEwZ3NUVUZCVFN4RFFVRkRMRTFCUVUwc2QwSkJRWGRDTEVkQlFVY3NTMEZCU3l4RFFVRkRPMEZCUlRsRExFMUJRVTBzVDBGQlR5eFhRVUZYTzBsQlVYUkNPMUZCVUVFc2FVSkJRVmtzUjBGQmRVSXNSVUZCUXl4TlFVRk5MRVZCUVVVc1pVRkJaU3hGUVVGRkxFdEJRVXNzUlVGQlJTeERRVUZETEVWQlFVVXNUMEZCVHl4RlFVRkZMREJFUVVFd1JDeEZRVUZETEVOQlFVTTdVVUZETlVrc1owSkJRVmNzUjBGQmRVSXNSVUZCUXl4TlFVRk5MRVZCUVVVc1dVRkJXU3hGUVVGRkxFdEJRVXNzUlVGQlJTeERRVUZETEVWQlFVVXNUMEZCVHl4RlFVRkZMRGhFUVVFNFJDeEZRVUZETEVOQlFVTTdVVUZETlVrc1dVRkJUeXhIUVVGMVFpeEZRVUZETEUxQlFVMHNSVUZCUlN4UlFVRlJMRVZCUVVVc1MwRkJTeXhGUVVGRkxFTkJRVU1zUlVGQlJTeFBRVUZQTEVWQlFVVXNlVVpCUVhsR0xFVkJRVU1zUTBGQlF6dFJRVU12U2l4bFFVRlZMRWRCUVhWQ0xFVkJRVU1zVFVGQlRTeEZRVUZGTEZkQlFWY3NSVUZCUlN4TFFVRkxMRVZCUVVVc1JVRkJSU3hGUVVGRkxFOUJRVThzUlVGQlJTeHBSVUZCYVVVc1JVRkJReXhEUVVGRE8xRkJRemxKTEZkQlFVMHNSMEZCZFVJc1JVRkJReXhOUVVGTkxFVkJRVVVzVVVGQlVTeEZRVUZGTEV0QlFVc3NSVUZCUlN4RFFVRkRMRVZCUVVVc1QwRkJUeXhGUVVGRkxIbElRVUY1U0N4RlFVRkRMRU5CUVVNN1VVRkRPVXdzV1VGQlR5eEhRVUYxUWl4RlFVRkRMRTFCUVUwc1JVRkJSU3hqUVVGakxFVkJRVVVzUzBGQlN5eEZRVUZGTEVkQlFVY3NSVUZCUlN4UFFVRlBMRVZCUVVVc2JVbEJRVzFKTEVWQlFVTXNRMEZCUXp0SlFVVnNUU3hEUVVGRE8wbEJRVUVzUTBGQlF6dERRVU5zUWp0QlFVVkVMRTFCUVUwc1QwRkJUeXhYUVVGWE8wbEJTM1JDTzFGQlNrRXNXVUZCVHl4SFFVRjFRaXhGUVVGRExFMUJRVTBzUlVGQlJTeFRRVUZUTEVWQlFVVXNTMEZCU3l4RlFVRkZMRVZCUVVVc1JVRkJSU3hQUVVGUExFVkJRVVVzTUVKQlFUQkNMRVZCUVVNc1EwRkJRenRSUVVOc1J5eGxRVUZWTEVkQlFYVkNMRVZCUVVNc1RVRkJUU3hGUVVGRkxGbEJRVmtzUlVGQlJTeExRVUZMTEVWQlFVVXNSVUZCUlN4RlFVRkZMRTlCUVU4c1JVRkJSU3hyUkVGQmEwUXNSVUZCUXl4RFFVRkRPMUZCUTJoSkxGRkJRVWNzUjBGQmRVSXNSVUZCUXl4TlFVRk5MRVZCUVVVc1owSkJRV2RDTEVWQlFVVXNTMEZCU3l4RlFVRkZMRU5CUVVNc1JVRkJSU3hQUVVGUExFVkJRVVVzYVVOQlFXbERMRVZCUVVNc1EwRkJRenRKUVVVMVJpeERRVUZETzBsQlFVRXNRMEZCUXp0RFFVTnNRanRCUVVWRUxITkRRVUZ6UXp0QlFVTjBReXhOUVVGbExFOUJRVTg3U1VGSGNFSXNXVUZCV1N4UFFVRm5RanRSUVVNeFFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU03U1VGRE0wSXNRMEZCUXp0RFFVdEdPMEZCUlVRc2MwTkJRWE5ETzBGQlEzUkRMRTFCUVUwc1YwRkJXU3hUUVVGUkxFOUJRVTg3U1VGTkwwSTdPenM3VDBGSlJ6dEpRVU5JTEZsQlFWa3NUMEZCWjBJN1VVRkRNVUlzUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUTJZc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eEpRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVOcVF5eEpRVUZKTEVOQlFVTXNWVUZCVlN4SFFVRkhMRTlCUVU4c1JVRkJSU3hWUVVGVkxFbEJRVWtzUjBGQlJ5eERRVUZETzFGQlF6ZERMRWxCUVVrc1EwRkJReXhoUVVGaExFZEJRVWNzVDBGQlR5eERRVUZETEdGQlFXRXNRMEZCUXp0UlFVTXpReXhKUVVGSkxFTkJRVU1zVlVGQlZTeEhRVUZITEU5QlFVOHNRMEZCUXl4VlFVRlZMRU5CUVVNN1NVRkRka01zUTBGQlF6dEpRVVZFT3pzN08wOUJTVWM3U1VGRFNTeExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRMSFZDUVVGcFF6dFJRVU4wUkN4TlFVRk5MRkZCUVZFc1IwRkJSeXgxUWtGQmRVSXNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFdEJRVXNzU1VGQlNTeEZRVUZGTzFsQlF6TkVMRTFCUVUwc1lVRkJZU3hIUVVGSExFbEJRVWtzY1VKQlFYRkNMRU5CUVVNc1NVRkJTU3hGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzFsQlF6ZEVMRWxCUVVrN1owSkJRMFlzVFVGQlRTeEpRVUZKTEVkQlFVY3NUVUZCVFN4aFFVRmhMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhEUVVGRE8yZENRVU55UlN4aFFVRmhMRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVU03WjBKQlF6RkNMRTlCUVU4c1NVRkJTU3hEUVVGRE8yRkJRMkk3V1VGQlF5eFBRVUZQTEVOQlFVTXNSVUZCUlR0blFrRkRWaXhoUVVGaExFTkJRVU1zVTBGQlV5eEZRVUZGTEVOQlFVTTdaMEpCUXpGQ0xFMUJRVTBzUTBGQlF5eERRVUZETzJGQlExUTdVVUZEU0N4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03V1VGRFNpeERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRTFCUVUwc1IwRkJSeXhIUVVGSExHTkJRV01zUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zVTBGQlV5eEZRVUZGTEVOQlFVTXNRMEZCUXl4UFFVRlBMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRPMUZCUlM5SUxFMUJRVTBzVjBGQlZ5eEhRVUZITEcxQ1FVRnRRaXhEUVVGRExGRkJRVkVzUlVGQlJTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8xRkJRM0JGTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1dVRkJXU3hEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETzFGQlJYWkRMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFVkJRVVVzUTBGQlF6dFpRVU4wUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEVOQlFVTXNhVVJCUVdsRU8xRkJSWGhGTEU5QlFVOHNSVUZCUXl4UlFVRlJMRVZCUVVVc1VVRkJVU3hGUVVGRkxGTkJRVk1zUlVGQlJTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRmRCUVZjc1JVRkJSU3hGUVVGRExFTkJRVU03U1VGRGNrVXNRMEZCUXp0RFFVTkdPMEZCU1VRN096czdPMGRCUzBjN1FVRkRTQ3hOUVVGTkxGZEJRVmtzVTBGQlVTeFBRVUZQTzBsQlVTOUNPenM3TzA5QlNVYzdTVUZEU0N4WlFVRlpMRTlCUVc5Q08xRkJRemxDTEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVObUxFMUJRVTBzUTBGQlF5eGxRVUZsTEVsQlFVa3NUMEZCVHl4RFFVRkRMRU5CUVVNN1VVRkRia01zVFVGQlRTeERRVUZETEZsQlFWa3NTVUZCU1N4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVOb1F5eEpRVUZKTEVOQlFVTXNWVUZCVlN4SFFVRkhMRTlCUVU4c1EwRkJReXhWUVVGWExFTkJRVU03VVVGRmRFTXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1IwRkJSeXhQUVVGUExFTkJRVU1zWVVGQll5eERRVUZETzFGQlF6VkRMRWxCUVVrc1EwRkJReXhYUVVGWExFZEJRVWNzWVVGQllTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03VVVGRGJrUXNhVVpCUVdsR08xRkJRMnBHTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM1JGTEVsQlFVa3NRMEZCUXl4dFFrRkJiVUlzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNc01FSkJRVEJDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzZDBKQlFYZENMRU5CUVVNc1EwRkJRenRSUVVOcVNDeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRzFDUVVGdFFqdFpRVU16UWl4UFFVRlBMRU5CUVVNc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdPMWxCUlhSRUxFOUJRVThzUTBGQlF5eFZRVUZWTEVkQlFVY3NTVUZCU1N4RFFVRkRMSE5DUVVGelFpeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVVNVJDeEpRVUZKTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFVkJRVVU3V1VGRGRrSXNUMEZCVHl4RFFVRkRMRlZCUVZVc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkROVU1zU1VGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4SlFVRkpMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdVVUZEY2tNc09FUkJRVGhFTzBsQlEyaEZMRU5CUVVNN1NVRkZSRHM3T3pzN096czdUMEZSUnp0SlFVTlBMSE5DUVVGelFpeERRVUZETEVOQlFWY3NSVUZCUlN4RFFVRlhPMUZCUTNaRUxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRFppeFBRVUZQTEVOQlFVTXNRMEZCUXp0UlFVTllMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRZaXhQUVVGUExFbEJRVWtzUTBGQlF5eGpRVUZsTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU0xUkN4UFFVRlBMRWxCUVVrc1EwRkJReXhqUVVGbExFTkJRVU1zU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVNMVJDeERRVUZETzBsQlJWTXNaMEpCUVdkQ0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdVVUZEYWtRc1QwRkJUeXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUXpORUxFTkJRVU03U1VGRlJEczdPenRQUVVsSE8wbEJRMGtzUzBGQlN5eERRVUZETEZOQlFWTXNRMEZCUXl4MVFrRkJhVU03VVVGRGRFUXNTVUZCU1N4SlFVRkpMRU5CUVVNc2JVSkJRVzFDTEVWQlFVVTdXVUZETlVJc1NVRkJTU3hEUVVGRExHTkJRV01zUjBGQlJ5eDFRa0ZCZFVJc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NTVUZCU1N4RlFVRkZPMmRDUVVOb1JTeE5RVUZOTEdGQlFXRXNSMEZCUnl4SlFVRkpMSEZDUVVGeFFpeERRVUZETEVsQlFVa3NSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRuUWtGRE4wUXNTVUZCU1R0dlFrRkRSaXhOUVVGTkxFbEJRVWtzUjBGQlJ5eE5RVUZOTEdGQlFXRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRU5CUVVNN2IwSkJRM0pGTEdGQlFXRXNRMEZCUXl4VFFVRlRMRVZCUVVVc1EwRkJRenR2UWtGRE1VSXNUMEZCVHl4SlFVRkpMRU5CUVVNN2FVSkJRMkk3WjBKQlFVTXNUMEZCVHl4RFFVRkRMRVZCUVVVN2IwSkJRMVlzWVVGQllTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRPMjlDUVVNeFFpeE5RVUZOTEVOQlFVTXNRMEZCUXp0cFFrRkRWRHRaUVVOSUxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0blFrRkRTaXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEUxQlFVMHNSMEZCUnl4SFFVRkhMR05CUVdNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4UFFVRlBMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRPMU5CUXk5SE8xRkJRMFFzVFVGQlRTeFRRVUZUTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUldwRUxGTkJRVk1zY1VKQlFYRkNMRU5CUVVNc1NVRkJaMEk3V1VGRE4wTXNUMEZCVHl4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZET1VVc1EwRkJRenRSUVVWRUxFOUJRVThzUlVGQlF5eFRRVUZUTEVWQlFVVXNjVUpCUVhGQ0xFTkJRVU1zVTBGQlV5eERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNVVUZCVVN4RlFVRkZMRWxCUVVrc1EwRkJReXhqUVVGakxFVkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1EwRkJRenRKUVVONFNDeERRVUZETzBOQlEwWTdRVUZGUkRzN096czdSMEZMUnp0QlFVTklMRTFCUVUwc1ZVRkJWeXhUUVVGUkxFOUJRVTg3U1VGSE9VSTdPenM3VDBGSlJ6dEpRVU5JTEZsQlFWa3NUMEZCWjBJN1VVRkRNVUlzUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUTJZc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eEpRVUZKTEU5QlFVOHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRKUVVOMFF5eERRVUZETzBsQlJVUTdPenRQUVVkSE8wbEJRMGtzUzBGQlN5eERRVUZETEZOQlFWTTdVVUZEY0VJc1RVRkJUU3hIUVVGSExFZEJRVWNzVFVGQlRTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdVVUZEYUVRc1QwRkJUeXhGUVVGRExGRkJRVkVzUlVGQlJTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRkZCUVZFc1JVRkJSU3hUUVVGVExFVkJRVVVzUjBGQlJ5eEZRVUZETEVOQlFVTTdTVUZETTBRc1EwRkJRenREUVVOR08wRkJSVVE3T3pzN08wZEJTMGM3UVVGRFNDeE5RVUZOTEZkQlFWa3NVMEZCVVN4UFFVRlBPMGxCUnk5Q096czdPMDlCU1VjN1NVRkRTQ3haUVVGWkxFOUJRV2RDTzFGQlF6RkNMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dFJRVU5tTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdTVUZEZGtNc1EwRkJRenRKUVVWRU96czdUMEZIUnp0SlFVTkpMRXRCUVVzc1EwRkJReXhUUVVGVE8xRkJRM0JDTEUxQlFVMHNSMEZCUnl4SFFVRkhMRTFCUVUwc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRMmhFTEU5QlFVOHNSVUZCUXl4UlFVRlJMRVZCUVVVc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFJRVUZSTEVWQlFVVXNVMEZCVXl4RlFVRkZMRWRCUVVjc1JVRkJReXhEUVVGRE8wbEJRek5FTEVOQlFVTTdRMEZEUmp0QlFVVkVPenM3T3p0SFFVdEhPMEZCUTBnc1RVRkJUU3hyUWtGQmJVSXNVMEZCVVN4UFFVRlBPMGxCUjNSRE96czdPMDlCU1VjN1NVRkRTQ3haUVVGWkxFOUJRV2RDTzFGQlF6RkNMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dFJRVU5tTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hYUVVGWExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdTVUZETVVNc1EwRkJRenRKUVVWRU96czdUMEZIUnp0SlFVTkpMRXRCUVVzc1EwRkJReXhUUVVGVE8xRkJRM0JDTEUxQlFVMHNSMEZCUnl4SFFVRkhMRTFCUVUwc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRMmhFTEU5QlFVOHNSVUZCUXl4UlFVRlJMRVZCUVVVc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFJRVUZSTEVWQlFVVXNVMEZCVXl4RlFVRkZMRWRCUVVjc1JVRkJReXhEUVVGRE8wbEJRek5FTEVOQlFVTTdRMEZEUmp0QlFVVkVMRTFCUVUwc2FVSkJRV2xDTEVkQlFVYzdTVUZEZUVJc1RVRkJUU3hGUVVGRkxGZEJRVmM3U1VGRGJrSXNUMEZCVHl4RlFVRkZMRmRCUVZjN1NVRkRjRUlzUzBGQlN5eEZRVUZGTEZWQlFWVTdTVUZEYWtJc1RVRkJUU3hGUVVGRkxGZEJRVmM3U1VGRGJrSXNZVUZCWVN4RlFVRkZMR3RDUVVGclFqdERRVU5zUXl4RFFVRkRPMEZCU1VZN096czdPMGRCUzBjN1FVRkRTQ3hOUVVGTkxFOUJRVThzY1VKQlFYRkNPMGxCUjJoRE96czdPenM3TzA5QlQwYzdTVUZEU0N4WlFVRlpMRWxCUVZjc1JVRkJSU3hOUVVGdlFpeEZRVUZGTEUxQlFXOUNMRVZCUVVVc1QwRkJhVUk3VVVGRGNFWXNUVUZCVFN4UFFVRlBMRWRCUVVjc1NVRkJTU3hQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNWVUZCVlN4RlFVRkZMRU5CUVVNN1VVRkRha1FzU1VGQlNTeFhRVUZYTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUlhKQ0xFbEJRVWtzWjBKQlFXZENMRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRVVU3V1VGRE5VSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8yZENRVU5zUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03VTBGRE1VUTdVVUZGUkN4SlFVRkpMRTFCUVUwc1NVRkJTU3hOUVVGTkxFVkJRVVU3V1VGRGNFSXNWMEZCVnl4SFFVRkhPMmRDUVVOYUxFZEJRVWNzUlVGQlF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RlFVRkRPMmRDUVVObUxFZEJRVWNzUlVGQlF5eFZRVUZWTEVWQlFVVXNUMEZCVHl4RlFVRkRPMmRDUVVONFFpeEhRVUZITEVWQlFVTXNZVUZCWVN4RlFVRkZMRTFCUVUwc1JVRkJRenRuUWtGRE1VSXNSMEZCUnl4RlFVRkRMRTlCUVU4c1JVRkJSU3hQUVVGUExFVkJRVVVzVFVGQlRTeEZRVUZETzJkQ1FVTTNRaXhIUVVGSExFOUJRVTg3WVVGRFdDeERRVUZETzFOQlEwZzdZVUZCVFN4SlFVRkpMRTFCUVUwc1NVRkJTU3hQUVVGUExFVkJRVVU3V1VGRE5VSXNWMEZCVnl4SFFVRkhPMmRDUVVOYUxFZEJRVWNzUlVGQlF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RlFVRkRPMmRDUVVObUxFZEJRVWNzUlVGQlF5eFZRVUZWTEVWQlFVVXNUMEZCVHl4RlFVRkRPMmRDUVVONFFpeEhRVUZITEVWQlFVTXNZVUZCWVN4RlFVRkZMRTFCUVUwc1JVRkJRenRuUWtGRE1VSXNSMEZCUnl4RlFVRkRMRlZCUVZVc1JVRkJSU3hQUVVGUExFVkJRVVVzVFVGQlRTeEpRVUZKTEZOQlFWTXNSVUZCUXp0blFrRkROME1zUjBGQlJ5eFBRVUZQTzJGQlExZ3NRMEZCUXp0VFFVTklPMkZCUVUwc1NVRkJTU3hOUVVGTkxFbEJRVWtzUzBGQlN5eEZRVUZGTzFsQlF6RkNMRmRCUVZjc1IwRkJSeXhGUVVGRExFZEJRVWNzUlVGQlF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RlFVRkRMRVZCUVVVc1IwRkJSeXhGUVVGRExGRkJRVkVzUlVGQlJTeFBRVUZQTEVWQlFVTXNSVUZCUlN4dlFrRkJiMElzUlVGQlJTeE5RVUZOTEVWQlFVVXNSMEZCUnl4UFFVRlBMRVZCUVVNc1EwRkJRenRUUVVOdVJ6dGhRVUZOTzFsQlEwd3NWMEZCVnl4SFFVRkhMRVZCUVVNc1IwRkJSeXhGUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVTXNSVUZCUlN4SFFVRkhMRVZCUVVNc1VVRkJVU3hGUVVGRkxFOUJRVThzUlVGQlF5eEZRVUZGTEc5Q1FVRnZRaXhGUVVGRkxFMUJRVTBzUlVGQlJTeEhRVUZITEU5QlFVOHNSVUZCUXl4RFFVRkRPMU5CUTI1SE8xRkJRMFFzU1VGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4SlFVRkpMR2xDUVVGcFFpeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRE8wbEJRelZFTEVOQlFVTTdTVUZGUkRzN096czdPenM3VDBGUlJ6dEpRVU5KTEV0QlFVc3NRMEZCUXl4VFFVRlRMRU5CUVVNc1dVRkJjVUlzUzBGQlN5eEZRVUZGTEhWQ1FVRnBRenRSUVVOc1JpeEpRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRXRCUVVzc1UwRkJVenRaUVVNMVFpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMREJDUVVFd1FpeERRVUZETEVOQlFVTTdVVUZGT1VNc1NVRkJTU3hGUVVGRExGTkJRVk1zUlVGQlJTeFJRVUZSTEVWQlFVTXNSMEZCUnl4TlFVRk5MRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVTBGQlV5eERRVUZETEhWQ1FVRjFRaXhEUVVGRExFTkJRVU03VVVGRmJFWXNTVUZCU1N4VFFVRlRPMWxCUTFnc1UwRkJVeXhIUVVGSExHVkJRV1VzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXp0UlFVVjZReXhQUVVGUExFVkJRVU1zVVVGQlVTeEZRVUZGTEZGQlFWRXNSVUZCUlN4VFFVRlRMRVZCUVVVc1UwRkJVeXhGUVVGRExFTkJRVU03U1VGRGNFUXNRMEZCUXp0SlFVVkVPenM3T3pzN1QwRk5SenRKUVVOSUxFMUJRVTBzUTBGQlF5eHpRa0ZCYzBJc1EwRkJReXhSUVVFMFFqdFJRVU40UkN4UFFVRlBMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU5xUkN4RFFVRkRPMGxCUlVRN096czdPMDlCUzBjN1NVRkRTQ3hOUVVGTkxFdEJRVXNzWjBKQlFXZENPMUZCUTNwQ0xFOUJRVThzVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eERRVUZETzBsQlEzaERMRU5CUVVNN1NVRkZSRHM3T3pzN1QwRkxSenRKUVVOSUxFMUJRVTBzUzBGQlN5eG5Ra0ZCWjBJN1VVRkRla0lzU1VGQlNTeEhRVUZITEVkQlFXRXNSVUZCUlN4RFFVRkRPMUZCUTNaQ0xFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1JVRkJSVHRaUVVNNVF5eE5RVUZOTEV0QlFVc3NSMEZCUnl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEycERMRWRCUVVjc1IwRkJSeXhEUVVGRExFZEJRVWNzUjBGQlJ5eEZRVUZGTEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkRNMElzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEU0N4UFFVRlBMRWRCUVVjc1EwRkJRenRKUVVOaUxFTkJRVU03UTBGRFJpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxSUdWemJHbHVkQzFrYVhOaFlteGxJRzFoZUMxc1pXNGdLaTljYm1sdGNHOXlkQ0FxSUdGeklIVnRhaUJtY205dElDZDFiV0Z3TFdwekp6dGNibWx0Y0c5eWRDQjdWRk5PUlgwZ1puSnZiU0FuUUd0bFkydGxiSFF2ZEhOdVpTYzdYRzVwYlhCdmNuUWdlMXh1SUNCUGNIUnBiMjV6TEZ4dUlDQkRiMjl5WkdsdVlYUmxjeXhjYmlBZ1ZtVmpkRzl5TEZ4dUlDQldaV04wYjNKekxGeHVJQ0JOWVhSeWFYZ3NYRzU5SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDNSNWNHVXRaR1ZqYkdGeVlYUnBiMjV6Snp0Y2JtbHRjRzl5ZENCN1hHNGdJSFJ5WVc1emNHOXpaVTFoZEhKcGVDeGNiaUFnWVhOelpYSjBMRnh1ZlNCbWNtOXRJQ2RBWkdGMFlXZHliMnN0YkdsaWNtRnlhV1Z6TDNWMGFXeHpMM055WXk5MlpXTjBiM0l0YjNCbGNtRjBhVzl1Y3ljN1hHNXBiWEJ2Y25RZ2UxTlFSVUpoYzJVc0lGQlRVRVZDWVhObExDQlBjbWxuYVc1aGJGTlFSWDBnWm5KdmJTQW5MaTl6Y0dVbk8xeHVhVzF3YjNKMElIdE5aV0Z6ZFhKbExDQkxibTkzYmsxbGRISnBZM01zSUVGMllXbHNZV0pzWlUxbGRISnBZM01zWEc0Z0lHbHpRbWwwUVhKeVlYbE5aWFJ5YVdNc0lFRjJZV2xzWVdKc1pVUmhkR0ZVZVhCbGMzMGdabkp2YlNBbkxpOTBlWEJsWkMxdFpYUnlhV056TDNSNWNHVmtMVzFsZEhKcFkzTW5PMXh1YVcxd2IzSjBJRUpwZEVGeWNtRjVJR1p5YjIwZ0owQmtZWFJoWjNKdmF5MXNhV0p5WVhKcFpYTXZkWFJwYkhNdmMzSmpMMkpwZEMxaGNuSmhlU2M3WEc1cGJYQnZjblFnZTFWTlFWQlFZWEpoYldWMFpYSnpmU0JtY205dElDZDFiV0Z3TFdwekp6dGNibWx0Y0c5eWRDQjdSR2x6ZEdGdVkyVk5ZWFJ5YVhnc0lFUnBjM1JoYm1ObFRXRjBjbWw0VTJWeWRtbGpaU3dnWkdsemRHRnVZMlZOWVhSeWFYaFFjbTk0ZVN3Z1pHMU1hVzVsWVhKSmJtUmxlSDBnWm5KdmJTQW5MaTlrYVhOMFlXNWpaUzF0WVhSeWFYZ25PMXh1WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUVsU1pXUjFZMlZFYVcxbGJuTnBiMjVoYkdsMGVWSmxjM1ZzZENCN1hHNGdJR1JwYzNSaGJtTmxQem9nUm14dllYUXpNa0Z5Y21GNU8xeHVJQ0JsYldKbFpHUnBibWM2SUUxaGRISnBlRHRjYm4xY2JseHVaWGh3YjNKMElHVnVkVzBnUkdsdFVtVmtkV04wYVc5dVRXVjBhRzlrYzN0Y2JpQWdWVTFCVUNBOUlDZFZUVUZRSnl4Y2JpQWdWRjlUVGtVZ1BTQW5kQzFUVGtVblhHNTlYRzVjYm1WNGNHOXlkQ0JwYm5SbGNtWmhZMlVnU1ZWTlFWQlBjSFJwYjI1eklIdGNiaUFnYkdWaGNtNXBibWRTWVhSbFB6b2diblZ0WW1WeU8xeHVJQ0J1UTI5dGNHOXVaVzUwY3o4NklHNTFiV0psY2p0Y2JpQWdia1Z3YjJOb2N6ODZJRzUxYldKbGNqdGNiaUFnYms1bGFXZG9ZbTl5Y3o4NklHNTFiV0psY2p0Y2JpQWdjM0J5WldGa1B6b2diblZ0WW1WeU8xeHVJQ0J0YVc1RWFYTjBQem9nYm5WdFltVnlPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ2FXNTBaWEptWVdObElFbFVVMDVGVDNCMGFXOXVjeUI3WEc0Z0lHVndjMmxzYjI0L09pQnVkVzFpWlhJN1hHNGdJSEJsY25Cc1pYaHBkSGsvT2lCdWRXMWlaWEk3WEc0Z0lHUnBiVDg2SUc1MWJXSmxjanRjYm4xY2JseHVaWGh3YjNKMElHbHVkR1Z5Wm1GalpTQkpSR2x0VW1Wa2RXTjBhVzl1VUdGeVlXMGdlMXh1SUNCMWFVNWhiV1U2SUhOMGNtbHVaenRjYmlBZ2RtRnNkV1U2SUc1MWJXSmxjaUI4SUc1MWJHdzdYRzRnSUhSdmIyeDBhWEE2SUhOMGNtbHVaenRjYmlBZ2NHeGhZMlZvYjJ4a1pYSS9PaUJ6ZEhKcGJtYzdYRzU5WEc1Y2JpOHFLaUJWYldGd0lIVnpaWE1nY0hKbFkyRnNZM1ZzWVhSbFpDQmthWE4wWVc1alpTQnRZWFJ5YVhnZ2RHOGdjMkYyWlNCMGFXMWxMaUIwYUc5MVoyZ2dabTl5SUhSdmJ5QnRkV05vSUdSaGRHRXNJRzFsYlc5eWVTQmlaV052YldWeklHTnZibk4wY21GcGJuUXVYRzRnS2lCcFppQjNaU0JvWVhabElERXdNQ0F3TURBZ2NtOTNjeXdnWkdsemRHRnVZMlVnYldGMGNtbDRJSGRwYkd3Z2RHRnJaU0IrTVRCbllpQnZaaUJ0WlcxdmNua2dZVzVrSUhCeWIySmhZbXg1SUc5MlpYSm1iRzkzTGx4dUlDb3ZYRzVsZUhCdmNuUWdZMjl1YzNRZ1RVRllYMFJKVTFSQlRrTkZYMDFCVkZKSldGOVNUMWRUSUQwZ01qQXdNREE3WEc1Y2JtVjRjRzl5ZENCamJHRnpjeUJWVFVGUVQzQjBhVzl1Y3lCN1hHNGdJR3hsWVhKdWFXNW5VbUYwWlRvZ1NVUnBiVkpsWkhWamRHbHZibEJoY21GdElEMGdlM1ZwVG1GdFpUb2dKMHhsWVhKcGJtbG5JSEpoZEdVbkxDQjJZV3gxWlRvZ01Td2dkRzl2YkhScGNEb2dKMVJvWlNCcGJtbDBhV0ZzSUd4bFlYSnVhVzVuSUhKaGRHVWdabTl5SUhSb1pTQmxiV0psWkdScGJtY2diM0IwYVcxcGVtRjBhVzl1SjMwN1hHNGdJRzVEYjIxd2IyNWxiblJ6T2lCSlJHbHRVbVZrZFdOMGFXOXVVR0Z5WVcwZ1BTQjdkV2xPWVcxbE9pQW5RMjl0Y0c5dVpXNTBjeWNzSUhaaGJIVmxPaUF5TENCMGIyOXNkR2x3T2lBblZHaGxJRzUxYldKbGNpQnZaaUJqYjIxd2IyNWxiblJ6SUNoa2FXMWxibk5wYjI1ektTQjBieUJ3Y205cVpXTjBJSFJvWlNCa1lYUmhJSFJ2SjMwN1hHNGdJRzVGY0c5amFITTZJRWxFYVcxU1pXUjFZM1JwYjI1UVlYSmhiU0E5SUh0MWFVNWhiV1U2SUNkRmNHOWphSE1uTENCMllXeDFaVG9nTUN3Z2RHOXZiSFJwY0RvZ0oxUm9aU0J1ZFcxaVpYSWdiMllnWlhCdlkyaHpJSFJ2SUc5d2RHbHRhWHBsSUdWdFltVmtaR2x1WjNNZ2RtbGhJRk5IUkM0Z1EyOXRjSFYwWldRZ1lYVjBiMjFoZEdsallXeHNlU0JwWmlCelpYUWdkRzhnTUNkOU8xeHVJQ0J1VG1WcFoyaGliM0p6T2lCSlJHbHRVbVZrZFdOMGFXOXVVR0Z5WVcwZ1BTQjdkV2xPWVcxbE9pQW5UbVZwWjJoaWIzSnpKeXdnZG1Gc2RXVTZJREUxTENCMGIyOXNkR2x3T2lBblZHaGxJRzUxYldKbGNpQnZaaUJ1WldGeVpYTjBJRzVsYVdkb1ltOXljeUIwYnlCamIyNXpkSEoxWTNRZ2RHaGxJR1oxZW5wNUlHMWhibWxtYjJ4a0ozMDdYRzRnSUhOd2NtVmhaRG9nU1VScGJWSmxaSFZqZEdsdmJsQmhjbUZ0SUQwZ2UzVnBUbUZ0WlRvZ0oxTndjbVZoWkNjc0lIWmhiSFZsT2lBeExDQjBiMjlzZEdsd09pQW5WR2hsSUdWbVptVmpkR2wyWlNCelkyRnNaU0J2WmlCbGJXSmxaR1JsWkNCd2IybHVkSE1zSUhWelpXUWdkMmwwYUNCdGFXNGdaR2x6ZEdGdVkyVWdkRzhnWTI5dWRISnZiQ0IwYUdVZ1kyeDFiWEJsWkM5a2FYTndaWEp6WldRZ2JtRjBkWEpsSUc5bUlIUm9aU0JsYldKbFpHUnBibWNuZlR0Y2JpQWdiV2x1UkdsemREb2dTVVJwYlZKbFpIVmpkR2x2YmxCaGNtRnRJRDBnZTNWcFRtRnRaVG9nSjAxcGJpQmthWE4wWVc1alpTY3NJSFpoYkhWbE9pQXdMakVzSUhSdmIyeDBhWEE2SUNkVWFHVWdaV1ptWldOMGFYWmxJRzFwYm1sdGRXMGdaR2x6ZEdGdVkyVWdZbVYwZDJWbGJpQmxiV0psWkdSbFpDQndiMmx1ZEhNc0lIVnpaV1FnZDJsMGFDQnpjSEpsWVdRZ2RHOGdZMjl1ZEhKdmJDQjBhR1VnWTJ4MWJYQmxaQzlrYVhOd1pYSnpaV1FnYm1GMGRYSmxJRzltSUhSb1pTQmxiV0psWkdScGJtY25mVHRjYmx4dUlDQmpiMjV6ZEhKMVkzUnZjaWdwSUh0OU8xeHVmVnh1WEc1bGVIQnZjblFnWTJ4aGMzTWdWRk5PUlU5d2RHbHZibk1nZTF4dUlDQmxjSE5wYkc5dU9pQkpSR2x0VW1Wa2RXTjBhVzl1VUdGeVlXMGdQU0I3ZFdsT1lXMWxPaUFuUlhCemFXeHZiaWNzSUhaaGJIVmxPaUF4TUN3Z2RHOXZiSFJwY0RvZ0owVndjMmxzYjI0Z2FYTWdiR1ZoY201cGJtY2djbUYwWlNkOU8xeHVJQ0J3WlhKd2JHVjRhWFI1T2lCSlJHbHRVbVZrZFdOMGFXOXVVR0Z5WVcwZ1BTQjdkV2xPWVcxbE9pQW5VR1Z5Y0d4bGVHbDBlU2NzSUhaaGJIVmxPaUF6TUN3Z2RHOXZiSFJwY0RvZ0oxSnZkV2RvYkhrZ2FHOTNJRzFoYm5rZ2JtVnBaMmhpYjNKeklHVmhZMmdnY0c5cGJuUWdhVzVtYkhWbGJtTmxjeWQ5TzF4dUlDQmthVzA2SUVsRWFXMVNaV1IxWTNScGIyNVFZWEpoYlNBOUlIdDFhVTVoYldVNklDZEVhVzFsYm5OcGIyNWhiR2wwZVNjc0lIWmhiSFZsT2lBeUxDQjBiMjlzZEdsd09pQW5SR2x0Wlc1emFXOXVZV3hwZEhrZ2IyWWdkR2hsSUdWdFltVmtaR2x1WnlkOU8xeHVYRzRnSUdOdmJuTjBjblZqZEc5eUtDa2dlMzA3WEc1OVhHNWNiaThxS2lCQlluTjBjbUZqZENCa2FXMWxibk5wYjI1aGJHbDBlU0J5WldSMVkyVnlJQ292WEc1aFluTjBjbUZqZENCamJHRnpjeUJTWldSMVkyVnlJSHRjYmlBZ2NISnZkR1ZqZEdWa0lHUmhkR0U2SUZabFkzUnZjbk03WEc1Y2JpQWdZMjl1YzNSeWRXTjBiM0lvYjNCMGFXOXVjem9nVDNCMGFXOXVjeWtnZTF4dUlDQWdJSFJvYVhNdVpHRjBZU0E5SUc5d2RHbHZibk11WkdGMFlUdGNiaUFnZlZ4dVhHNGdJQzhxS2lCRmJXSmxaSE1nZEdobElHUmhkR0VnWjJsMlpXNGdhVzUwYnlCMGFHVWdkSGR2TFdScGJXVnVjMmx2Ym1Gc0lITndZV05sTGx4dUlDQWdLaUJBY21WMGRYSnVJSHRoYm5sOUlFTmhjblJsYzJsaGJpQmpiMjl5WkdsdVlYUmxJRzltSUhSb2FYTWdaVzFpWldSa2FXNW5JR0Z1WkNCa2FYTjBZVzVqWlNCdFlYUnlhWGdnZDJobGNtVWdZWEJ3YkdsallXSnNaUzRnS2k5Y2JpQWdZV0p6ZEhKaFkzUWdkSEpoYm5ObWIzSnRLSEJoY21Gc2JHVnNSR2x6ZEdGdVkyVlhiM0pyWlhKelB6b2dZbTl2YkdWaGJpazZJRkJ5YjIxcGMyVThTVkpsWkhWalpVUnBiV1Z1YzJsdmJtRnNhWFI1VW1WemRXeDBQanRjYm4xY2JseHVMeW9xSUhRdFUwNUZJR1JwYldWdWMybHZibUZzYVhSNUlISmxaSFZqZEdsdmJpNGdLaTljYm1Oc1lYTnpJRlJUVGtWU1pXUjFZMlZ5SUdWNGRHVnVaSE1nVW1Wa2RXTmxjaUI3WEc0Z0lIQnliM1JsWTNSbFpDQnlaV1IxWTJWeU9pQlVVMDVGTzF4dUlDQndjbTkwWldOMFpXUWdhWFJsY21GMGFXOXVjem9nYm5WdFltVnlPMXh1SUNCd2NtOTBaV04wWldRZ1pHbHpkR0Z1WTJWR2JtRnRaVG9nUzI1dmQyNU5aWFJ5YVdOek8xeHVJQ0J3Y205MFpXTjBaV1FnWkdsemRHRnVZMlZHYmpvZ0tHRTZJR0Z1ZVN3Z1lqb2dZVzU1S1NBOVBpQnVkVzFpWlhJN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVOeVpXRjBaWE1nWVc0Z2FXNXpkR0Z1WTJVZ2IyWWdWRk5PUlZKbFpIVmpaWEl1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdUM0IwYVc5dWMzMGdiM0IwYVc5dWN5QlBjSFJwYjI1eklIUnZJSEJoYzNNZ2RHOGdkR2hsSUdOdmJuTjBjblZqZEc5eUxseHVJQ0FnS2lCQWJXVnRZbVZ5YjJZZ1ZGTk9SVkpsWkhWalpYSmNiaUFnSUNvdlhHNGdJR052Ym5OMGNuVmpkRzl5S0c5d2RHbHZibk02SUU5d2RHbHZibk1wSUh0Y2JpQWdJQ0J6ZFhCbGNpaHZjSFJwYjI1ektUdGNiaUFnSUNCMGFHbHpMbkpsWkhWalpYSWdQU0J1WlhjZ1ZGTk9SU2h2Y0hScGIyNXpLVHRjYmlBZ0lDQjBhR2x6TG1sMFpYSmhkR2x2Ym5NZ1BTQnZjSFJwYjI1elB5NXBkR1Z5WVhScGIyNXpJRDgvSURFd01EdGNiaUFnSUNCMGFHbHpMbVJwYzNSaGJtTmxSbTVoYldVZ1BTQnZjSFJwYjI1ekxtUnBjM1JoYm1ObFJtNWhiV1U3WEc0Z0lDQWdkR2hwY3k1a2FYTjBZVzVqWlVadUlEMGdiM0IwYVc5dWN5NWthWE4wWVc1alpVWnVPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVWdFltVmtjeUIwYUdVZ1pHRjBZU0JuYVhabGJpQnBiblJ2SUhSb1pTQjBkMjh0WkdsdFpXNXphVzl1WVd3Z2MzQmhZMlVnZFhOcGJtY2dkQzFUVGtVZ2JXVjBhRzlrTGx4Y1hHNGdJQ0FxSUVCd1lYSmhiU0I3WW05dmJHVmhibjBnVzNCaGNtRnNiR1ZzUkdsemRHRnVZMlZYYjNKclpYSnpYU0JYYUdWMGFHVnlJSFJ2SUhWelpTQndZWEpoYkd4bGJDQmthWE4wWVc1alpTQjNiM0pyWlhKekxseHVJQ0FnS2lCQWNtVjBkWEp1SUh0aGJubDlJRU5oY25SbGMybGhiaUJqYjI5eVpHbHVZWFJsSUc5bUlIUm9hWE1nWlcxaVpXUmthVzVuSUdGdVpDQmthWE4wWVc1alpTQnRZWFJ5YVhnZ2QyaGxjbVVnWVhCd2JHbGpZV0pzWlM1Y2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCaGMzbHVZeUIwY21GdWMyWnZjbTBvY0dGeVlXeHNaV3hFYVhOMFlXNWpaVmR2Y210bGNuTS9PaUJpYjI5c1pXRnVLVG9nVUhKdmJXbHpaVHhKVW1Wa2RXTmxSR2x0Wlc1emFXOXVZV3hwZEhsU1pYTjFiSFErSUh0Y2JpQWdJQ0JqYjI1emRDQmthWE4wWVc1alpTQTlJSEJoY21Gc2JHVnNSR2x6ZEdGdVkyVlhiM0pyWlhKeklEOGdZWGRoYVhRZ0tHRnplVzVqSUNncElEMCtJSHRjYmlBZ0lDQWdJR052Ym5OMElHMWhkSEpwZUZObGNuWnBZMlVnUFNCdVpYY2dSR2x6ZEdGdVkyVk5ZWFJ5YVhoVFpYSjJhV05sS0hSeWRXVXNJR1poYkhObEtUdGNiaUFnSUNBZ0lIUnllU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR1JwYzNRZ1BTQmhkMkZwZENCdFlYUnlhWGhUWlhKMmFXTmxMbU5oYkdNb2RHaHBjeTVrWVhSaExDQjBhR2x6TG1ScGMzUmhibU5sUm01aGJXVXBPMXh1SUNBZ0lDQWdJQ0J0WVhSeWFYaFRaWEoyYVdObExuUmxjbTFwYm1GMFpTZ3BPMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdaR2x6ZER0Y2JpQWdJQ0FnSUgwZ1kyRjBZMmdnS0dVcElIdGNiaUFnSUNBZ0lDQWdiV0YwY21sNFUyVnlkbWxqWlM1MFpYSnRhVzVoZEdVb0tUdGNiaUFnSUNBZ0lDQWdkR2h5YjNjZ1pUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOUtTZ3BJRHBjYmlBZ0lDQWdJQ2dvS1NBOVBpQjdJR052Ym5OMElISmxkQ0E5SUVScGMzUmhibU5sVFdGMGNtbDRMbU5oYkdNb2RHaHBjeTVrWVhSaExDQW9ZU3dnWWlrZ1BUNGdkR2hwY3k1a2FYTjBZVzVqWlVadUtHRXNJR0lwS1RzZ2NtVjBMbTV2Y20xaGJHbDZaU2dwT3lCeVpYUjFjbTRnY21WMExtUmhkR0U3SUgwcEtDazdYRzVjYmlBZ0lDQmpiMjV6ZENCdFlYUnlhWGhRY205NGVTQTlJR1JwYzNSaGJtTmxUV0YwY21sNFVISnZlSGtvWkdsemRHRnVZMlVzSUhSb2FYTXVaR0YwWVM1c1pXNW5kR2dwTzF4dUlDQWdJSFJvYVhNdWNtVmtkV05sY2k1cGJtbDBSR0YwWVVScGMzUW9iV0YwY21sNFVISnZlSGtwTzF4dVhHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCMGFHbHpMbWwwWlhKaGRHbHZibk03SUNzcmFTbGNiaUFnSUNBZ0lIUm9hWE11Y21Wa2RXTmxjaTV6ZEdWd0tDazdJQzh2SUdWMlpYSjVJSFJwYldVZ2VXOTFJR05oYkd3Z2RHaHBjeXdnYzI5c2RYUnBiMjRnWjJWMGN5QmlaWFIwWlhKY2JseHVJQ0FnSUhKbGRIVnliaUI3WkdsemRHRnVZMlU2SUdScGMzUmhibU5sTENCbGJXSmxaR1JwYm1jNklIUm9hWE11Y21Wa2RXTmxjaTVuWlhSVGIyeDFkR2x2YmlncGZUdGNiaUFnZlZ4dWZWeHVYRzVsZUhCdmNuUWdkSGx3WlNCVmJXRndUM0IwYVc5dWN5QTlJRTl3ZEdsdmJuTWdKaUJWVFVGUVVHRnlZVzFsZEdWeWN5QW1JSHR3Y21WRFlXeGpkV3hoZEdWRWFYTjBZVzVqWlUxaGRISnBlRDg2SUdKdmIyeGxZVzU5TzF4dVhHNHZLaXBjYmlBcUlFbHRjR3hsYldWdWRITWdWVTFCVUNCa2FXMWxibk5wYjI1aGJHbDBlU0J5WldSMVkzUnBiMjR1WEc0Z0tseHVJQ29nUUdOc1lYTnpJRlZOUVZCU1pXUjFZMlZ5WEc0Z0tpQkFaWGgwWlc1a2N5QjdVbVZrZFdObGNuMWNiaUFxTDF4dVkyeGhjM01nVlUxQlVGSmxaSFZqWlhJZ1pYaDBaVzVrY3lCU1pXUjFZMlZ5SUh0Y2JpQWdjSEp2ZEdWamRHVmtJSEpsWkhWalpYSTZJSFZ0YWk1VlRVRlFPMXh1SUNCd2NtOTBaV04wWldRZ1pHbHpkR0Z1WTJWR2JtRnRaVG9nUzI1dmQyNU5aWFJ5YVdOek8xeHVJQ0J3Y205MFpXTjBaV1FnWkdsemRHRnVZMlZHYmpvZ1JuVnVZM1JwYjI0N1hHNGdJSEJ5YjNSbFkzUmxaQ0IyWldOMGIzSnpPaUJ1ZFcxaVpYSmJYVnRkTzF4dUlDQndjbTkwWldOMFpXUWdaR2x6ZEdGdVkyVk5ZWFJ5YVhnL09pQkdiRzloZERNeVFYSnlZWGs3WEc0Z0lIQnliM1JsWTNSbFpDQjFjMmx1WjBScGMzUmhibU5sVFdGMGNtbDRPaUJpYjI5c1pXRnVPMXh1SUNCd2NtOTBaV04wWldRZ1pHMUpibVJsZUVaMWJtTTZJQ2hwT2lCdWRXMWlaWElzSUdvNklHNTFiV0psY2lrZ1BUNGdiblZ0WW1WeU8xeHVJQ0F2S2lwY2JpQWdJQ29nUTNKbFlYUmxjeUJoYmlCcGJuTjBZVzVqWlNCdlppQlZUVUZRVW1Wa2RXTmxjaTVjYmlBZ0lDb2dRSEJoY21GdElIdFBjSFJwYjI1emZTQnZjSFJwYjI1eklFOXdkR2x2Ym5NZ2RHOGdjR0Z6Y3lCMGJ5QjBhR1VnWTI5dWMzUnlkV04wYjNJdVhHNGdJQ0FxSUVCdFpXMWlaWEp2WmlCVlRVRlFVbVZrZFdObGNseHVJQ0FnS2k5Y2JpQWdZMjl1YzNSeWRXTjBiM0lvYjNCMGFXOXVjem9nVlcxaGNFOXdkR2x2Ym5NcElIdGNiaUFnSUNCemRYQmxjaWh2Y0hScGIyNXpLVHRjYmlBZ0lDQmhjM05sY25Rb0oyUnBjM1JoYm1ObFJtNWhiV1VuSUdsdUlHOXdkR2x2Ym5NcE8xeHVJQ0FnSUdGemMyVnlkQ2duWkdsemRHRnVZMlZHYmljZ2FXNGdiM0IwYVc5dWN5azdYRzRnSUNBZ2RHaHBjeTVrYVhOMFlXNWpaVVp1SUQwZ2IzQjBhVzl1Y3k1a2FYTjBZVzVqWlVadUlUdGNibHh1SUNBZ0lIUm9hWE11WkdsemRHRnVZMlZHYm1GdFpTQTlJRzl3ZEdsdmJuTXVaR2x6ZEdGdVkyVkdibUZ0WlNFN1hHNGdJQ0FnZEdocGN5NWtiVWx1WkdWNFJuVnVZeUE5SUdSdFRHbHVaV0Z5U1c1a1pYZ29kR2hwY3k1a1lYUmhMbXhsYm1kMGFDazdYRzRnSUNBZ0x5OVZiV0Z3SUhWelpYTWdkbVZqZEc5eUlHbHVaR1Y0YVc1bkxDQnpieUIzWlNCdVpXVmtJSFJ2SUdOeVpXRjBaU0JoYmlCaGNuSmhlU0J2WmlCMlpXTjBiM0p6SUdGeklHbHVaR1ZqWlhNdVhHNGdJQ0FnZEdocGN5NTJaV04wYjNKeklEMGdibVYzSUVGeWNtRjVLSFJvYVhNdVpHRjBZUzVzWlc1bmRHZ3BMbVpwYkd3b01Da3ViV0Z3S0NoZkxDQnBLU0E5UGlCYmFWMHBPMXh1SUNBZ0lIUm9hWE11ZFhOcGJtZEVhWE4wWVc1alpVMWhkSEpwZUNBOUlDRW9JVzl3ZEdsdmJuTXVjSEpsUTJGc1kzVnNZWFJsUkdsemRHRnVZMlZOWVhSeWFYZ2dKaVlnZEdocGN5NWtZWFJoTG14bGJtZDBhQ0ErSUUxQldGOUVTVk5VUVU1RFJWOU5RVlJTU1ZoZlVrOVhVeWs3WEc0Z0lDQWdhV1lnS0NGMGFHbHpMblZ6YVc1blJHbHpkR0Z1WTJWTllYUnlhWGdwWEc0Z0lDQWdJQ0J2Y0hScGIyNXpMbVJwYzNSaGJtTmxSbTRnUFNCMGFHbHpMbDlsYm1OdlpHVmtSR2x6ZEdGdVkyVXVZbWx1WkNoMGFHbHpLVHRjYmlBZ0lDQmxiSE5sWEc0Z0lDQWdJQ0J2Y0hScGIyNXpMbVJwYzNSaGJtTmxSbTRnUFNCMGFHbHpMbDlsYm1OdlpHVmtSR2x6ZEdGdVkyVk5ZWFJ5YVhndVltbHVaQ2gwYUdsektUdGNibHh1SUNBZ0lHbG1JQ2gwYUdsekxtUmhkR0V1YkdWdVozUm9JRHdnTVRVcFhHNGdJQ0FnSUNCdmNIUnBiMjV6TG01T1pXbG5hR0p2Y25NZ1BTQjBhR2x6TG1SaGRHRXViR1Z1WjNSb0lDMGdNVHRjYmlBZ0lDQjBhR2x6TG5KbFpIVmpaWElnUFNCdVpYY2dkVzFxTGxWTlFWQW9iM0IwYVc5dWN5azdYRzRnSUNBZ0x5OGdkR2hwY3k1eVpXUjFZMlZ5TG1ScGMzUmhibU5sUm00Z1BTQjBhR2x6TGw5bGJtTnZaR1ZrUkdsemRHRnVZMlV1WW1sdVpDaDBhR2x6S1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkRkWE4wYjIwZ1pHbHpkR0Z1WTJVZ2QzSmhjSEJsY2lCMGJ5Qm9ZWFpsSUc1MWJXVnlhV01nYVc1d2RYUnpJR2x1YzNSbFlXUWdiMllnYzNSeWFXNW5JRzl1WlhNdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3Y205MFpXTjBaV1JjYmlBZ0lDb2dRSEJoY21GdElIdHVkVzFpWlhKYlhYMGdZU0JVYUdVZ1ptbHljM1FnYVhSbGJTNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEpiWFgwZ1lpQlVhR1VnWm1seWMzUWdhWFJsYlM1Y2JpQWdJQ29nUUhKbGRIVnliaUI3Ym5WdFltVnlmU0JFYVhOMFlXNWpaU0J0WlhSeWFXTXVYRzRnSUNBcUlFQnRaVzFpWlhKdlppQlZUVUZRVW1Wa2RXTmxjbHh1SUNBZ0tpOWNiaUFnY0hKdmRHVmpkR1ZrSUY5bGJtTnZaR1ZrUkdsemRHRnVZMlZOWVhSeWFYZ29ZVG9nYm5WdFltVnlXMTBzSUdJNklHNTFiV0psY2x0ZEtUb2diblZ0WW1WeUlIdGNiaUFnSUNCcFppQW9ZVnN3WFNBOVBUMGdZbHN3WFNsY2JpQWdJQ0FnSUhKbGRIVnliaUF3TzF4dUlDQWdJR2xtSUNoaFd6QmRJRDRnWWxzd1hTbGNiaUFnSUNBZ0lISmxkSFZ5YmlCMGFHbHpMbVJwYzNSaGJtTmxUV0YwY21sNElWdDBhR2x6TG1SdFNXNWtaWGhHZFc1aktHSmJNRjBzSUdGYk1GMHBYVHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVrYVhOMFlXNWpaVTFoZEhKcGVDRmJkR2hwY3k1a2JVbHVaR1Y0Um5WdVl5aGhXekJkTENCaVd6QmRLVjA3WEc0Z0lIMWNibHh1SUNCd2NtOTBaV04wWldRZ1gyVnVZMjlrWldSRWFYTjBZVzVqWlNoaE9pQnVkVzFpWlhKYlhTd2dZam9nYm5WdFltVnlXMTBwT2lCdWRXMWlaWElnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1ScGMzUmhibU5sUm00b2RHaHBjeTVrWVhSaFcyRmJNRjFkTENCMGFHbHpMbVJoZEdGYllsc3dYVjBwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFVnRZbVZrY3lCMGFHVWdaR0YwWVNCbmFYWmxiaUJwYm5SdklIUm9aU0IwZDI4dFpHbHRaVzV6YVc5dVlXd2djM0JoWTJVZ2RYTnBibWNnVlUxQlVDQnRaWFJvYjJRdVhHNGdJQ0FxSUVCd1lYSmhiU0I3WW05dmJHVmhibjBnVzNCaGNtRnNiR1ZzUkdsemRHRnVZMlZYYjNKclpYSnpYU0JYYUdWMGFHVnlJSFJ2SUhWelpTQndZWEpoYkd4bGJDQmthWE4wWVc1alpTQnRZWFJ5YVhnZ2QyOXlhMlZ5Y3k1Y2JpQWdJQ29nUUhKbGRIVnliaUI3WVc1NWZTQkRZWEowWlhOcFlXNGdZMjl2Y21ScGJtRjBaU0J2WmlCMGFHbHpJR1Z0WW1Wa1pHbHVaeTVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJoYzNsdVl5QjBjbUZ1YzJadmNtMG9jR0Z5WVd4c1pXeEVhWE4wWVc1alpWZHZjbXRsY25NL09pQmliMjlzWldGdUtUb2dVSEp2YldselpUeEpVbVZrZFdObFJHbHRaVzV6YVc5dVlXeHBkSGxTWlhOMWJIUStJSHRjYmlBZ0lDQnBaaUFvZEdocGN5NTFjMmx1WjBScGMzUmhibU5sVFdGMGNtbDRLU0I3WEc0Z0lDQWdJQ0IwYUdsekxtUnBjM1JoYm1ObFRXRjBjbWw0SUQwZ2NHRnlZV3hzWld4RWFYTjBZVzVqWlZkdmNtdGxjbk1nUHlCaGQyRnBkQ0FvWVhONWJtTWdLQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCdFlYUnlhWGhUWlhKMmFXTmxJRDBnYm1WM0lFUnBjM1JoYm1ObFRXRjBjbWw0VTJWeWRtbGpaU2gwY25WbExDQm1ZV3h6WlNrN1hHNGdJQ0FnSUNBZ0lIUnllU0I3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnWkdsemRDQTlJR0YzWVdsMElHMWhkSEpwZUZObGNuWnBZMlV1WTJGc1l5aDBhR2x6TG1SaGRHRXNJSFJvYVhNdVpHbHpkR0Z1WTJWR2JtRnRaU2s3WEc0Z0lDQWdJQ0FnSUNBZ2JXRjBjbWw0VTJWeWRtbGpaUzUwWlhKdGFXNWhkR1VvS1R0Y2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1pHbHpkRHRjYmlBZ0lDQWdJQ0FnZlNCallYUmphQ0FvWlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJRzFoZEhKcGVGTmxjblpwWTJVdWRHVnliV2x1WVhSbEtDazdYRzRnSUNBZ0lDQWdJQ0FnZEdoeWIzY2daVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlNrb0tTQTZYRzRnSUNBZ0lDQWdJQ2dvS1NBOVBpQjdJR052Ym5OMElISmxkQ0E5SUVScGMzUmhibU5sVFdGMGNtbDRMbU5oYkdNb2RHaHBjeTVrWVhSaExDQW9ZU3dnWWlrZ1BUNGdkR2hwY3k1a2FYTjBZVzVqWlVadUtHRXNJR0lwS1RzZ2NtVjBkWEp1SUhKbGRDNWtZWFJoT3lCOUtTZ3BPMXh1SUNBZ0lIMWNiaUFnSUNCamIyNXpkQ0JsYldKbFpHUnBibWNnUFNCMGFHbHpMbkpsWkhWalpYSXVabWwwS0hSb2FYTXVkbVZqZEc5eWN5azdYRzVjYmlBZ0lDQm1kVzVqZEdsdmJpQmhjbkpoZVVOaGMzUXlRMjl2Y21ScGJtRjBaWE1vWkdGMFlUb2diblZ0WW1WeVcxMWJYU2s2SUVOdmIzSmthVzVoZEdWeklIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCdVpYY2dRWEp5WVhrb1pHRjBZUzVzWlc1bmRHZ3BMbVpwYkd3b01Da3ViV0Z3S0NoZkxDQnBLU0E5UGlBb1ZtVmpkRzl5TG1aeWIyMG9aR0YwWVZ0cFhTa3BLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2UyVnRZbVZrWkdsdVp6b2dZWEp5WVhsRFlYTjBNa052YjNKa2FXNWhkR1Z6S0dWdFltVmtaR2x1Wnlrc0lDNHVMaWgwYUdsekxtUnBjM1JoYm1ObFRXRjBjbWw0SUQ4Z2UyUnBjM1JoYm1ObE9pQjBhR2x6TG1ScGMzUmhibU5sVFdGMGNtbDRmU0E2SUh0OUtYMDdYRzRnSUgxY2JuMWNibHh1THlvcVhHNGdLaUJKYlhCc1pXMWxiblJ6SUc5eWFXZHBibUZzSUZOUVJTQmthVzFsYm5OcGIyNWhiR2wwZVNCeVpXUjFZM1JwYjI0dVhHNGdLbHh1SUNvZ1FHTnNZWE56SUZOUVJWSmxaSFZqWlhKY2JpQXFJRUJsZUhSbGJtUnpJSHRTWldSMVkyVnlmVnh1SUNvdlhHNWpiR0Z6Y3lCVFVFVlNaV1IxWTJWeUlHVjRkR1Z1WkhNZ1VtVmtkV05sY2lCN1hHNGdJSEJ5YjNSbFkzUmxaQ0J5WldSMVkyVnlPaUJUVUVWQ1lYTmxPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkRjbVZoZEdWeklHRnVJR2x1YzNSaGJtTmxJRzltSUZOUVJWSmxaSFZqWlhJdVhHNGdJQ0FxSUVCd1lYSmhiU0I3VDNCMGFXOXVjMzBnYjNCMGFXOXVjeUJQY0hScGIyNXpJSFJ2SUhCaGMzTWdkRzhnZEdobElHTnZibk4wY25WamRHOXlMbHh1SUNBZ0tpQkFiV1Z0WW1WeWIyWWdVMUJGVW1Wa2RXTmxjbHh1SUNBZ0tpOWNiaUFnWTI5dWMzUnlkV04wYjNJb2IzQjBhVzl1Y3pvZ1QzQjBhVzl1Y3lrZ2UxeHVJQ0FnSUhOMWNHVnlLRzl3ZEdsdmJuTXBPMXh1SUNBZ0lIUm9hWE11Y21Wa2RXTmxjaUE5SUc1bGR5QlRVRVZDWVhObEtHOXdkR2x2Ym5NcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRVZ0WW1Wa2N5QjBhR1VnWkdGMFlTQm5hWFpsYmlCcGJuUnZJSFJvWlNCMGQyOHRaR2x0Wlc1emFXOXVZV3dnYzNCaFkyVWdkWE5wYm1jZ2RHaGxJRzl5YVdkcGJtRnNJRk5RUlNCdFpYUm9iMlF1WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMkZ1ZVgwZ1EyRnlkR1Z6YVdGdUlHTnZiM0prYVc1aGRHVWdiMllnZEdocGN5QmxiV0psWkdScGJtY2dZVzVrSUdScGMzUmhibU5sSUcxaGRISnBlQ0IzYUdWeVpTQmhjSEJzYVdOaFlteGxMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR0Z6ZVc1aklIUnlZVzV6Wm05eWJTZ3BPaUJRY205dGFYTmxQRWxTWldSMVkyVkVhVzFsYm5OcGIyNWhiR2wwZVZKbGMzVnNkRDRnZTF4dUlDQWdJR052Ym5OMElHVnRZaUE5SUdGM1lXbDBJSFJvYVhNdWNtVmtkV05sY2k1bGJXSmxaQ2gwYUdsekxtUmhkR0VwTzF4dUlDQWdJSEpsZEhWeWJpQjdaR2x6ZEdGdVkyVTZJSFJvYVhNdWNtVmtkV05sY2k1a2FYTjBZVzVqWlN3Z1pXMWlaV1JrYVc1bk9pQmxiV0o5TzF4dUlDQjlYRzU5WEc1Y2JpOHFLbHh1SUNvZ1NXMXdiR1Z0Wlc1MGN5QnRiMlJwWm1sbFpDQlRVRVVnWkdsdFpXNXphVzl1WVd4cGRIa2djbVZrZFdOMGFXOXVMbHh1SUNwY2JpQXFJRUJqYkdGemN5QlFVMUJGVW1Wa2RXTmxjbHh1SUNvZ1FHVjRkR1Z1WkhNZ2UxSmxaSFZqWlhKOVhHNGdLaTljYm1Oc1lYTnpJRkJUVUVWU1pXUjFZMlZ5SUdWNGRHVnVaSE1nVW1Wa2RXTmxjaUI3WEc0Z0lIQnliM1JsWTNSbFpDQnlaV1IxWTJWeU9pQlFVMUJGUW1GelpUdGNibHh1SUNBdktpcGNiaUFnSUNvZ1EzSmxZWFJsY3lCaGJpQnBibk4wWVc1alpTQnZaaUJRVTFCRlVtVmtkV05sY2k1Y2JpQWdJQ29nUUhCaGNtRnRJSHRQY0hScGIyNXpmU0J2Y0hScGIyNXpJRTl3ZEdsdmJuTWdkRzhnY0dGemN5QjBieUIwYUdVZ1kyOXVjM1J5ZFdOMGIzSXVYRzRnSUNBcUlFQnRaVzFpWlhKdlppQlFVMUJGVW1Wa2RXTmxjbHh1SUNBZ0tpOWNiaUFnWTI5dWMzUnlkV04wYjNJb2IzQjBhVzl1Y3pvZ1QzQjBhVzl1Y3lrZ2UxeHVJQ0FnSUhOMWNHVnlLRzl3ZEdsdmJuTXBPMXh1SUNBZ0lIUm9hWE11Y21Wa2RXTmxjaUE5SUc1bGR5QlFVMUJGUW1GelpTaHZjSFJwYjI1ektUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJGYldKbFpITWdkR2hsSUdSaGRHRWdaMmwyWlc0Z2FXNTBieUIwYUdVZ2RIZHZMV1JwYldWdWMybHZibUZzSUhOd1lXTmxJSFZ6YVc1bklIUm9aU0J0YjJScFptbGxaQ0JUVUVVZ2JXVjBhRzlrTGx4dUlDQWdLaUJBY21WMGRYSnVJSHRoYm5sOUlFTmhjblJsYzJsaGJpQmpiMjl5WkdsdVlYUmxJRzltSUhSb2FYTWdaVzFpWldSa2FXNW5JR0Z1WkNCa2FYTjBZVzVqWlNCdFlYUnlhWGdnZDJobGNtVWdZWEJ3YkdsallXSnNaUzVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJoYzNsdVl5QjBjbUZ1YzJadmNtMG9LVG9nVUhKdmJXbHpaVHhKVW1Wa2RXTmxSR2x0Wlc1emFXOXVZV3hwZEhsU1pYTjFiSFErSUh0Y2JpQWdJQ0JqYjI1emRDQmxiV0lnUFNCaGQyRnBkQ0IwYUdsekxuSmxaSFZqWlhJdVpXMWlaV1FvZEdocGN5NWtZWFJoS1R0Y2JpQWdJQ0J5WlhSMWNtNGdlMlJwYzNSaGJtTmxPaUIwYUdsekxuSmxaSFZqWlhJdVpHbHpkR0Z1WTJVc0lHVnRZbVZrWkdsdVp6b2daVzFpZlR0Y2JpQWdmVnh1ZlZ4dVhHNHZLaXBjYmlBcUlFbHRjR3hsYldWdWRITWdiM0pwWjJsdVlXd2dVMUJGSUdScGJXVnVjMmx2Ym1Gc2FYUjVJSEpsWkhWamRHbHZiaTVjYmlBcVhHNGdLaUJBWTJ4aGMzTWdUM0pwWjJsdVlXeFRVRVZTWldSMVkyVnlYRzRnS2lCQVpYaDBaVzVrY3lCN1VtVmtkV05sY24xY2JpQXFMMXh1WTJ4aGMzTWdUM0pwWjJsdVlXeFRVRVZTWldSMVkyVnlJR1Y0ZEdWdVpITWdVbVZrZFdObGNpQjdYRzRnSUhCeWIzUmxZM1JsWkNCeVpXUjFZMlZ5T2lCUGNtbG5hVzVoYkZOUVJUdGNibHh1SUNBdktpcGNiaUFnSUNvZ1EzSmxZWFJsY3lCaGJpQnBibk4wWVc1alpTQnZaaUJQY21sbmFXNWhiRk5RUlZKbFpIVmpaWEl1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdUM0IwYVc5dWMzMGdiM0IwYVc5dWN5QlBjSFJwYjI1eklIUnZJSEJoYzNNZ2RHOGdkR2hsSUdOdmJuTjBjblZqZEc5eUxseHVJQ0FnS2lCQWJXVnRZbVZ5YjJZZ1QzSnBaMmx1WVd4VFVFVlNaV1IxWTJWeVhHNGdJQ0FxTDF4dUlDQmpiMjV6ZEhKMVkzUnZjaWh2Y0hScGIyNXpPaUJQY0hScGIyNXpLU0I3WEc0Z0lDQWdjM1Z3WlhJb2IzQjBhVzl1Y3lrN1hHNGdJQ0FnZEdocGN5NXlaV1IxWTJWeUlEMGdibVYzSUU5eWFXZHBibUZzVTFCRktHOXdkR2x2Ym5NcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRVZ0WW1Wa2N5QjBhR1VnWkdGMFlTQm5hWFpsYmlCcGJuUnZJSFJvWlNCMGQyOHRaR2x0Wlc1emFXOXVZV3dnYzNCaFkyVWdkWE5wYm1jZ2RHaGxJRzl5YVdkcGJtRnNJRk5RUlNCdFpYUm9iMlF1WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMkZ1ZVgwZ1EyRnlkR1Z6YVdGdUlHTnZiM0prYVc1aGRHVWdiMllnZEdocGN5QmxiV0psWkdScGJtY2dZVzVrSUdScGMzUmhibU5sSUcxaGRISnBlQ0IzYUdWeVpTQmhjSEJzYVdOaFlteGxMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR0Z6ZVc1aklIUnlZVzV6Wm05eWJTZ3BPaUJRY205dGFYTmxQRWxTWldSMVkyVkVhVzFsYm5OcGIyNWhiR2wwZVZKbGMzVnNkRDRnZTF4dUlDQWdJR052Ym5OMElHVnRZaUE5SUdGM1lXbDBJSFJvYVhNdWNtVmtkV05sY2k1bGJXSmxaQ2gwYUdsekxtUmhkR0VwTzF4dUlDQWdJSEpsZEhWeWJpQjdaR2x6ZEdGdVkyVTZJSFJvYVhNdWNtVmtkV05sY2k1a2FYTjBZVzVqWlN3Z1pXMWlaV1JrYVc1bk9pQmxiV0o5TzF4dUlDQjlYRzU5WEc1Y2JtTnZibk4wSUVGMllXbHNZV0pzWlZKbFpIVmpaWEp6SUQwZ2UxeHVJQ0FuVlUxQlVDYzZJRlZOUVZCU1pXUjFZMlZ5TEZ4dUlDQW5kQzFUVGtVbk9pQlVVMDVGVW1Wa2RXTmxjaXhjYmlBZ0oxTlFSU2M2SUZOUVJWSmxaSFZqWlhJc1hHNGdJQ2R3VTFCRkp6b2dVRk5RUlZKbFpIVmpaWElzWEc0Z0lDZFBjbWxuYVc1aGJGTlFSU2M2SUU5eWFXZHBibUZzVTFCRlVtVmtkV05sY2l4Y2JuMDdYRzVjYm1WNGNHOXlkQ0IwZVhCbElFdHViM2R1VFdWMGFHOWtjeUE5SUd0bGVXOW1JSFI1Y0dWdlppQkJkbUZwYkdGaWJHVlNaV1IxWTJWeWN6dGNibHh1THlvcVhHNGdLaUJWYm1sbWFXVmtJR05zWVhOeklHbHRjR3hsYldWdWRHbHVaeUJrYVdabVpYSmxiblFnWkdsdFpXNXphVzl1WVd4cGRIa2djbVZrZFdOMGFXOXVJRzFsZEdodlpITXVYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUdOc1lYTnpJRVJwYldWdWMybHZibUZzYVhSNVVtVmtkV05sY2x4dUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1JHbHRaVzV6YVc5dVlXeHBkSGxTWldSMVkyVnlJSHRjYmlBZ2NISnBkbUYwWlNCeVpXUjFZMlZ5T2lCU1pXUjFZMlZ5SUh3Z2RXNWtaV1pwYm1Wa08xeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGNtVmhkR1Z6SUdGdUlHbHVjM1JoYm1ObElHOW1JRVJwYldWdWMybHZibUZzYVhSNVVtVmtkV05sY2k1Y2JpQWdJQ29nUUhCaGNtRnRJSHRoYm5sYlhYMGdaR0YwWVNCV1pXTjBiM0p6SUhSdklHVnRZbVZrTGx4dUlDQWdLaUJBY0dGeVlXMGdlMHR1YjNkdVRXVjBhRzlrYzMwZ2JXVjBhRzlrSUVWdFltVmtaR2x1WnlCdFpYUm9iMlFnZEc4Z1ltVWdZWEJ3YkdsbFpGeHVJQ0FnS2lCQWNHRnlZVzBnZTB0dWIzZHVUV1YwY21samMzMGdiV1YwY21saklFUnBjM1JoYm1ObElHMWxkSEpwWXlCMGJ5QmlaU0JqYjIxd2RYUmxaQ0JpWlhSM1pXVnVJR1ZoWTJnZ2IyWWdkR2hsSUhabFkzUnZjbk11WEc0Z0lDQXFJRUJ3WVhKaGJTQjdUM0IwYVc5dWMzMGdXMjl3ZEdsdmJuTmRJRTl3ZEdsdmJuTWdkRzhnY0dGemN5QjBieUIwYUdVZ2FXMXdiR1Z0Wlc1MGFXNW5JR1Z0WW1Wa1pHVnljeTVjYmlBZ0lDb2dRRzFsYldKbGNtOW1JRVJwYldWdWMybHZibUZzYVhSNVVtVmtkV05sY2x4dUlDQWdLaTljYmlBZ1kyOXVjM1J5ZFdOMGIzSW9aR0YwWVRvZ1lXNTVXMTBzSUcxbGRHaHZaRG9nUzI1dmQyNU5aWFJvYjJSekxDQnRaWFJ5YVdNNklFdHViM2R1VFdWMGNtbGpjeXdnYjNCMGFXOXVjejg2SUU5d2RHbHZibk1wSUh0Y2JpQWdJQ0JqYjI1emRDQnRaV0Z6ZFhKbElEMGdibVYzSUUxbFlYTjFjbVVvYldWMGNtbGpLUzVuWlhSTlpXRnpkWEpsS0NrN1hHNGdJQ0FnYkdWMElITndaV05QY0hScGIyNXpJRDBnZTMwN1hHNWNiaUFnSUNCcFppQW9hWE5DYVhSQmNuSmhlVTFsZEhKcFl5aHRaWFJ5YVdNcEtTQjdYRzRnSUNBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJR1JoZEdFdWJHVnVaM1JvT3lBcksya3BYRzRnSUNBZ0lDQWdJR1JoZEdGYmFWMGdQU0J1WlhjZ1FtbDBRWEp5WVhrb1pHRjBZVnRwWFM1ZlpHRjBZU3dnWkdGMFlWdHBYUzVmYkdWdVozUm9LVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvYldWMGFHOWtJRDA5SUNkVlRVRlFKeWtnZTF4dUlDQWdJQ0FnYzNCbFkwOXdkR2x2Ym5NZ1BTQjdYRzRnSUNBZ0lDQWdJQzR1TG50a1lYUmhPaUJrWVhSaGZTeGNiaUFnSUNBZ0lDQWdMaTR1ZTJScGMzUmhibU5sUm00NklHMWxZWE4xY21WOUxGeHVJQ0FnSUNBZ0lDQXVMaTU3WkdsemRHRnVZMlZHYm1GdFpUb2diV1YwY21samZTeGNiaUFnSUNBZ0lDQWdMaTR1ZTI1RmNHOWphSE02SUc5d2RHbHZibk0vTG1ONVkyeGxjMzBzWEc0Z0lDQWdJQ0FnSUM0dUxtOXdkR2x2Ym5Nc1hHNGdJQ0FnSUNCOU8xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb2JXVjBhRzlrSUQwOUlDZDBMVk5PUlNjcElIdGNiaUFnSUNBZ0lITndaV05QY0hScGIyNXpJRDBnZTF4dUlDQWdJQ0FnSUNBdUxpNTdaR0YwWVRvZ1pHRjBZWDBzWEc0Z0lDQWdJQ0FnSUM0dUxudGthWE4wWVc1alpVWnVPaUJ0WldGemRYSmxmU3hjYmlBZ0lDQWdJQ0FnTGk0dWUyUnBjM1JoYm1ObFJtNWhiV1U2SUcxbGRISnBZMzBzWEc0Z0lDQWdJQ0FnSUM0dUxudHBkR1Z5WVhScGIyNXpPaUJ2Y0hScGIyNXpQeTVqZVdOc1pYTWdQejhnZFc1a1pXWnBibVZrZlN4Y2JpQWdJQ0FnSUNBZ0xpNHViM0IwYVc5dWN5eGNiaUFnSUNBZ0lIMDdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaHRaWFJvYjJRZ1BUMGdKMU5RUlNjcElIdGNiaUFnSUNBZ0lITndaV05QY0hScGIyNXpJRDBnZXk0dUxudGtZWFJoT2lCa1lYUmhmU3dnTGk0dWUyUnBjM1JoYm1ObE9pQnRaV0Z6ZFhKbGZTd2daR2x6ZEdGdVkyVkdkVzVqZEdsdmJrNWhiV1U2SUcxbGRISnBZeXdnTGk0dWIzQjBhVzl1YzMwN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSE53WldOUGNIUnBiMjV6SUQwZ2V5NHVMbnRrWVhSaE9pQmtZWFJoZlN3Z0xpNHVlMlJwYzNSaGJtTmxPaUJ0WldGemRYSmxmU3dnWkdsemRHRnVZMlZHZFc1amRHbHZiazVoYldVNklHMWxkSEpwWXl3Z0xpNHViM0IwYVc5dWMzMDdYRzRnSUNBZ2ZWeHVJQ0FnSUhSb2FYTXVjbVZrZFdObGNpQTlJRzVsZHlCQmRtRnBiR0ZpYkdWU1pXUjFZMlZ5YzF0dFpYUm9iMlJkS0hOd1pXTlBjSFJwYjI1ektUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJGYldKbFpITWdkR2hsSUdSaGRHRWdaMmwyWlc0Z2FXNTBieUIwYUdVZ2RIZHZMV1JwYldWdWMybHZibUZzSUhOd1lXTmxJSFZ6YVc1bklIUm9aU0JqYUc5elpXNGdiV1YwYUc5a0xseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMkp2YjJ4bFlXNTlJSFJ5WVc1emNHOXpaU0JYYUdWMGFHVnlJSFJ2SUhSeVlXNXpabTl5YlNCamIyOXlaR2x1WVhSbGN5QjBieUJvWVhabElHTnZiSFZ0Ym5NdFptbHljM1FnYjNKcFpXNTBZWFJwYjI0dVhHNGdJQ0FxSUVCd1lYSmhiU0I3WW05dmJHVmhibjBnY0dGeVlXeHNaV3hFYVhOMFlXNWpaVmR2Y210bGNuTWdWMmhsZEdobGNpQjBieUIxYzJVZ2NHRnlZV3hzWld3Z1pHbHpkR0Z1WTJVZ1kyOXRjSFYwWVhScGIyNHVYRzRnSUNBcUlFQjBhSEp2ZDNNZ2UwVnljbTl5ZlNCSlppQjBhR1VnWlcxaVpXUmthVzVuSUcxbGRHaHZaQ0IzWVhNZ2JtOTBJR1p2ZFc1a0xseHVJQ0FnS2lCQWNtVjBkWEp1SUh0aGJubDlJRU5oY25SbGMybGhiaUJqYjI5eVpHbHVZWFJsSUc5bUlIUm9hWE1nWlcxaVpXUmthVzVuSUdGdVpDQmthWE4wWVc1alpTQnRZWFJ5YVhnZ2QyaGxjbVVnWVhCd2JHbGpZV0pzWlM1Y2JpQWdJQ29nUUcxbGJXSmxjbTltSUVScGJXVnVjMmx2Ym1Gc2FYUjVVbVZrZFdObGNseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHRnplVzVqSUhSeVlXNXpabTl5YlNoMGNtRnVjM0J2YzJVNklHSnZiMnhsWVc0Z1BTQm1ZV3h6WlN3Z2NHRnlZV3hzWld4RWFYTjBZVzVqWlZkdmNtdGxjbk0vT2lCaWIyOXNaV0Z1S1RvZ1VISnZiV2x6WlR4SlVtVmtkV05sUkdsdFpXNXphVzl1WVd4cGRIbFNaWE4xYkhRK0lIdGNiaUFnSUNCcFppQW9kR2hwY3k1eVpXUjFZMlZ5SUQwOVBTQjFibVJsWm1sdVpXUXBYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb0oxSmxaSFZqWlhJZ2QyRnpJRzV2ZENCa1pXWnBibVZrTGljcE8xeHVYRzRnSUNBZ2JHVjBJSHRsYldKbFpHUnBibWNzSUdScGMzUmhibU5sZlNBOUlHRjNZV2wwSUhSb2FYTXVjbVZrZFdObGNpNTBjbUZ1YzJadmNtMG9jR0Z5WVd4c1pXeEVhWE4wWVc1alpWZHZjbXRsY25NcE8xeHVYRzRnSUNBZ2FXWWdLSFJ5WVc1emNHOXpaU2xjYmlBZ0lDQWdJR1Z0WW1Wa1pHbHVaeUE5SUhSeVlXNXpjRzl6WlUxaGRISnBlQ2hsYldKbFpHUnBibWNwTzF4dVhHNGdJQ0FnY21WMGRYSnVJSHRrYVhOMFlXNWpaVG9nWkdsemRHRnVZMlVzSUdWdFltVmtaR2x1WnpvZ1pXMWlaV1JrYVc1bmZUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhSMWNtNXpJRzFsZEhKcFkzTWdZWFpoYVd4aFlteGxJR0o1SUhSNWNHVXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3UVhaaGFXeGhZbXhsUkdGMFlWUjVjR1Z6ZlNCMGVYQmxUbUZ0WlNCMGVYQmxJRzVoYldWY2JpQWdJQ29nUUhKbGRIVnliaUI3YzNSeWFXNW5XMTE5SUUxbGRISnBZeUJ1WVcxbGN5QjNhR2xqYUNCbGVIQmxZM1J6SUhSb1pTQm5hWFpsYmlCa1lYUmhJSFI1Y0dWY2JpQWdJQ29nUUcxbGJXSmxjbTltSUVScGJXVnVjMmx2Ym1Gc2FYUjVVbVZrZFdObGNseHVJQ0FnS2k5Y2JpQWdjM1JoZEdsaklHRjJZV2xzWVdKc1pVMWxkSEpwWTNOQ2VWUjVjR1VvZEhsd1pVNWhiV1U2SUVGMllXbHNZV0pzWlVSaGRHRlVlWEJsY3lrZ2UxeHVJQ0FnSUhKbGRIVnliaUJQWW1wbFkzUXVhMlY1Y3loQmRtRnBiR0ZpYkdWTlpYUnlhV056VzNSNWNHVk9ZVzFsWFNrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVYwZFhKdWN5QmthVzFsYm5OcGIyNWhiR2wwZVNCeVpXUjFZM1JwYjI0Z2JXVjBhRzlrY3lCaGRtRnBiR0ZpYkdVdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ5WldGa2IyNXNlVnh1SUNBZ0tpQkFiV1Z0WW1WeWIyWWdSR2x0Wlc1emFXOXVZV3hwZEhsU1pXUjFZMlZ5WEc0Z0lDQXFMMXh1SUNCemRHRjBhV01nWjJWMElHRjJZV2xzWVdKc1pVMWxkR2h2WkhNb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUU5aWFtVmpkQzVyWlhsektFRjJZV2xzWVdKc1pWSmxaSFZqWlhKektUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhSMWNtNXpJRzFsZEhKcFkzTWdZWFpoYVd4aFlteGxMbHh1SUNBZ0tseHVJQ0FnS2lCQWNtVmhaRzl1YkhsY2JpQWdJQ29nUUcxbGJXSmxjbTltSUVScGJXVnVjMmx2Ym1Gc2FYUjVVbVZrZFdObGNseHVJQ0FnS2k5Y2JpQWdjM1JoZEdsaklHZGxkQ0JoZG1GcGJHRmliR1ZOWlhSeWFXTnpLQ2tnZTF4dUlDQWdJR3hsZENCaGJuTTZJSE4wY21sdVoxdGRJRDBnVzEwN1hHNGdJQ0FnVDJKcVpXTjBMblpoYkhWbGN5aEJkbUZwYkdGaWJHVk5aWFJ5YVdOektTNW1iM0pGWVdOb0tDaHZZbW9wSUQwK0lIdGNiaUFnSUNBZ0lHTnZibk4wSUdGeWNtRjVJRDBnVDJKcVpXTjBMblpoYkhWbGN5aHZZbW9wTzF4dUlDQWdJQ0FnWVc1eklEMGdXeTR1TG1GdWN5d2dMaTR1WVhKeVlYbGRPMXh1SUNBZ0lIMHBPMXh1SUNBZ0lISmxkSFZ5YmlCaGJuTTdYRzRnSUgxY2JuMWNiaUpkZlE9PSIsImltcG9ydCB7IGlzTmlsIH0gZnJvbSAnLi91dGlscyc7XG4vKiogRGlzdGFuY2UgbWF0cml4IGNsYXNzIGNvbXBhdGlibGUgd2l0aCBkYXRhIHN0cnVjdHVyZSBvZiBzY2lweS5zcGF0aWFsLmRpc3RhbmNlLnBkaXN0ICovXG5leHBvcnQgY2xhc3MgRGlzdGFuY2VNYXRyaXgge1xuICAgIGdldCBkYXRhKCkgeyByZXR1cm4gdGhpcy5fZGF0YTsgfVxuICAgIGdldCBzaXplKCkgeyByZXR1cm4gdGhpcy5fc2l6ZTsgfVxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7RmxvYXQzMkFycmF5fSBkYXRhIERpc3RhbmNlIGRhdGFcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc2l6ZSBOdW1iZXIgb2Ygb3JpZ2luYWwgb2JzZXJ2YXRpb25zXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoZGF0YSwgc2l6ZSkge1xuICAgICAgICBpZiAoc2l6ZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmIChkYXRhID09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FyZ3VtZW50cyBlcnJvcjogZGF0YSBvciBzaXplIGlzIHJlcXVpcmVkLicpO1xuICAgICAgICAgICAgdGhpcy5fZGF0YSA9IGRhdGE7XG4gICAgICAgICAgICB0aGlzLl9zaXplID0gKDEgKyBNYXRoLnNxcnQoMSArIDQgKiAyICogdGhpcy5fZGF0YS5sZW5ndGgpKSAvIDI7XG4gICAgICAgICAgICBpZiAodGhpcy5fc2l6ZSAhPSBNYXRoLmZsb29yKHRoaXMuX3NpemUpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkYXRhIGxlbmd0aCAke3RoaXMuX2RhdGEubGVuZ3RofSBsZWFkcyB0byBub24gaW50ZWdlciBzaXplICR7dGhpcy5fc2l6ZX1gKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3NpemUgPSBzaXplO1xuICAgICAgICAgICAgY29uc3QgZGF0YUxlbmd0aCA9IHNpemUgKiAoc2l6ZSAtIDEpIC8gMjtcbiAgICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGEubGVuZ3RoICE9IGRhdGFMZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkYXRhIGxlbmd0aC4gT2JzZXJ2YXRpb25zIHNpemUgJHtzaXplfSByZXF1aXJlcyBkYXRhIGxlbmd0aCAke2RhdGFMZW5ndGh9LmApO1xuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGEgPSBkYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGF0YSA9IG5ldyBGbG9hdDMyQXJyYXkoZGF0YUxlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgX2xpbmVhcml6ZUlKKGksIGopIHtcbiAgICAgICAgaWYgKCEoaSA8IGopKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdpIG11c3QgYmUgbGVzcyB0aGFuIGonKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NpemUgKiBpICsgaiAtIE1hdGguZmxvb3IoKChpICsgMikgKiAoaSArIDEpKSAvIDIpO1xuICAgIH1cbiAgICBnZXQoaSwgaikge1xuICAgICAgICBpZiAoaSA9PSBqKVxuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIGVsc2UgaWYgKGkgPCBqKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFbdGhpcy5fbGluZWFyaXplSUooaSwgaildO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVt0aGlzLl9saW5lYXJpemVJSihqLCBpKV07XG4gICAgfVxuICAgIHNldChpLCBqLCB2YWx1ZSkge1xuICAgICAgICB0aGlzLl9kYXRhW3RoaXMuX2xpbmVhcml6ZUlKKGksIGopXSA9IHZhbHVlO1xuICAgIH1cbiAgICBzdGF0aWMgY2FsYyhsaXN0LCBtZXRob2QpIHtcbiAgICAgICAgY29uc3Qgc2l6ZSA9IGxpc3QubGVuZ3RoO1xuICAgICAgICBjb25zdCByZXMgPSBuZXcgRGlzdGFuY2VNYXRyaXgodW5kZWZpbmVkLCBzaXplKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IHNpemU7IGorKykge1xuICAgICAgICAgICAgICAgIC8vIGlmIGFueSBvZiB0aGUgdmFsdWVzIGlzIG51bGwsIHNldCBkaXN0YW5jZSB0byAxXG4gICAgICAgICAgICAgICAgcmVzLnNldChpLCBqLCAhaXNOaWwobGlzdFtpXSkgJiYgIWlzTmlsKGxpc3Rbal0pID8gbWV0aG9kKGxpc3RbaV0sIGxpc3Rbal0pIDogMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gICAgLy8gc3F1YXJlcyBlYWNoIHZhbHVlIGluIG1hdHJpeCBpbiBwbGFjZVxuICAgIHNxdWFyZSgpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9kYXRhLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgdGhpcy5fZGF0YVtpXSA9IHRoaXMuX2RhdGFbaV0gKiogMjtcbiAgICB9XG4gICAgLy8gYWRkcyBhbm90aGVyIG1hdHJpeCB0byB0aGlzIG9uZSBpbiBwbGFjZVxuICAgIGFkZChvdGhlcikge1xuICAgICAgICBpZiAodGhpcy5fc2l6ZSAhPT0gb3RoZXIuX3NpemUpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1hdHJpY2VzIG11c3QgaGF2ZSB0aGUgc2FtZSBzaXplLiBUaGlzIHNpemU6ICR7dGhpcy5fc2l6ZX0sIG90aGVyIHNpemU6ICR7b3RoZXIuX3NpemV9YCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fZGF0YS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHRoaXMuX2RhdGFbaV0gKz0gb3RoZXIuX2RhdGFbaV07XG4gICAgfVxuICAgIC8vIHNxdWFyZSByb290IGVhY2ggdmFsdWUgaW4gbWF0cml4IGluIHBsYWNlXG4gICAgc3FydCgpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9kYXRhLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgdGhpcy5fZGF0YVtpXSA9IE1hdGguc3FydCh0aGlzLl9kYXRhW2ldKTtcbiAgICB9XG4gICAgLy9ub3JtaWx6ZSBkaXN0YW5jZSBtYXRyaXggaW4gcGxhY2VcbiAgICBub3JtYWxpemUoKSB7XG4gICAgICAgIGxldCBtaW4gPSAwO1xuICAgICAgICBsZXQgbWF4ID0gdGhpcy5fZGF0YVswXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fZGF0YVtpXSA8IG1pbilcbiAgICAgICAgICAgICAgICBtaW4gPSB0aGlzLl9kYXRhW2ldO1xuICAgICAgICAgICAgaWYgKHRoaXMuX2RhdGFbaV0gPiBtYXgpXG4gICAgICAgICAgICAgICAgbWF4ID0gdGhpcy5fZGF0YVtpXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByYW5nZSA9IG1heCAtIG1pbjtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9kYXRhLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgdGhpcy5fZGF0YVtpXSA9IHJhbmdlID09PSAwID8gdGhpcy5fZGF0YVtpXSAtIG1pbiA6ICh0aGlzLl9kYXRhW2ldIC0gbWluKSAvIChtYXggLSBtaW4pO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVpHbHpkR0Z1WTJVdGJXRjBjbWw0TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2laR2x6ZEdGdVkyVXRiV0YwY21sNExuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVWRCTEU5QlFVOHNSVUZCUXl4TFFVRkxMRVZCUVVNc1RVRkJUU3hUUVVGVExFTkJRVU03UVVGRk9VSXNNa1pCUVRKR08wRkJRek5HTEUxQlFVMHNUMEZCVHl4alFVRmpPMGxCU1hwQ0xFbEJRVWtzU1VGQlNTeExRVUZ0UWl4UFFVRlBMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlJTOURMRWxCUVVrc1NVRkJTU3hMUVVGaExFOUJRVThzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkZla003T3p0UFFVZEhPMGxCUTBnc1dVRkJXU3hKUVVGdFFpeEZRVUZGTEVsQlFXRTdVVUZETlVNc1NVRkJTU3hKUVVGSkxFbEJRVWtzVTBGQlV5eEZRVUZGTzFsQlEzSkNMRWxCUVVrc1NVRkJTU3hKUVVGSkxGTkJRVk03WjBKQlFVVXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXcwUTBGQk5FTXNRMEZCUXl4RFFVRkRPMWxCUlhKR0xFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NTVUZCU3l4RFFVRkRPMWxCUTI1Q0xFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRMmhGTEVsQlFVa3NTVUZCU1N4RFFVRkRMRXRCUVVzc1NVRkJTU3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNN1owSkJRM1JETEUxQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNc2RVSkJRWFZDTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3c0UWtGQk9FSXNTVUZCU1N4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRExFTkJRVU03VTBGRGRrYzdZVUZCVFR0WlFVTk1MRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETzFsQlEyeENMRTFCUVUwc1ZVRkJWU3hIUVVGWExFbEJRVWtzUjBGQlJ5eERRVUZETEVsQlFVa3NSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGFrUXNTVUZCU1N4SlFVRkpMRVZCUVVVN1owSkJRMUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SlFVRkpMRlZCUVZVN2IwSkJRek5DTEUxQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNc01FTkJRVEJETEVsQlFVa3NlVUpCUVhsQ0xGVkJRVlVzUjBGQlJ5eERRVUZETEVOQlFVTTdaMEpCUTNoSExFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRPMkZCUTI1Q08ybENRVUZOTzJkQ1FVTk1MRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzU1VGQlNTeFpRVUZaTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNN1lVRkRNME03VTBGRFJqdEpRVU5JTEVOQlFVTTdTVUZGVHl4WlFVRlpMRU5CUVVNc1EwRkJVeXhGUVVGRkxFTkJRVk03VVVGRGRrTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFpRVUZGTEUxQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNc2RVSkJRWFZDTEVOQlFVTXNRMEZCUXp0UlFVTjJSQ3hQUVVGUExFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU5zUlN4RFFVRkRPMGxCUlVRc1IwRkJSeXhEUVVGRExFTkJRVk1zUlVGQlJTeERRVUZUTzFGQlEzUkNMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU03V1VGRFVpeFBRVUZQTEVOQlFVTXNRMEZCUXp0aFFVTk9MRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU03V1VGRFdpeFBRVUZQTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenM3V1VGRk0wTXNUMEZCVHl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGREwwTXNRMEZCUXp0SlFVVkVMRWRCUVVjc1EwRkJReXhEUVVGVExFVkJRVVVzUTBGQlV5eEZRVUZGTEV0QlFXRTdVVUZEY2tNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXp0SlFVTTVReXhEUVVGRE8wbEJSVVFzVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCVHl4SlFVRnhRaXhGUVVGRkxFMUJRVzlETzFGQlF6TkZMRTFCUVUwc1NVRkJTU3hIUVVGWExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTTdVVUZEYWtNc1RVRkJUU3hIUVVGSExFZEJRVWNzU1VGQlNTeGpRVUZqTEVOQlFVTXNVMEZCVXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRMmhFTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1dVRkROMElzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1owSkJRMnBETEd0RVFVRnJSRHRuUWtGRGJFUXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0aFFVTnNSanRUUVVOR08xRkJRMFFzVDBGQlR5eEhRVUZITEVOQlFVTTdTVUZEWWl4RFFVRkRPMGxCUlVRc2QwTkJRWGRETzBsQlEycERMRTFCUVUwN1VVRkRXQ3hMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUTNoRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1NVRkRka01zUTBGQlF6dEpRVVZFTERKRFFVRXlRenRKUVVOd1F5eEhRVUZITEVOQlFVTXNTMEZCY1VJN1VVRkRPVUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNTMEZCU3l4TFFVRkxMRXRCUVVzc1EwRkJReXhMUVVGTE8xbEJRelZDTEUxQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNc1owUkJRV2RFTEVsQlFVa3NRMEZCUXl4TFFVRkxMR2xDUVVGcFFpeExRVUZMTEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNc1EwRkJRenRSUVVNMVJ5eExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRk8xbEJRM2hETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOd1F5eERRVUZETzBsQlJVUXNORU5CUVRSRE8wbEJRM0pETEVsQlFVazdVVUZEVkN4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFsQlEzaERMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkROME1zUTBGQlF6dEpRVVZFTEcxRFFVRnRRenRKUVVNMVFpeFRRVUZUTzFGQlEyUXNTVUZCU1N4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRMW9zU1VGQlNTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU40UWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZETVVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWRCUVVjN1owSkJRM0pDTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEzUkNMRWxCUVVrc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SFFVRkhPMmRDUVVOeVFpeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU4yUWp0UlFVTkVMRTFCUVUwc1MwRkJTeXhIUVVGSExFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTTdVVUZEZUVJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlR0WlFVTjRReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRXRCUVVzc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZETlVZc1EwRkJRenREUVVOR0lpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElDb2dZWE1nWjNKdmF5Qm1jbTl0SUNka1lYUmhaM0p2YXkxaGNHa3ZaM0p2YXljN1hHNXBiWEJ2Y25RZ0tpQmhjeUIxYVNCbWNtOXRJQ2RrWVhSaFozSnZheTFoY0drdmRXa25PMXh1YVcxd2IzSjBJQ29nWVhNZ1JFY2dabkp2YlNBblpHRjBZV2R5YjJzdFlYQnBMMlJuSnp0Y2JtbHRjRzl5ZENCN2FYTk9hV3g5SUdaeWIyMGdKeTR2ZFhScGJITW5PMXh1WEc0dktpb2dSR2x6ZEdGdVkyVWdiV0YwY21sNElHTnNZWE56SUdOdmJYQmhkR2xpYkdVZ2QybDBhQ0JrWVhSaElITjBjblZqZEhWeVpTQnZaaUJ6WTJsd2VTNXpjR0YwYVdGc0xtUnBjM1JoYm1ObExuQmthWE4wSUNvdlhHNWxlSEJ2Y25RZ1kyeGhjM01nUkdsemRHRnVZMlZOWVhSeWFYZ2dlMXh1SUNCZlpHRjBZVG9nUm14dllYUXpNa0Z5Y21GNU8xeHVJQ0JmYzJsNlpUb2diblZ0WW1WeU8xeHVYRzRnSUdkbGRDQmtZWFJoS0NrNklFWnNiMkYwTXpKQmNuSmhlU0I3SUhKbGRIVnliaUIwYUdsekxsOWtZWFJoT3lCOVhHNWNiaUFnWjJWMElITnBlbVVvS1RvZ2JuVnRZbVZ5SUhzZ2NtVjBkWEp1SUhSb2FYTXVYM05wZW1VN0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0R2JHOWhkRE15UVhKeVlYbDlJR1JoZEdFZ1JHbHpkR0Z1WTJVZ1pHRjBZVnh1SUNBZ0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ2MybDZaU0JPZFcxaVpYSWdiMllnYjNKcFoybHVZV3dnYjJKelpYSjJZWFJwYjI1elhHNGdJQ0FxTDF4dUlDQmpiMjV6ZEhKMVkzUnZjaWhrWVhSaFB6b2dSbXh2WVhRek1rRnljbUY1TENCemFYcGxQem9nYm5WdFltVnlLU0I3WEc0Z0lDQWdhV1lnS0hOcGVtVWdQVDBnZFc1a1pXWnBibVZrS1NCN1hHNGdJQ0FnSUNCcFppQW9aR0YwWVNBOVBTQjFibVJsWm1sdVpXUXBJSFJvY205M0lHNWxkeUJGY25KdmNpZ25RWEpuZFcxbGJuUnpJR1Z5Y205eU9pQmtZWFJoSUc5eUlITnBlbVVnYVhNZ2NtVnhkV2x5WldRdUp5azdYRzVjYmlBZ0lDQWdJSFJvYVhNdVgyUmhkR0VnUFNCa1lYUmhJVHRjYmlBZ0lDQWdJSFJvYVhNdVgzTnBlbVVnUFNBb01TQXJJRTFoZEdndWMzRnlkQ2d4SUNzZ05DQXFJRElnS2lCMGFHbHpMbDlrWVhSaExteGxibWQwYUNrcElDOGdNanRjYmlBZ0lDQWdJR2xtSUNoMGFHbHpMbDl6YVhwbElDRTlJRTFoZEdndVpteHZiM0lvZEdocGN5NWZjMmw2WlNrcFhHNGdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2loZ1NXNTJZV3hwWkNCa1lYUmhJR3hsYm1kMGFDQWtlM1JvYVhNdVgyUmhkR0V1YkdWdVozUm9mU0JzWldGa2N5QjBieUJ1YjI0Z2FXNTBaV2RsY2lCemFYcGxJQ1I3ZEdocGN5NWZjMmw2WlgxZ0tUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnZEdocGN5NWZjMmw2WlNBOUlITnBlbVU3WEc0Z0lDQWdJQ0JqYjI1emRDQmtZWFJoVEdWdVozUm9PaUJ1ZFcxaVpYSWdQU0J6YVhwbElDb2dLSE5wZW1VZ0xTQXhLU0F2SURJN1hHNGdJQ0FnSUNCcFppQW9aR0YwWVNrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvWkdGMFlTNXNaVzVuZEdnZ0lUMGdaR0YwWVV4bGJtZDBhQ2xjYmlBZ0lDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvWUVsdWRtRnNhV1FnWkdGMFlTQnNaVzVuZEdndUlFOWljMlZ5ZG1GMGFXOXVjeUJ6YVhwbElDUjdjMmw2WlgwZ2NtVnhkV2x5WlhNZ1pHRjBZU0JzWlc1bmRHZ2dKSHRrWVhSaFRHVnVaM1JvZlM1Z0tUdGNiaUFnSUNBZ0lDQWdkR2hwY3k1ZlpHRjBZU0E5SUdSaGRHRTdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQjBhR2x6TGw5a1lYUmhJRDBnYm1WM0lFWnNiMkYwTXpKQmNuSmhlU2hrWVhSaFRHVnVaM1JvS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCd2NtbDJZWFJsSUY5c2FXNWxZWEpwZW1WSlNpaHBPaUJ1ZFcxaVpYSXNJR282SUc1MWJXSmxjaWs2SUc1MWJXSmxjaUI3WEc0Z0lDQWdhV1lnS0NFb2FTQThJR29wS1NCMGFISnZkeUJ1WlhjZ1JYSnliM0lvSjJrZ2JYVnpkQ0JpWlNCc1pYTnpJSFJvWVc0Z2FpY3BPMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbDl6YVhwbElDb2dhU0FySUdvZ0xTQk5ZWFJvTG1ac2IyOXlLQ2dvYVNBcklESXBJQ29nS0drZ0t5QXhLU2tnTHlBeUtUdGNiaUFnZlZ4dVhHNGdJR2RsZENocE9pQnVkVzFpWlhJc0lHbzZJRzUxYldKbGNpa2dlMXh1SUNBZ0lHbG1JQ2hwSUQwOUlHb3BYRzRnSUNBZ0lDQnlaWFIxY200Z01EdGNiaUFnSUNCbGJITmxJR2xtSUNocElEd2dhaWxjYmlBZ0lDQWdJSEpsZEhWeWJpQjBhR2x6TGw5a1lYUmhXM1JvYVhNdVgyeHBibVZoY21sNlpVbEtLR2tzSUdvcFhUdGNiaUFnSUNCbGJITmxYRzRnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTVmWkdGMFlWdDBhR2x6TGw5c2FXNWxZWEpwZW1WSlNpaHFMQ0JwS1YwN1hHNGdJSDFjYmx4dUlDQnpaWFFvYVRvZ2JuVnRZbVZ5TENCcU9pQnVkVzFpWlhJc0lIWmhiSFZsT2lCdWRXMWlaWElwSUh0Y2JpQWdJQ0IwYUdsekxsOWtZWFJoVzNSb2FYTXVYMnhwYm1WaGNtbDZaVWxLS0drc0lHb3BYU0E5SUhaaGJIVmxPMXh1SUNCOVhHNWNiaUFnYzNSaGRHbGpJR05oYkdNOFZFOWlhajRvYkdsemREb2dTVzVrWlhoaFlteGxQRlJQWW1vK0xDQnRaWFJvYjJRNklDaGhPaUJVVDJKcUxDQmlPaUJVVDJKcUtTQTlQaUJ1ZFcxaVpYSXBPaUJFYVhOMFlXNWpaVTFoZEhKcGVDQjdYRzRnSUNBZ1kyOXVjM1FnYzJsNlpUb2diblZ0WW1WeUlEMGdiR2x6ZEM1c1pXNW5kR2c3WEc0Z0lDQWdZMjl1YzNRZ2NtVnpJRDBnYm1WM0lFUnBjM1JoYm1ObFRXRjBjbWw0S0hWdVpHVm1hVzVsWkN3Z2MybDZaU2s3WEc0Z0lDQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0J6YVhwbE95QnBLeXNwSUh0Y2JpQWdJQ0FnSUdadmNpQW9iR1YwSUdvZ1BTQnBJQ3NnTVRzZ2FpQThJSE5wZW1VN0lHb3JLeWtnZTF4dUlDQWdJQ0FnSUNBdkx5QnBaaUJoYm5rZ2IyWWdkR2hsSUhaaGJIVmxjeUJwY3lCdWRXeHNMQ0J6WlhRZ1pHbHpkR0Z1WTJVZ2RHOGdNVnh1SUNBZ0lDQWdJQ0J5WlhNdWMyVjBLR2tzSUdvc0lDRnBjMDVwYkNoc2FYTjBXMmxkS1NBbUppQWhhWE5PYVd3b2JHbHpkRnRxWFNrZ1B5QnRaWFJvYjJRb2JHbHpkRnRwWFN3Z2JHbHpkRnRxWFNrZ09pQXhLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhKbGN6dGNiaUFnZlZ4dVhHNGdJQzh2SUhOeGRXRnlaWE1nWldGamFDQjJZV3gxWlNCcGJpQnRZWFJ5YVhnZ2FXNGdjR3hoWTJWY2JpQWdjSFZpYkdsaklITnhkV0Z5WlNncElIdGNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElIUm9hWE11WDJSaGRHRXViR1Z1WjNSb095QnBLeXNwWEc0Z0lDQWdJQ0IwYUdsekxsOWtZWFJoVzJsZElEMGdkR2hwY3k1ZlpHRjBZVnRwWFNBcUtpQXlPMXh1SUNCOVhHNWNiaUFnTHk4Z1lXUmtjeUJoYm05MGFHVnlJRzFoZEhKcGVDQjBieUIwYUdseklHOXVaU0JwYmlCd2JHRmpaVnh1SUNCd2RXSnNhV01nWVdSa0tHOTBhR1Z5T2lCRWFYTjBZVzVqWlUxaGRISnBlQ2tnZTF4dUlDQWdJR2xtSUNoMGFHbHpMbDl6YVhwbElDRTlQU0J2ZEdobGNpNWZjMmw2WlNsY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWhnVFdGMGNtbGpaWE1nYlhWemRDQm9ZWFpsSUhSb1pTQnpZVzFsSUhOcGVtVXVJRlJvYVhNZ2MybDZaVG9nSkh0MGFHbHpMbDl6YVhwbGZTd2diM1JvWlhJZ2MybDZaVG9nSkh0dmRHaGxjaTVmYzJsNlpYMWdLVHRjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSFJvYVhNdVgyUmhkR0V1YkdWdVozUm9PeUJwS3lzcFhHNGdJQ0FnSUNCMGFHbHpMbDlrWVhSaFcybGRJQ3M5SUc5MGFHVnlMbDlrWVhSaFcybGRPMXh1SUNCOVhHNWNiaUFnTHk4Z2MzRjFZWEpsSUhKdmIzUWdaV0ZqYUNCMllXeDFaU0JwYmlCdFlYUnlhWGdnYVc0Z2NHeGhZMlZjYmlBZ2NIVmliR2xqSUhOeGNuUW9LU0I3WEc0Z0lDQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0IwYUdsekxsOWtZWFJoTG14bGJtZDBhRHNnYVNzcktWeHVJQ0FnSUNBZ2RHaHBjeTVmWkdGMFlWdHBYU0E5SUUxaGRHZ3VjM0Z5ZENoMGFHbHpMbDlrWVhSaFcybGRLVHRjYmlBZ2ZWeHVYRzRnSUM4dmJtOXliV2xzZW1VZ1pHbHpkR0Z1WTJVZ2JXRjBjbWw0SUdsdUlIQnNZV05sWEc0Z0lIQjFZbXhwWXlCdWIzSnRZV3hwZW1Vb0tTQjdYRzRnSUNBZ2JHVjBJRzFwYmlBOUlEQTdYRzRnSUNBZ2JHVjBJRzFoZUNBOUlIUm9hWE11WDJSaGRHRmJNRjA3WEc0Z0lDQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0IwYUdsekxsOWtZWFJoTG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQnBaaUFvZEdocGN5NWZaR0YwWVZ0cFhTQThJRzFwYmlsY2JpQWdJQ0FnSUNBZ2JXbHVJRDBnZEdocGN5NWZaR0YwWVZ0cFhUdGNiaUFnSUNBZ0lHbG1JQ2gwYUdsekxsOWtZWFJoVzJsZElENGdiV0Y0S1Z4dUlDQWdJQ0FnSUNCdFlYZ2dQU0IwYUdsekxsOWtZWFJoVzJsZE8xeHVJQ0FnSUgxY2JpQWdJQ0JqYjI1emRDQnlZVzVuWlNBOUlHMWhlQ0F0SUcxcGJqdGNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElIUm9hWE11WDJSaGRHRXViR1Z1WjNSb095QnBLeXNwWEc0Z0lDQWdJQ0IwYUdsekxsOWtZWFJoVzJsZElEMGdjbUZ1WjJVZ1BUMDlJREFnUHlCMGFHbHpMbDlrWVhSaFcybGRJQzBnYldsdUlEb2dLSFJvYVhNdVgyUmhkR0ZiYVYwZ0xTQnRhVzRwSUM4Z0tHMWhlQ0F0SUcxcGJpazdYRzRnSUgxY2JuMWNibHh1Wlhod2IzSjBJR2x1ZEdWeVptRmpaU0JKYm1SbGVHRmliR1U4VkU5aWFqNGdlMXh1SUNCYmFXNWtaWGc2SUc1MWJXSmxjbDA2SUZSUFltbzdYRzRnSUdkbGRDQnNaVzVuZEdnb0tUb2diblZ0WW1WeU8xeHVmVnh1SWwxOSIsImltcG9ydCB7IERpbWVuc2lvbmFsaXR5UmVkdWNlciB9IGZyb20gJy4uL3JlZHVjZS1kaW1lbnNpb25hbGl0eSc7XG4vKipcbiAqIFdvcmtlciB0aHJlYWQgcmVjZWl2aW5nIGRhdGEgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIHthbnlbXX0gY29sdW1uRGF0YSBTYW1wbGVzIHRvIHByb2Nlc3MuXG4gKiBAcGFyYW0ge0tub3duTWV0aG9kc30gbWV0aG9kIEVtYmVkZGluZyBtZXRob2QuXG4gKiBAcGFyYW0ge0tub3duTWV0cmljc30gbWVhc3VyZSBEaXN0YW5jZSBtZXRyaWMuXG4gKiBAcGFyYW0ge2FueX0gb3B0aW9ucyBPcHRpb25zIHRvIHBhc3MgdG8gYWxnb3JpdGhtLlxuICogQHBhcmFtIHtib29sZWFufSBwYXJhbGxlbERpc3RhbmNlV29ya2VycyBXaGV0aGVyIHRvIHVzZSBwYXJhbGxlbCBkaXN0YW5jZSB3b3JrZXJzLlxuICogQHJldHVybiB7YW55fSBFbWJlZGRpbmcgKGFuZCBkaXN0YW5jZSBtYXRyaXggd2hlcmUgYXBwbGljYWJsZSkuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIG9uTWVzc2FnZShjb2x1bW5EYXRhLCBtZXRob2QsIG1lYXN1cmUsIG9wdGlvbnMsIHBhcmFsbGVsRGlzdGFuY2VXb3JrZXJzKSB7XG4gICAgY29uc3QgcmVkdWNlciA9IG5ldyBEaW1lbnNpb25hbGl0eVJlZHVjZXIoY29sdW1uRGF0YSwgbWV0aG9kLCBtZWFzdXJlLCBvcHRpb25zKTtcbiAgICByZXR1cm4gYXdhaXQgcmVkdWNlci50cmFuc2Zvcm0odHJ1ZSwgcGFyYWxsZWxEaXN0YW5jZVdvcmtlcnMpO1xufVxuc2VsZi5vbm1lc3NhZ2UgPSBhc3luYyAoeyBkYXRhOiB7IGNvbHVtbkRhdGEsIG1ldGhvZCwgbWVhc3VyZSwgb3B0aW9ucywgcGFyYWxsZWxEaXN0YW5jZVdvcmtlcnMgfSB9KSA9PiB7XG4gICAgbGV0IGRhdGE7XG4gICAgdHJ5IHtcbiAgICAgICAgZGF0YSA9IGF3YWl0IG9uTWVzc2FnZShjb2x1bW5EYXRhLCBtZXRob2QsIG1lYXN1cmUsIG9wdGlvbnMsIHBhcmFsbGVsRGlzdGFuY2VXb3JrZXJzKTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgZGF0YSA9IHsgZXJyb3I6IGUgfTtcbiAgICB9XG4gICAgc2VsZi5wb3N0TWVzc2FnZSh7XG4gICAgICAgIGVycm9yOiBkYXRhLmVycm9yLFxuICAgICAgICBkaXN0YW5jZTogZGF0YS5kaXN0YW5jZSxcbiAgICAgICAgZW1iZWRkaW5nOiBkYXRhLmVtYmVkZGluZyxcbiAgICB9KTtcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laR2x0Wlc1emFXOXVZV3hwZEhrdGNtVmtkV05sY2k1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJbVJwYldWdWMybHZibUZzYVhSNUxYSmxaSFZqWlhJdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJRVUVzVDBGQlR5eEZRVUZETEhGQ1FVRnhRaXhGUVVGbExFMUJRVTBzTUVKQlFUQkNMRU5CUVVNN1FVRkhOMFU3T3pzN096czdPenRIUVZOSE8wRkJRMGdzUzBGQlN5eFZRVUZWTEZOQlFWTXNRMEZCUXl4VlFVRnBRaXhGUVVGRkxFMUJRVzlDTEVWQlFVVXNUMEZCY1VJc1JVRkRja1lzVDBGQllTeEZRVUZGTEhWQ1FVRnBRenRKUVVOb1JDeE5RVUZOTEU5QlFVOHNSMEZCUnl4SlFVRkpMSEZDUVVGeFFpeERRVU4yUXl4VlFVRlZMRVZCUTFZc1RVRkJUU3hGUVVOT0xFOUJRVThzUlVGRFVDeFBRVUZQTEVOQlExSXNRMEZCUXp0SlFVTkdMRTlCUVU4c1RVRkJUU3hQUVVGUExFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NSVUZCUlN4MVFrRkJkVUlzUTBGQlF5eERRVUZETzBGQlEyaEZMRU5CUVVNN1FVRkZSQ3hKUVVGSkxFTkJRVU1zVTBGQlV5eEhRVUZITEV0QlFVc3NSVUZCUlN4RlFVRkRMRWxCUVVrc1JVRkJSU3hGUVVGRExGVkJRVlVzUlVGQlJTeE5RVUZOTEVWQlFVVXNUMEZCVHl4RlFVRkZMRTlCUVU4c1JVRkJSU3gxUWtGQmRVSXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJSVHRKUVVOcVJ5eEpRVUZKTEVsQlFXOUVMRU5CUVVNN1NVRkRla1FzU1VGQlNUdFJRVU5HTEVsQlFVa3NSMEZCUnl4TlFVRk5MRk5CUVZNc1EwRkJReXhWUVVGVkxFVkJRVVVzVFVGQlRTeEZRVUZGTEU5QlFVOHNSVUZCUlN4UFFVRlBMRVZCUVVVc2RVSkJRWFZDTEVOQlFVTXNRMEZCUXp0TFFVTjJSanRKUVVGRExFOUJRVThzUTBGQlRTeEZRVUZGTzFGQlEyWXNTVUZCU1N4SFFVRkhMRVZCUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU1zUlVGQlF5eERRVUZETzB0QlEyNUNPMGxCUTBRc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF6dFJRVU5tTEV0QlFVc3NSVUZCUlN4SlFVRkpMRU5CUVVNc1MwRkJTenRSUVVOcVFpeFJRVUZSTEVWQlFVVXNTVUZCU1N4RFFVRkRMRkZCUVZFN1VVRkRka0lzVTBGQlV5eEZRVUZGTEVsQlFVa3NRMEZCUXl4VFFVRlRPMHRCUXpGQ0xFTkJRVU1zUTBGQlF6dEJRVU5NTEVOQlFVTXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCN1JHbHRaVzV6YVc5dVlXeHBkSGxTWldSMVkyVnlMQ0JMYm05M2JrMWxkR2h2WkhOOUlHWnliMjBnSnk0dUwzSmxaSFZqWlMxa2FXMWxibk5wYjI1aGJHbDBlU2M3WEc1cGJYQnZjblFnZTB0dWIzZHVUV1YwY21samMzMGdabkp2YlNBbkxpNHZkSGx3WldRdGJXVjBjbWxqY3k5MGVYQmxaQzF0WlhSeWFXTnpKenRjYmx4dUx5b3FYRzRnS2lCWGIzSnJaWElnZEdoeVpXRmtJSEpsWTJWcGRtbHVaeUJrWVhSaElHWjFibU4wYVc5dUxseHVJQ3BjYmlBcUlFQndZWEpoYlNCN1lXNTVXMTE5SUdOdmJIVnRia1JoZEdFZ1UyRnRjR3hsY3lCMGJ5QndjbTlqWlhOekxseHVJQ29nUUhCaGNtRnRJSHRMYm05M2JrMWxkR2h2WkhOOUlHMWxkR2h2WkNCRmJXSmxaR1JwYm1jZ2JXVjBhRzlrTGx4dUlDb2dRSEJoY21GdElIdExibTkzYmsxbGRISnBZM045SUcxbFlYTjFjbVVnUkdsemRHRnVZMlVnYldWMGNtbGpMbHh1SUNvZ1FIQmhjbUZ0SUh0aGJubDlJRzl3ZEdsdmJuTWdUM0IwYVc5dWN5QjBieUJ3WVhOeklIUnZJR0ZzWjI5eWFYUm9iUzVjYmlBcUlFQndZWEpoYlNCN1ltOXZiR1ZoYm4wZ2NHRnlZV3hzWld4RWFYTjBZVzVqWlZkdmNtdGxjbk1nVjJobGRHaGxjaUIwYnlCMWMyVWdjR0Z5WVd4c1pXd2daR2x6ZEdGdVkyVWdkMjl5YTJWeWN5NWNiaUFxSUVCeVpYUjFjbTRnZTJGdWVYMGdSVzFpWldSa2FXNW5JQ2hoYm1RZ1pHbHpkR0Z1WTJVZ2JXRjBjbWw0SUhkb1pYSmxJR0Z3Y0d4cFkyRmliR1VwTGx4dUlDb3ZYRzVoYzNsdVl5Qm1kVzVqZEdsdmJpQnZiazFsYzNOaFoyVW9ZMjlzZFcxdVJHRjBZVG9nWVc1NVcxMHNJRzFsZEdodlpEb2dTMjV2ZDI1TlpYUm9iMlJ6TENCdFpXRnpkWEpsT2lCTGJtOTNiazFsZEhKcFkzTXNYRzRnSUc5d2RHbHZibk0vT2lCaGJua3NJSEJoY21Gc2JHVnNSR2x6ZEdGdVkyVlhiM0pyWlhKelB6b2dZbTl2YkdWaGJpazZJRkJ5YjIxcGMyVThlMlJwYzNSaGJtTmxQem9nWVc1NUxDQmxiV0psWkdScGJtYy9PaUJoYm5sOVBpQjdYRzRnSUdOdmJuTjBJSEpsWkhWalpYSWdQU0J1WlhjZ1JHbHRaVzV6YVc5dVlXeHBkSGxTWldSMVkyVnlLRnh1SUNBZ0lHTnZiSFZ0YmtSaGRHRXNYRzRnSUNBZ2JXVjBhRzlrTEZ4dUlDQWdJRzFsWVhOMWNtVXNYRzRnSUNBZ2IzQjBhVzl1Y3l4Y2JpQWdLVHRjYmlBZ2NtVjBkWEp1SUdGM1lXbDBJSEpsWkhWalpYSXVkSEpoYm5ObWIzSnRLSFJ5ZFdVc0lIQmhjbUZzYkdWc1JHbHpkR0Z1WTJWWGIzSnJaWEp6S1R0Y2JuMWNibHh1YzJWc1ppNXZibTFsYzNOaFoyVWdQU0JoYzNsdVl5QW9lMlJoZEdFNklIdGpiMngxYlc1RVlYUmhMQ0J0WlhSb2IyUXNJRzFsWVhOMWNtVXNJRzl3ZEdsdmJuTXNJSEJoY21Gc2JHVnNSR2x6ZEdGdVkyVlhiM0pyWlhKemZYMHBJRDArSUh0Y2JpQWdiR1YwSUdSaGRHRTZJSHRsY25KdmNqODZJR0Z1ZVN3Z1pHbHpkR0Z1WTJVL09pQmhibmtzSUdWdFltVmtaR2x1Wno4NklHRnVlWDA3WEc0Z0lIUnllU0I3WEc0Z0lDQWdaR0YwWVNBOUlHRjNZV2wwSUc5dVRXVnpjMkZuWlNoamIyeDFiVzVFWVhSaExDQnRaWFJvYjJRc0lHMWxZWE4xY21Vc0lHOXdkR2x2Ym5Nc0lIQmhjbUZzYkdWc1JHbHpkR0Z1WTJWWGIzSnJaWEp6S1R0Y2JpQWdmU0JqWVhSamFDQW9aVG9nWVc1NUtTQjdYRzRnSUNBZ1pHRjBZU0E5SUh0bGNuSnZjam9nWlgwN1hHNGdJSDFjYmlBZ2MyVnNaaTV3YjNOMFRXVnpjMkZuWlNoN1hHNGdJQ0FnWlhKeWIzSTZJR1JoZEdFdVpYSnliM0lzWEc0Z0lDQWdaR2x6ZEdGdVkyVTZJR1JoZEdFdVpHbHpkR0Z1WTJVc1hHNGdJQ0FnWlcxaVpXUmthVzVuT2lCa1lYUmhMbVZ0WW1Wa1pHbHVaeXhjYmlBZ2ZTazdYRzU5TzF4dUlsMTkiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuVFNORSA9IHZvaWQgMDtcbnZhciB0c25lXzEgPSByZXF1aXJlKFwiLi90c25lXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVFNORVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdHNuZV8xLlRTTkU7IH0gfSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuVFNORSA9IHZvaWQgMDtcbmNsYXNzIFRTTkUge1xuICAgIGNvbnN0cnVjdG9yKG9wdCkge1xuICAgICAgICAvLyByZXR1cm4gMCBtZWFuIHVuaXQgc3RhbmRhcmQgZGV2aWF0aW9uIHJhbmRvbSBudW1iZXJcbiAgICAgICAgdGhpcy5yZXR1cm5WID0gZmFsc2U7XG4gICAgICAgIHRoaXMudlZhbHVlID0gMC4wO1xuICAgICAgICB0aGlzLml0ZXIgPSAwO1xuICAgICAgICBvcHQgPSBvcHQgfHwge307XG4gICAgICAgIHRoaXMucGVycGxleGl0eSA9IHRoaXMuZ2V0b3B0KG9wdCwgJ3BlcnBsZXhpdHknLCAzMCk7IC8vIGVmZmVjdGl2ZSBudW1iZXIgb2YgbmVhcmVzdCBuZWlnaGJvcnNcbiAgICAgICAgdGhpcy5kaW0gPSB0aGlzLmdldG9wdChvcHQsICdkaW0nLCAyKTsgLy8gYnkgZGVmYXVsdCAyLUQgdFNORVxuICAgICAgICB0aGlzLmVwc2lsb24gPSB0aGlzLmdldG9wdChvcHQsICdlcHNpbG9uJywgMTApOyAvLyBsZWFybmluZyByYXRlXG4gICAgfVxuICAgIGFzc2VydChjb25kaXRpb24sIG1lc3NhZ2UpIHtcbiAgICAgICAgaWYgKCFjb25kaXRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG1lc3NhZ2UgfHwgJ0Fzc2VydGlvbiBmYWlsZWQnO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIHN5bnRheCBzdWdhclxuICAgIGdldG9wdChvcHQsIGZpZWxkLCBkZWZhdWx0dmFsKSB7XG4gICAgICAgIGlmIChvcHQuaGFzT3duUHJvcGVydHkoZmllbGQpKSB7XG4gICAgICAgICAgICByZXR1cm4gb3B0W2ZpZWxkXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0dmFsO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdhdXNzUmFuZG9tKCkge1xuICAgICAgICBpZiAodGhpcy5yZXR1cm5WKSB7XG4gICAgICAgICAgICB0aGlzLnJldHVyblYgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1ID0gMiAqIE1hdGgucmFuZG9tKCkgLSAxO1xuICAgICAgICBjb25zdCB2ID0gMiAqIE1hdGgucmFuZG9tKCkgLSAxO1xuICAgICAgICBjb25zdCByID0gdSAqIHUgKyB2ICogdjtcbiAgICAgICAgaWYgKHIgPT09IDAgfHwgciA+IDEpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdhdXNzUmFuZG9tKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYyA9IE1hdGguc3FydCgtMiAqIE1hdGgubG9nKHIpIC8gcik7XG4gICAgICAgIHRoaXMudlZhbHVlID0gdiAqIGM7IC8vIGNhY2hlIHRoaXMgZm9yIG5leHQgZnVuY3Rpb24gY2FsbCBmb3IgZWZmaWNpZW5jeVxuICAgICAgICB0aGlzLnJldHVyblYgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdSAqIGM7XG4gICAgfVxuICAgIC8vIHJldHVybiByYW5kb20gbm9ybWFsIG51bWJlclxuICAgIHJhbmRuKG11LCBzdGQpIHsgcmV0dXJuIG11ICsgdGhpcy5nYXVzc1JhbmRvbSgpICogc3RkOyB9XG4gICAgLy8gdXRpbGl0aXR5IHRoYXQgY3JlYXRlcyBjb250aWd1b3VzIHZlY3RvciBvZiB6ZXJvcyBvZiBzaXplIG5cbiAgICB6ZXJvcyhuKSB7XG4gICAgICAgIGlmICh0eXBlb2YgKG4pID09PSAndW5kZWZpbmVkJyB8fCBpc05hTihuKSkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgQXJyYXlCdWZmZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAvLyBsYWNraW5nIGJyb3dzZXIgc3VwcG9ydFxuICAgICAgICAgICAgY29uc3QgYXJyID0gbmV3IEFycmF5KG4pO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgICAgICBhcnJbaV0gPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFycjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRmxvYXQ2NEFycmF5KG4pOyAvLyB0eXBlZCBhcnJheXMgYXJlIGZhc3RlclxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIHV0aWxpdHkgdGhhdCByZXR1cm5zIDJkIGFycmF5IGZpbGxlZCB3aXRoIHJhbmRvbSBudW1iZXJzXG4gICAgLy8gb3Igd2l0aCB2YWx1ZSBzLCBpZiBwcm92aWRlZFxuICAgIHJhbmRuMmQobiwgZCwgcykge1xuICAgICAgICBjb25zdCB1c2VzID0gdHlwZW9mIHMgIT09ICd1bmRlZmluZWQnO1xuICAgICAgICBjb25zdCB4ID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB4aGVyZSA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBkOyBqKyspIHtcbiAgICAgICAgICAgICAgICBpZiAodXNlcykge1xuICAgICAgICAgICAgICAgICAgICB4aGVyZS5wdXNoKHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgeGhlcmUucHVzaCh0aGlzLnJhbmRuKDAuMCwgMWUtNCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHgucHVzaCh4aGVyZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHg7XG4gICAgfVxuICAgIC8vIGNvbXB1dGUgTDIgZGlzdGFuY2UgYmV0d2VlbiB0d28gdmVjdG9yc1xuICAgIEwyKHgxLCB4Mikge1xuICAgICAgICBjb25zdCBEID0geDEubGVuZ3RoO1xuICAgICAgICBsZXQgZCA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgRDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB4MWkgPSB4MVtpXTtcbiAgICAgICAgICAgIGNvbnN0IHgyaSA9IHgyW2ldO1xuICAgICAgICAgICAgZCArPSAoeDFpIC0geDJpKSAqICh4MWkgLSB4MmkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkO1xuICAgIH1cbiAgICAvLyBjb21wdXRlIHBhaXJ3aXNlIGRpc3RhbmNlIGluIGFsbCB2ZWN0b3JzIGluIFhcbiAgICB4dG9kKFgpIHtcbiAgICAgICAgY29uc3QgTiA9IFgubGVuZ3RoO1xuICAgICAgICBjb25zdCBkaXN0ID0gdGhpcy56ZXJvcyhOICogTik7IC8vIGFsbG9jYXRlIGNvbnRpZ3VvdXMgYXJyYXlcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IE47IGorKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSB0aGlzLkwyKFhbaV0sIFhbal0pO1xuICAgICAgICAgICAgICAgIGRpc3RbaSAqIE4gKyBqXSA9IGQ7XG4gICAgICAgICAgICAgICAgZGlzdFtqICogTiArIGldID0gZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGlzdDtcbiAgICB9XG4gICAgLy8gY29tcHV0ZSAocF97aXxqfSArIHBfe2p8aX0pLygybilcbiAgICBkMnAoRCwgcGVycGxleGl0eSwgdG9sKSB7XG4gICAgICAgIGNvbnN0IG5mID0gTWF0aC5zcXJ0KEQubGVuZ3RoKTsgLy8gdGhpcyBiZXR0ZXIgYmUgYW4gaW50ZWdlclxuICAgICAgICBjb25zdCBuID0gTWF0aC5mbG9vcihuZik7XG4gICAgICAgIHRoaXMuYXNzZXJ0KG4gPT09IG5mLCAnRCBzaG91bGQgaGF2ZSBzcXVhcmUgbnVtYmVyIG9mIGVsZW1lbnRzLicpO1xuICAgICAgICBjb25zdCBoVGFyZ2V0ID0gTWF0aC5sb2cocGVycGxleGl0eSk7IC8vIHRhcmdldCBlbnRyb3B5IG9mIGRpc3RyaWJ1dGlvblxuICAgICAgICBjb25zdCBQID0gdGhpcy56ZXJvcyhuICogbik7IC8vIHRlbXBvcmFyeSBwcm9iYWJpbGl0eSBtYXRyaXhcbiAgICAgICAgY29uc3QgcHJvdyA9IHRoaXMuemVyb3Mobik7IC8vIGEgdGVtcG9yYXJ5IHN0b3JhZ2UgY29tcGFydG1lbnRcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBiZXRhbWluID0gLUluZmluaXR5O1xuICAgICAgICAgICAgbGV0IGJldGFtYXggPSBJbmZpbml0eTtcbiAgICAgICAgICAgIGxldCBiZXRhID0gMTsgLy8gaW5pdGlhbCB2YWx1ZSBvZiBwcmVjaXNpb25cbiAgICAgICAgICAgIGxldCBkb25lID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBtYXh0cmllcyA9IDUwO1xuICAgICAgICAgICAgLy8gcGVyZm9ybSBiaW5hcnkgc2VhcmNoIHRvIGZpbmQgYSBzdWl0YWJsZSBwcmVjaXNpb24gYmV0YVxuICAgICAgICAgICAgLy8gc28gdGhhdCB0aGUgZW50cm9weSBvZiB0aGUgZGlzdHJpYnV0aW9uIGlzIGFwcHJvcHJpYXRlXG4gICAgICAgICAgICBsZXQgbnVtID0gMDtcbiAgICAgICAgICAgIHdoaWxlICghZG9uZSkge1xuICAgICAgICAgICAgICAgIC8vZGVidWdnZXI7XG4gICAgICAgICAgICAgICAgLy8gY29tcHV0ZSBlbnRyb3B5IGFuZCBrZXJuZWwgcm93IHdpdGggYmV0YSBwcmVjaXNpb25cbiAgICAgICAgICAgICAgICBsZXQgcHN1bSA9IDAuMDtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG47IGorKykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcGogPSBNYXRoLmV4cCgtRFtpICogbiArIGpdICogYmV0YSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpID09PSBqKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwaiA9IDA7XG4gICAgICAgICAgICAgICAgICAgIH0gLy8gd2UgZG9udCBjYXJlIGFib3V0IGRpYWdvbmFsc1xuICAgICAgICAgICAgICAgICAgICBwcm93W2pdID0gcGo7XG4gICAgICAgICAgICAgICAgICAgIHBzdW0gKz0gcGo7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIG5vcm1hbGl6ZSBwIGFuZCBjb21wdXRlIGVudHJvcHlcbiAgICAgICAgICAgICAgICBsZXQgbkhlcmUgPSAwLjA7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBuOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBqO1xuICAgICAgICAgICAgICAgICAgICBpZiAocHN1bSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGogPSAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGogPSBwcm93W2pdIC8gcHN1bTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBwcm93W2pdID0gcGo7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwaiA+IDFlLTcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5IZXJlIC09IHBqICogTWF0aC5sb2cocGopO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGFkanVzdCBiZXRhIGJhc2VkIG9uIHJlc3VsdFxuICAgICAgICAgICAgICAgIGlmIChuSGVyZSA+IGhUYXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZW50cm9weSB3YXMgdG9vIGhpZ2ggKGRpc3RyaWJ1dGlvbiB0b28gZGlmZnVzZSlcbiAgICAgICAgICAgICAgICAgICAgLy8gc28gd2UgbmVlZCB0byBpbmNyZWFzZSB0aGUgcHJlY2lzaW9uIGZvciBtb3JlIHBlYWt5IGRpc3RyaWJ1dGlvblxuICAgICAgICAgICAgICAgICAgICBiZXRhbWluID0gYmV0YTsgLy8gbW92ZSB1cCB0aGUgYm91bmRzXG4gICAgICAgICAgICAgICAgICAgIGlmIChiZXRhbWF4ID09PSBJbmZpbml0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmV0YSA9IGJldGEgKiAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmV0YSA9IChiZXRhICsgYmV0YW1heCkgLyAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBjb252ZXJzZSBjYXNlLiBtYWtlIGRpc3RydWJ0aW9uIGxlc3MgcGVha3lcbiAgICAgICAgICAgICAgICAgICAgYmV0YW1heCA9IGJldGE7XG4gICAgICAgICAgICAgICAgICAgIGlmIChiZXRhbWluID09PSAtSW5maW5pdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJldGEgPSBiZXRhIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJldGEgPSAoYmV0YSArIGJldGFtaW4pIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBzdG9wcGluZyBjb25kaXRpb25zOiB0b28gbWFueSB0cmllcyBvciBnb3QgYSBnb29kIHByZWNpc2lvblxuICAgICAgICAgICAgICAgIG51bSsrO1xuICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhuSGVyZSAtIGhUYXJnZXQpIDwgdG9sKSB7XG4gICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAobnVtID49IG1heHRyaWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdkYXRhIHBvaW50ICcgKyBpICsgJyBnZXRzIHByZWNpc2lvbiAnICsgYmV0YSArICcgYWZ0ZXIgJyArIG51bSArICcgYmluYXJ5IHNlYXJjaCBzdGVwcy4nKTtcbiAgICAgICAgICAgIC8vIGNvcHkgb3ZlciB0aGUgZmluYWwgcHJvdyB0byBQIGF0IHJvdyBpXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG47IGorKykge1xuICAgICAgICAgICAgICAgIFBbaSAqIG4gKyBqXSA9IHByb3dbal07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gLy8gZW5kIGxvb3Agb3ZlciBleGFtcGxlcyBpXG4gICAgICAgIC8vIHN5bW1ldHJpemUgUCBhbmQgbm9ybWFsaXplIGl0IHRvIHN1bSB0byAxIG92ZXIgYWxsIGlqXG4gICAgICAgIGNvbnN0IHBPdXQgPSB0aGlzLnplcm9zKG4gKiBuKTtcbiAgICAgICAgY29uc3QgTjIgPSBuICogMjtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgICAgICAgICAgICAgcE91dFtpICogbiArIGpdID0gTWF0aC5tYXgoKFBbaSAqIG4gKyBqXSArIFBbaiAqIG4gKyBpXSkgLyBOMiwgMWUtMTAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcE91dDtcbiAgICB9XG4gICAgLy8gaGVscGVyIGZ1bmN0aW9uXG4gICAgc2lnbih4KSB7IHJldHVybiB4ID4gMCA/IDEgOiB4IDwgMCA/IC0xIDogMDsgfVxuICAgIC8vIHRoaXMgZnVuY3Rpb24gdGFrZXMgYSBzZXQgb2YgaGlnaC1kaW1lbnNpb25hbCBwb2ludHNcbiAgICAvLyBhbmQgY3JlYXRlcyBtYXRyaXggUCBmcm9tIHRoZW0gdXNpbmcgZ2F1c3NpYW4ga2VybmVsXG4gICAgaW5pdERhdGFSYXcoWCkge1xuICAgICAgICBjb25zdCBOID0gWC5sZW5ndGg7XG4gICAgICAgIGNvbnN0IEQgPSBYWzBdLmxlbmd0aDtcbiAgICAgICAgdGhpcy5hc3NlcnQoTiA+IDAsICcgWCBpcyBlbXB0eT8gWW91IG11c3QgaGF2ZSBzb21lIGRhdGEhJyk7XG4gICAgICAgIHRoaXMuYXNzZXJ0KEQgPiAwLCAnIFhbMF0gaXMgZW1wdHk/IFdoZXJlIGlzIHRoZSBkYXRhPycpO1xuICAgICAgICBjb25zdCBkaXN0cyA9IHRoaXMueHRvZChYKTsgLy8gY29udmVydCBYIHRvIGRpc3RhbmNlcyB1c2luZyBnYXVzc2lhbiBrZXJuZWxcbiAgICAgICAgdGhpcy5QID0gdGhpcy5kMnAoZGlzdHMsIHRoaXMucGVycGxleGl0eSwgMWUtNCk7IC8vIGF0dGFjaCB0byBvYmplY3RcbiAgICAgICAgdGhpcy5OID0gTjsgLy8gYmFjayB1cCB0aGUgc2l6ZSBvZiB0aGUgZGF0YXNldFxuICAgICAgICB0aGlzLmluaXRTb2x1dGlvbigpOyAvLyByZWZyZXNoIHRoaXNcbiAgICB9XG4gICAgLy8gdGhpcyBmdW5jdGlvbiB0YWtlcyBhIGdpdmVuIGRpc3RhbmNlIG1hdHJpeCBhbmQgY3JlYXRlc1xuICAgIC8vIG1hdHJpeCBQIGZyb20gdGhlbS5cbiAgICAvLyBEIGlzIGFzc3VtZWQgdG8gYmUgcHJvdmlkZWQgYXMgYSBsaXN0IG9mIGxpc3RzLCBhbmQgc2hvdWxkIGJlIHN5bW1ldHJpY1xuICAgIGluaXREYXRhRGlzdChEKSB7XG4gICAgICAgIGNvbnN0IE4gPSBELmxlbmd0aDtcbiAgICAgICAgdGhpcy5hc3NlcnQoTiA+IDAsICcgWCBpcyBlbXB0eT8gWW91IG11c3QgaGF2ZSBzb21lIGRhdGEhJyk7XG4gICAgICAgIC8vIGNvbnZlcnQgRCB0byBhIChmYXN0KSB0eXBlZCBhcnJheSB2ZXJzaW9uXG4gICAgICAgIGNvbnN0IGRpc3RzID0gdGhpcy56ZXJvcyhOICogTik7IC8vIGFsbG9jYXRlIGNvbnRpZ3VvdXMgYXJyYXlcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IE47IGorKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBEW2ldW2pdO1xuICAgICAgICAgICAgICAgIGRpc3RzW2kgKiBOICsgal0gPSBkO1xuICAgICAgICAgICAgICAgIGRpc3RzW2ogKiBOICsgaV0gPSBkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuUCA9IHRoaXMuZDJwKGRpc3RzLCB0aGlzLnBlcnBsZXhpdHksIDFlLTQpO1xuICAgICAgICB0aGlzLk4gPSBOO1xuICAgICAgICB0aGlzLmluaXRTb2x1dGlvbigpOyAvLyByZWZyZXNoIHRoaXNcbiAgICB9XG4gICAgLy8gKHJlKWluaXRpYWxpemVzIHRoZSBzb2x1dGlvbiB0byByYW5kb21cbiAgICBpbml0U29sdXRpb24oKSB7XG4gICAgICAgIC8vIGdlbmVyYXRlIHJhbmRvbSBzb2x1dGlvbiB0byB0LVNORVxuICAgICAgICB0aGlzLlkgPSB0aGlzLnJhbmRuMmQodGhpcy5OLCB0aGlzLmRpbSk7IC8vIHRoZSBzb2x1dGlvblxuICAgICAgICB0aGlzLmdhaW5zID0gdGhpcy5yYW5kbjJkKHRoaXMuTiwgdGhpcy5kaW0sIDEuMCk7IC8vIHN0ZXAgZ2FpbnMgdG8gYWNjZWxlcmF0ZSBwcm9ncmVzcyBpbiB1bmNoYW5naW5nIGRpcmVjdGlvbnNcbiAgICAgICAgdGhpcy55c3RlcCA9IHRoaXMucmFuZG4yZCh0aGlzLk4sIHRoaXMuZGltLCAwLjApOyAvLyBtb21lbnR1bSBhY2N1bXVsYXRvclxuICAgICAgICB0aGlzLml0ZXIgPSAwO1xuICAgIH1cbiAgICAvLyByZXR1cm4gcG9pbnRlciB0byBjdXJyZW50IHNvbHV0aW9uXG4gICAgZ2V0U29sdXRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLlk7XG4gICAgfVxuICAgIC8vIHBlcmZvcm0gYSBzaW5nbGUgc3RlcCBvZiBvcHRpbWl6YXRpb24gdG8gaW1wcm92ZSB0aGUgZW1iZWRkaW5nXG4gICAgc3RlcCgpIHtcbiAgICAgICAgdGhpcy5pdGVyICs9IDE7XG4gICAgICAgIGNvbnN0IE4gPSB0aGlzLk47XG4gICAgICAgIGNvbnN0IGNnID0gdGhpcy5jb3N0R3JhZCh0aGlzLlkpOyAvLyBldmFsdWF0ZSBncmFkaWVudFxuICAgICAgICBjb25zdCBjb3N0ID0gY2cuY29zdDtcbiAgICAgICAgY29uc3QgZ3JhZCA9IGNnLmdyYWQ7XG4gICAgICAgIC8vIHBlcmZvcm0gZ3JhZGllbnQgc3RlcFxuICAgICAgICBjb25zdCB5bWVhbiA9IHRoaXMuemVyb3ModGhpcy5kaW0pO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgZCA9IDA7IGQgPCB0aGlzLmRpbTsgZCsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZ2lkID0gZ3JhZFtpXVtkXTtcbiAgICAgICAgICAgICAgICBjb25zdCBzaWQgPSB0aGlzLnlzdGVwW2ldW2RdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdhaW5pZCA9IHRoaXMuZ2FpbnNbaV1bZF07XG4gICAgICAgICAgICAgICAgLy8gY29tcHV0ZSBnYWluIHVwZGF0ZVxuICAgICAgICAgICAgICAgIGxldCBuZXdnYWluID0gdGhpcy5zaWduKGdpZCkgPT09IHRoaXMuc2lnbihzaWQpID8gZ2FpbmlkICogMC44IDogZ2FpbmlkICsgMC4yO1xuICAgICAgICAgICAgICAgIGlmIChuZXdnYWluIDwgMC4wMSkge1xuICAgICAgICAgICAgICAgICAgICBuZXdnYWluID0gMC4wMTtcbiAgICAgICAgICAgICAgICB9IC8vIGNsYW1wXG4gICAgICAgICAgICAgICAgdGhpcy5nYWluc1tpXVtkXSA9IG5ld2dhaW47IC8vIHN0b3JlIGZvciBuZXh0IHR1cm5cbiAgICAgICAgICAgICAgICAvLyBjb21wdXRlIG1vbWVudHVtIHN0ZXAgZGlyZWN0aW9uXG4gICAgICAgICAgICAgICAgY29uc3QgbW9tdmFsID0gdGhpcy5pdGVyIDwgMjUwID8gMC41IDogMC44O1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld3NpZCA9IG1vbXZhbCAqIHNpZCAtIHRoaXMuZXBzaWxvbiAqIG5ld2dhaW4gKiBncmFkW2ldW2RdO1xuICAgICAgICAgICAgICAgIHRoaXMueXN0ZXBbaV1bZF0gPSBuZXdzaWQ7IC8vIHJlbWVtYmVyIHRoZSBzdGVwIHdlIHRvb2tcbiAgICAgICAgICAgICAgICAvLyBzdGVwIVxuICAgICAgICAgICAgICAgIHRoaXMuWVtpXVtkXSArPSBuZXdzaWQ7XG4gICAgICAgICAgICAgICAgeW1lYW5bZF0gKz0gdGhpcy5ZW2ldW2RdOyAvLyBhY2N1bXVsYXRlIG1lYW4gc28gdGhhdCB3ZSBjYW4gY2VudGVyIGxhdGVyXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVwcm9qZWN0IFkgdG8gYmUgemVybyBtZWFuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBkID0gMDsgZCA8IHRoaXMuZGltOyBkKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLllbaV1bZF0gLT0geW1lYW5bZF0gLyBOO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vaWYodGhpcy5pdGVyJTEwMD09PTApIGNvbnNvbGUubG9nKCdpdGVyICcgKyB0aGlzLml0ZXIgKyAnLCBjb3N0OiAnICsgY29zdCk7XG4gICAgICAgIHJldHVybiBjb3N0OyAvLyByZXR1cm4gY3VycmVudCBjb3N0XG4gICAgfVxuICAgIC8vIGZvciBkZWJ1Z2dpbmc6IGdyYWRpZW50IGNoZWNrXG4gICAgZGVidWdHcmFkKCkge1xuICAgICAgICBjb25zdCBOID0gdGhpcy5OO1xuICAgICAgICBjb25zdCBjZyA9IHRoaXMuY29zdEdyYWQodGhpcy5ZKTsgLy8gZXZhbHVhdGUgZ3JhZGllbnRcbiAgICAgICAgY29uc3QgY29zdCA9IGNnLmNvc3Q7XG4gICAgICAgIGNvbnN0IGdyYWQgPSBjZy5ncmFkO1xuICAgICAgICBjb25zdCBlID0gMWUtNTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGQgPSAwOyBkIDwgdGhpcy5kaW07IGQrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHlvbGQgPSB0aGlzLllbaV1bZF07XG4gICAgICAgICAgICAgICAgdGhpcy5ZW2ldW2RdID0geW9sZCArIGU7XG4gICAgICAgICAgICAgICAgY29uc3QgY2cwID0gdGhpcy5jb3N0R3JhZCh0aGlzLlkpO1xuICAgICAgICAgICAgICAgIHRoaXMuWVtpXVtkXSA9IHlvbGQgLSBlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNnMSA9IHRoaXMuY29zdEdyYWQodGhpcy5ZKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhbmFseXRpYyA9IGdyYWRbaV1bZF07XG4gICAgICAgICAgICAgICAgY29uc3QgbnVtZXJpY2FsID0gKGNnMC5jb3N0IC0gY2cxLmNvc3QpIC8gKDIgKiBlKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhpICsgJywnICsgZCArICc6IGdyYWRjaGVjayBhbmFseXRpYzogJyArIGFuYWx5dGljICsgJyB2cy4gbnVtZXJpY2FsOiAnICsgbnVtZXJpY2FsKTtcbiAgICAgICAgICAgICAgICB0aGlzLllbaV1bZF0gPSB5b2xkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIHJldHVybiBjb3N0IGFuZCBncmFkaWVudCwgZ2l2ZW4gYW4gYXJyYW5nZW1lbnRcbiAgICBjb3N0R3JhZChZKSB7XG4gICAgICAgIGNvbnN0IE4gPSB0aGlzLk47XG4gICAgICAgIGNvbnN0IGRpbSA9IHRoaXMuZGltOyAvLyBkaW0gb2Ygb3V0cHV0IHNwYWNlXG4gICAgICAgIGNvbnN0IFAgPSB0aGlzLlA7XG4gICAgICAgIGNvbnN0IHBtdWwgPSB0aGlzLml0ZXIgPCAxMDAgPyA0IDogMTsgLy8gdHJpY2sgdGhhdCBoZWxwcyB3aXRoIGxvY2FsIG9wdGltYVxuICAgICAgICAvLyBjb21wdXRlIGN1cnJlbnQgUSBkaXN0cmlidXRpb24sIHVubm9ybWFsaXplZCBmaXJzdFxuICAgICAgICBjb25zdCBxdUFyciA9IHRoaXMuemVyb3MoTiAqIE4pO1xuICAgICAgICBsZXQgcXN1bSA9IDAuMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IE47IGorKykge1xuICAgICAgICAgICAgICAgIGxldCBkc3VtID0gMC4wO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGQgPSAwOyBkIDwgZGltOyBkKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGhlcmUgPSBZW2ldW2RdIC0gWVtqXVtkXTtcbiAgICAgICAgICAgICAgICAgICAgZHN1bSArPSBkaGVyZSAqIGRoZXJlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBxdSA9IDEuMCAvICgxLjAgKyBkc3VtKTsgLy8gU3R1ZGVudCB0LWRpc3RyaWJ1dGlvblxuICAgICAgICAgICAgICAgIHF1QXJyW2kgKiBOICsgal0gPSBxdTtcbiAgICAgICAgICAgICAgICBxdUFycltqICogTiArIGldID0gcXU7XG4gICAgICAgICAgICAgICAgcXN1bSArPSAyICogcXU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gbm9ybWFsaXplIFEgZGlzdHJpYnV0aW9uIHRvIHN1bSB0byAxXG4gICAgICAgIGNvbnN0IE5OID0gTiAqIE47XG4gICAgICAgIGNvbnN0IFEgPSB0aGlzLnplcm9zKE5OKTtcbiAgICAgICAgZm9yIChsZXQgcSA9IDA7IHEgPCBOTjsgcSsrKSB7XG4gICAgICAgICAgICBRW3FdID0gTWF0aC5tYXgocXVBcnJbcV0gLyBxc3VtLCAxZS0xMDApO1xuICAgICAgICB9XG4gICAgICAgIGxldCBjb3N0ID0gMC4wO1xuICAgICAgICBjb25zdCBncmFkID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBnc3VtID0gbmV3IEFycmF5KGRpbSk7IC8vIGluaXQgZ3JhZCBmb3IgcG9pbnQgaVxuICAgICAgICAgICAgZm9yIChsZXQgZCA9IDA7IGQgPCBkaW07IGQrKykge1xuICAgICAgICAgICAgICAgIGdzdW1bZF0gPSAwLjA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IE47IGorKykge1xuICAgICAgICAgICAgICAgIGNvc3QgKz0gLVBbaSAqIE4gKyBqXSAqIE1hdGgubG9nKFFbaSAqIE4gKyBqXSk7IC8vIGFjY3VtdWxhdGUgY29zdCAodGhlIG5vbi1jb25zdGFudCBwb3J0aW9uIGF0IGxlYXN0Li4uKVxuICAgICAgICAgICAgICAgIGNvbnN0IHByZW11bHQgPSA0ICogKHBtdWwgKiBQW2kgKiBOICsgal0gLSBRW2kgKiBOICsgal0pICogcXVBcnJbaSAqIE4gKyBqXTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBkID0gMDsgZCA8IGRpbTsgZCsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGdzdW1bZF0gKz0gcHJlbXVsdCAqIChZW2ldW2RdIC0gWVtqXVtkXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ3JhZC5wdXNoKGdzdW0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGNvc3QsIGdyYWQgfTtcbiAgICB9XG59XG5leHBvcnRzLlRTTkUgPSBUU05FO1xuIiwiY29uc3QgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0FueUFycmF5KG9iamVjdCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChvYmplY3QpLmVuZHNXaXRoKCdBcnJheV0nKTtcbn1cbiIsIi8qKlxuICogQ2FsY3VsYXRlIGN1cnJlbnQgZXJyb3JcbiAqIEBpZ25vcmVcbiAqIEBwYXJhbSB7e3g6QXJyYXk8bnVtYmVyPiwgeTpBcnJheTxudW1iZXI+fX0gZGF0YSAtIEFycmF5IG9mIHBvaW50cyB0byBmaXQgaW4gdGhlIGZvcm1hdCBbeDEsIHgyLCAuLi4gXSwgW3kxLCB5MiwgLi4uIF1cbiAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcGFyYW1ldGVycyAtIEFycmF5IG9mIGN1cnJlbnQgcGFyYW1ldGVyIHZhbHVlc1xuICogQHBhcmFtIHtmdW5jdGlvbn0gcGFyYW1ldGVyaXplZEZ1bmN0aW9uIC0gVGhlIHBhcmFtZXRlcnMgYW5kIHJldHVybnMgYSBmdW5jdGlvbiB3aXRoIHRoZSBpbmRlcGVuZGVudCB2YXJpYWJsZSBhcyBhIHBhcmFtZXRlclxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlcnJvckNhbGN1bGF0aW9uKFxuICBkYXRhLFxuICBwYXJhbWV0ZXJzLFxuICBwYXJhbWV0ZXJpemVkRnVuY3Rpb24sXG4pIHtcbiAgbGV0IGVycm9yID0gMDtcbiAgY29uc3QgZnVuYyA9IHBhcmFtZXRlcml6ZWRGdW5jdGlvbihwYXJhbWV0ZXJzKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEueC5sZW5ndGg7IGkrKykge1xuICAgIGVycm9yICs9IE1hdGguYWJzKGRhdGEueVtpXSAtIGZ1bmMoZGF0YS54W2ldKSk7XG4gIH1cblxuICByZXR1cm4gZXJyb3I7XG59XG4iLCIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kXG5jb25zdCB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG4vKipcbiAqIENoZWNrcyBpZiBhbiBvYmplY3QgaXMgYW4gaW5zdGFuY2Ugb2YgYW4gQXJyYXkgKGFycmF5IG9yIHR5cGVkIGFycmF5LCBleGNlcHQgdGhvc2UgdGhhdCBjb250YWluIGJpZ2ludCB2YWx1ZXMpLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIE9iamVjdCB0byBjaGVjay5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIG9iamVjdCBpcyBhbiBhcnJheSBvciBhIHR5cGVkIGFycmF5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBbnlBcnJheSh2YWx1ZSkge1xuICAgIGNvbnN0IHRhZyA9IHRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICAgIHJldHVybiB0YWcuZW5kc1dpdGgoJ0FycmF5XScpICYmICF0YWcuaW5jbHVkZXMoJ0JpZycpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZFxuY29uc3QgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuLyoqXG4gKiBDaGVja3MgaWYgYW4gb2JqZWN0IGlzIGFuIGluc3RhbmNlIG9mIGFuIEFycmF5IChhcnJheSBvciB0eXBlZCBhcnJheSwgZXhjZXB0IHRob3NlIHRoYXQgY29udGFpbiBiaWdpbnQgdmFsdWVzKS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBPYmplY3QgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBvYmplY3QgaXMgYW4gYXJyYXkgb3IgYSB0eXBlZCBhcnJheS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQW55QXJyYXkodmFsdWUpIHtcbiAgICBjb25zdCB0YWcgPSB0b1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgICByZXR1cm4gdGFnLmVuZHNXaXRoKCdBcnJheV0nKSAmJiAhdGFnLmluY2x1ZGVzKCdCaWcnKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvdW5ib3VuZC1tZXRob2RcbmNvbnN0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcbi8qKlxuICogQ2hlY2tzIGlmIGFuIG9iamVjdCBpcyBhbiBpbnN0YW5jZSBvZiBhbiBBcnJheSAoYXJyYXkgb3IgdHlwZWQgYXJyYXksIGV4Y2VwdCB0aG9zZSB0aGF0IGNvbnRhaW4gYmlnaW50IHZhbHVlcykuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gT2JqZWN0IHRvIGNoZWNrLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGFuIGFycmF5IG9yIGEgdHlwZWQgYXJyYXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0FueUFycmF5KHZhbHVlKSB7XG4gICAgY29uc3QgdGFnID0gdG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gICAgcmV0dXJuIHRhZy5lbmRzV2l0aCgnQXJyYXldJykgJiYgIXRhZy5pbmNsdWRlcygnQmlnJyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kXG5jb25zdCB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG4vKipcbiAqIENoZWNrcyBpZiBhbiBvYmplY3QgaXMgYW4gaW5zdGFuY2Ugb2YgYW4gQXJyYXkgKGFycmF5IG9yIHR5cGVkIGFycmF5LCBleGNlcHQgdGhvc2UgdGhhdCBjb250YWluIGJpZ2ludCB2YWx1ZXMpLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIE9iamVjdCB0byBjaGVjay5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIG9iamVjdCBpcyBhbiBhcnJheSBvciBhIHR5cGVkIGFycmF5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBbnlBcnJheSh2YWx1ZSkge1xuICAgIGNvbnN0IHRhZyA9IHRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICAgIHJldHVybiB0YWcuZW5kc1dpdGgoJ0FycmF5XScpICYmICF0YWcuaW5jbHVkZXMoJ0JpZycpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiaW1wb3J0IHsgaXNBbnlBcnJheSB9IGZyb20gJ2lzLWFueS1hcnJheSc7XG5pbXBvcnQgbWF4IGZyb20gJ21sLWFycmF5LW1heCc7XG5pbXBvcnQgbWluIGZyb20gJ21sLWFycmF5LW1pbic7XG5cbmZ1bmN0aW9uIHJlc2NhbGUoaW5wdXQpIHtcbiAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuXG4gIGlmICghaXNBbnlBcnJheShpbnB1dCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnB1dCBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gIH0gZWxzZSBpZiAoaW5wdXQubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW5wdXQgbXVzdCBub3QgYmUgZW1wdHknKTtcbiAgfVxuXG4gIHZhciBvdXRwdXQ7XG5cbiAgaWYgKG9wdGlvbnMub3V0cHV0ICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoIWlzQW55QXJyYXkob3B0aW9ucy5vdXRwdXQpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvdXRwdXQgb3B0aW9uIG11c3QgYmUgYW4gYXJyYXkgaWYgc3BlY2lmaWVkJyk7XG4gICAgfVxuXG4gICAgb3V0cHV0ID0gb3B0aW9ucy5vdXRwdXQ7XG4gIH0gZWxzZSB7XG4gICAgb3V0cHV0ID0gbmV3IEFycmF5KGlucHV0Lmxlbmd0aCk7XG4gIH1cblxuICB2YXIgY3VycmVudE1pbiA9IG1pbihpbnB1dCk7XG4gIHZhciBjdXJyZW50TWF4ID0gbWF4KGlucHV0KTtcblxuICBpZiAoY3VycmVudE1pbiA9PT0gY3VycmVudE1heCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdtaW5pbXVtIGFuZCBtYXhpbXVtIGlucHV0IHZhbHVlcyBhcmUgZXF1YWwuIENhbm5vdCByZXNjYWxlIGEgY29uc3RhbnQgYXJyYXknKTtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyRtaW4gPSBvcHRpb25zLm1pbixcbiAgICAgIG1pblZhbHVlID0gX29wdGlvbnMkbWluID09PSB2b2lkIDAgPyBvcHRpb25zLmF1dG9NaW5NYXggPyBjdXJyZW50TWluIDogMCA6IF9vcHRpb25zJG1pbixcbiAgICAgIF9vcHRpb25zJG1heCA9IG9wdGlvbnMubWF4LFxuICAgICAgbWF4VmFsdWUgPSBfb3B0aW9ucyRtYXggPT09IHZvaWQgMCA/IG9wdGlvbnMuYXV0b01pbk1heCA/IGN1cnJlbnRNYXggOiAxIDogX29wdGlvbnMkbWF4O1xuXG4gIGlmIChtaW5WYWx1ZSA+PSBtYXhWYWx1ZSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdtaW4gb3B0aW9uIG11c3QgYmUgc21hbGxlciB0aGFuIG1heCBvcHRpb24nKTtcbiAgfVxuXG4gIHZhciBmYWN0b3IgPSAobWF4VmFsdWUgLSBtaW5WYWx1ZSkgLyAoY3VycmVudE1heCAtIGN1cnJlbnRNaW4pO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICBvdXRwdXRbaV0gPSAoaW5wdXRbaV0gLSBjdXJyZW50TWluKSAqIGZhY3RvciArIG1pblZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIG91dHB1dDtcbn1cblxuZXhwb3J0IHsgcmVzY2FsZSBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQgeyBpc0FueUFycmF5IH0gZnJvbSAnaXMtYW55LWFycmF5JztcblxuZnVuY3Rpb24gbWluKGlucHV0KSB7XG4gIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcblxuICBpZiAoIWlzQW55QXJyYXkoaW5wdXQpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW5wdXQgbXVzdCBiZSBhbiBhcnJheScpO1xuICB9XG5cbiAgaWYgKGlucHV0Lmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2lucHV0IG11c3Qgbm90IGJlIGVtcHR5Jyk7XG4gIH1cblxuICB2YXIgX29wdGlvbnMkZnJvbUluZGV4ID0gb3B0aW9ucy5mcm9tSW5kZXgsXG4gICAgICBmcm9tSW5kZXggPSBfb3B0aW9ucyRmcm9tSW5kZXggPT09IHZvaWQgMCA/IDAgOiBfb3B0aW9ucyRmcm9tSW5kZXgsXG4gICAgICBfb3B0aW9ucyR0b0luZGV4ID0gb3B0aW9ucy50b0luZGV4LFxuICAgICAgdG9JbmRleCA9IF9vcHRpb25zJHRvSW5kZXggPT09IHZvaWQgMCA/IGlucHV0Lmxlbmd0aCA6IF9vcHRpb25zJHRvSW5kZXg7XG5cbiAgaWYgKGZyb21JbmRleCA8IDAgfHwgZnJvbUluZGV4ID49IGlucHV0Lmxlbmd0aCB8fCAhTnVtYmVyLmlzSW50ZWdlcihmcm9tSW5kZXgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdmcm9tSW5kZXggbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIgc21hbGxlciB0aGFuIGxlbmd0aCcpO1xuICB9XG5cbiAgaWYgKHRvSW5kZXggPD0gZnJvbUluZGV4IHx8IHRvSW5kZXggPiBpbnB1dC5sZW5ndGggfHwgIU51bWJlci5pc0ludGVnZXIodG9JbmRleCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3RvSW5kZXggbXVzdCBiZSBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBmcm9tSW5kZXggYW5kIGF0IG1vc3QgZXF1YWwgdG8gbGVuZ3RoJyk7XG4gIH1cblxuICB2YXIgbWluVmFsdWUgPSBpbnB1dFtmcm9tSW5kZXhdO1xuXG4gIGZvciAodmFyIGkgPSBmcm9tSW5kZXggKyAxOyBpIDwgdG9JbmRleDsgaSsrKSB7XG4gICAgaWYgKGlucHV0W2ldIDwgbWluVmFsdWUpIG1pblZhbHVlID0gaW5wdXRbaV07XG4gIH1cblxuICByZXR1cm4gbWluVmFsdWU7XG59XG5cbmV4cG9ydCB7IG1pbiBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQgeyBpc0FueUFycmF5IH0gZnJvbSAnaXMtYW55LWFycmF5JztcblxuZnVuY3Rpb24gbWF4KGlucHV0KSB7XG4gIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcblxuICBpZiAoIWlzQW55QXJyYXkoaW5wdXQpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW5wdXQgbXVzdCBiZSBhbiBhcnJheScpO1xuICB9XG5cbiAgaWYgKGlucHV0Lmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2lucHV0IG11c3Qgbm90IGJlIGVtcHR5Jyk7XG4gIH1cblxuICB2YXIgX29wdGlvbnMkZnJvbUluZGV4ID0gb3B0aW9ucy5mcm9tSW5kZXgsXG4gICAgICBmcm9tSW5kZXggPSBfb3B0aW9ucyRmcm9tSW5kZXggPT09IHZvaWQgMCA/IDAgOiBfb3B0aW9ucyRmcm9tSW5kZXgsXG4gICAgICBfb3B0aW9ucyR0b0luZGV4ID0gb3B0aW9ucy50b0luZGV4LFxuICAgICAgdG9JbmRleCA9IF9vcHRpb25zJHRvSW5kZXggPT09IHZvaWQgMCA/IGlucHV0Lmxlbmd0aCA6IF9vcHRpb25zJHRvSW5kZXg7XG5cbiAgaWYgKGZyb21JbmRleCA8IDAgfHwgZnJvbUluZGV4ID49IGlucHV0Lmxlbmd0aCB8fCAhTnVtYmVyLmlzSW50ZWdlcihmcm9tSW5kZXgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdmcm9tSW5kZXggbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIgc21hbGxlciB0aGFuIGxlbmd0aCcpO1xuICB9XG5cbiAgaWYgKHRvSW5kZXggPD0gZnJvbUluZGV4IHx8IHRvSW5kZXggPiBpbnB1dC5sZW5ndGggfHwgIU51bWJlci5pc0ludGVnZXIodG9JbmRleCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3RvSW5kZXggbXVzdCBiZSBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBmcm9tSW5kZXggYW5kIGF0IG1vc3QgZXF1YWwgdG8gbGVuZ3RoJyk7XG4gIH1cblxuICB2YXIgbWF4VmFsdWUgPSBpbnB1dFtmcm9tSW5kZXhdO1xuXG4gIGZvciAodmFyIGkgPSBmcm9tSW5kZXggKyAxOyBpIDwgdG9JbmRleDsgaSsrKSB7XG4gICAgaWYgKGlucHV0W2ldID4gbWF4VmFsdWUpIG1heFZhbHVlID0gaW5wdXRbaV07XG4gIH1cblxuICByZXR1cm4gbWF4VmFsdWU7XG59XG5cbmV4cG9ydCB7IG1heCBhcyBkZWZhdWx0IH07XG4iLCJjb25zdCBpbmRlbnQgPSAnICcucmVwZWF0KDIpO1xuY29uc3QgaW5kZW50RGF0YSA9ICcgJy5yZXBlYXQoNCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNwZWN0TWF0cml4KCkge1xuICByZXR1cm4gaW5zcGVjdE1hdHJpeFdpdGhPcHRpb25zKHRoaXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zcGVjdE1hdHJpeFdpdGhPcHRpb25zKG1hdHJpeCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBtYXhSb3dzID0gMTUsXG4gICAgbWF4Q29sdW1ucyA9IDEwLFxuICAgIG1heE51bVNpemUgPSA4LFxuICAgIHBhZE1pbnVzID0gJ2F1dG8nLFxuICB9ID0gb3B0aW9ucztcbiAgcmV0dXJuIGAke21hdHJpeC5jb25zdHJ1Y3Rvci5uYW1lfSB7XG4ke2luZGVudH1bXG4ke2luZGVudERhdGF9JHtpbnNwZWN0RGF0YShtYXRyaXgsIG1heFJvd3MsIG1heENvbHVtbnMsIG1heE51bVNpemUsIHBhZE1pbnVzKX1cbiR7aW5kZW50fV1cbiR7aW5kZW50fXJvd3M6ICR7bWF0cml4LnJvd3N9XG4ke2luZGVudH1jb2x1bW5zOiAke21hdHJpeC5jb2x1bW5zfVxufWA7XG59XG5cbmZ1bmN0aW9uIGluc3BlY3REYXRhKG1hdHJpeCwgbWF4Um93cywgbWF4Q29sdW1ucywgbWF4TnVtU2l6ZSwgcGFkTWludXMpIHtcbiAgY29uc3QgeyByb3dzLCBjb2x1bW5zIH0gPSBtYXRyaXg7XG4gIGNvbnN0IG1heEkgPSBNYXRoLm1pbihyb3dzLCBtYXhSb3dzKTtcbiAgY29uc3QgbWF4SiA9IE1hdGgubWluKGNvbHVtbnMsIG1heENvbHVtbnMpO1xuICBjb25zdCByZXN1bHQgPSBbXTtcblxuICBpZiAocGFkTWludXMgPT09ICdhdXRvJykge1xuICAgIHBhZE1pbnVzID0gZmFsc2U7XG4gICAgbG9vcDogZm9yIChsZXQgaSA9IDA7IGkgPCBtYXhJOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF4SjsgaisrKSB7XG4gICAgICAgIGlmIChtYXRyaXguZ2V0KGksIGopIDwgMCkge1xuICAgICAgICAgIHBhZE1pbnVzID0gdHJ1ZTtcbiAgICAgICAgICBicmVhayBsb29wO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXhJOyBpKyspIHtcbiAgICBsZXQgbGluZSA9IFtdO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF4SjsgaisrKSB7XG4gICAgICBsaW5lLnB1c2goZm9ybWF0TnVtYmVyKG1hdHJpeC5nZXQoaSwgaiksIG1heE51bVNpemUsIHBhZE1pbnVzKSk7XG4gICAgfVxuICAgIHJlc3VsdC5wdXNoKGAke2xpbmUuam9pbignICcpfWApO1xuICB9XG4gIGlmIChtYXhKICE9PSBjb2x1bW5zKSB7XG4gICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXSArPSBgIC4uLiAke2NvbHVtbnMgLSBtYXhDb2x1bW5zfSBtb3JlIGNvbHVtbnNgO1xuICB9XG4gIGlmIChtYXhJICE9PSByb3dzKSB7XG4gICAgcmVzdWx0LnB1c2goYC4uLiAke3Jvd3MgLSBtYXhSb3dzfSBtb3JlIHJvd3NgKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0LmpvaW4oYFxcbiR7aW5kZW50RGF0YX1gKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0TnVtYmVyKG51bSwgbWF4TnVtU2l6ZSwgcGFkTWludXMpIHtcbiAgcmV0dXJuIChcbiAgICBudW0gPj0gMCAmJiBwYWRNaW51c1xuICAgICAgPyBgICR7Zm9ybWF0TnVtYmVyMihudW0sIG1heE51bVNpemUgLSAxKX1gXG4gICAgICA6IGZvcm1hdE51bWJlcjIobnVtLCBtYXhOdW1TaXplKVxuICApLnBhZEVuZChtYXhOdW1TaXplKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0TnVtYmVyMihudW0sIGxlbikge1xuICAvLyBzbWFsbC5sZW5ndGggbnVtYmVycyBzaG91bGQgYmUgYXMgaXNcbiAgbGV0IHN0ciA9IG51bS50b1N0cmluZygpO1xuICBpZiAoc3RyLmxlbmd0aCA8PSBsZW4pIHJldHVybiBzdHI7XG5cbiAgLy8gKDcpJzAuMDAxMjMnIGlzIGJldHRlciB0aGVuICg3KScxLjIzZS0yJ1xuICAvLyAoOCknMC4wMDAxMjMnIGlzIHdvcnNlIHRoZW4gKDcpJzEuMjNlLTMnLFxuICBsZXQgZml4ID0gbnVtLnRvRml4ZWQobGVuKTtcbiAgaWYgKGZpeC5sZW5ndGggPiBsZW4pIHtcbiAgICBmaXggPSBudW0udG9GaXhlZChNYXRoLm1heCgwLCBsZW4gLSAoZml4Lmxlbmd0aCAtIGxlbikpKTtcbiAgfVxuICBpZiAoXG4gICAgZml4Lmxlbmd0aCA8PSBsZW4gJiZcbiAgICAhZml4LnN0YXJ0c1dpdGgoJzAuMDAwJykgJiZcbiAgICAhZml4LnN0YXJ0c1dpdGgoJy0wLjAwMCcpXG4gICkge1xuICAgIHJldHVybiBmaXg7XG4gIH1cblxuICAvLyB3ZWxsLCBpZiBpdCdzIHN0aWxsIHRvbyBsb25nIHRoZSB1c2VyIHNob3VsZCd2ZSB1c2VkIGxvbmdlciBudW1iZXJzXG4gIGxldCBleHAgPSBudW0udG9FeHBvbmVudGlhbChsZW4pO1xuICBpZiAoZXhwLmxlbmd0aCA+IGxlbikge1xuICAgIGV4cCA9IG51bS50b0V4cG9uZW50aWFsKE1hdGgubWF4KDAsIGxlbiAtIChleHAubGVuZ3RoIC0gbGVuKSkpO1xuICB9XG4gIHJldHVybiBleHAuc2xpY2UoMCk7XG59XG4iLCJpbXBvcnQgeyBpc0FueUFycmF5IH0gZnJvbSAnaXMtYW55LWFycmF5JztcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICogQ2hlY2sgdGhhdCBhIHJvdyBpbmRleCBpcyBub3Qgb3V0IG9mIGJvdW5kc1xuICogQHBhcmFtIHtNYXRyaXh9IG1hdHJpeFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvdXRlcl1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrUm93SW5kZXgobWF0cml4LCBpbmRleCwgb3V0ZXIpIHtcbiAgbGV0IG1heCA9IG91dGVyID8gbWF0cml4LnJvd3MgOiBtYXRyaXgucm93cyAtIDE7XG4gIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPiBtYXgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignUm93IGluZGV4IG91dCBvZiByYW5nZScpO1xuICB9XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqIENoZWNrIHRoYXQgYSBjb2x1bW4gaW5kZXggaXMgbm90IG91dCBvZiBib3VuZHNcbiAqIEBwYXJhbSB7TWF0cml4fSBtYXRyaXhcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHBhcmFtIHtib29sZWFufSBbb3V0ZXJdXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0NvbHVtbkluZGV4KG1hdHJpeCwgaW5kZXgsIG91dGVyKSB7XG4gIGxldCBtYXggPSBvdXRlciA/IG1hdHJpeC5jb2x1bW5zIDogbWF0cml4LmNvbHVtbnMgLSAxO1xuICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID4gbWF4KSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0NvbHVtbiBpbmRleCBvdXQgb2YgcmFuZ2UnKTtcbiAgfVxufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKiBDaGVjayB0aGF0IHRoZSBwcm92aWRlZCB2ZWN0b3IgaXMgYW4gYXJyYXkgd2l0aCB0aGUgcmlnaHQgbGVuZ3RoXG4gKiBAcGFyYW0ge01hdHJpeH0gbWF0cml4XG4gKiBAcGFyYW0ge0FycmF5fE1hdHJpeH0gdmVjdG9yXG4gKiBAcmV0dXJuIHtBcnJheX1cbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja1Jvd1ZlY3RvcihtYXRyaXgsIHZlY3Rvcikge1xuICBpZiAodmVjdG9yLnRvMURBcnJheSkge1xuICAgIHZlY3RvciA9IHZlY3Rvci50bzFEQXJyYXkoKTtcbiAgfVxuICBpZiAodmVjdG9yLmxlbmd0aCAhPT0gbWF0cml4LmNvbHVtbnMpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcbiAgICAgICd2ZWN0b3Igc2l6ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBudW1iZXIgb2YgY29sdW1ucycsXG4gICAgKTtcbiAgfVxuICByZXR1cm4gdmVjdG9yO1xufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKiBDaGVjayB0aGF0IHRoZSBwcm92aWRlZCB2ZWN0b3IgaXMgYW4gYXJyYXkgd2l0aCB0aGUgcmlnaHQgbGVuZ3RoXG4gKiBAcGFyYW0ge01hdHJpeH0gbWF0cml4XG4gKiBAcGFyYW0ge0FycmF5fE1hdHJpeH0gdmVjdG9yXG4gKiBAcmV0dXJuIHtBcnJheX1cbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0NvbHVtblZlY3RvcihtYXRyaXgsIHZlY3Rvcikge1xuICBpZiAodmVjdG9yLnRvMURBcnJheSkge1xuICAgIHZlY3RvciA9IHZlY3Rvci50bzFEQXJyYXkoKTtcbiAgfVxuICBpZiAodmVjdG9yLmxlbmd0aCAhPT0gbWF0cml4LnJvd3MpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcigndmVjdG9yIHNpemUgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUgbnVtYmVyIG9mIHJvd3MnKTtcbiAgfVxuICByZXR1cm4gdmVjdG9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tSb3dJbmRpY2VzKG1hdHJpeCwgcm93SW5kaWNlcykge1xuICBpZiAoIWlzQW55QXJyYXkocm93SW5kaWNlcykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdyb3cgaW5kaWNlcyBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd0luZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAocm93SW5kaWNlc1tpXSA8IDAgfHwgcm93SW5kaWNlc1tpXSA+PSBtYXRyaXgucm93cykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3JvdyBpbmRpY2VzIGFyZSBvdXQgb2YgcmFuZ2UnKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrQ29sdW1uSW5kaWNlcyhtYXRyaXgsIGNvbHVtbkluZGljZXMpIHtcbiAgaWYgKCFpc0FueUFycmF5KGNvbHVtbkluZGljZXMpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY29sdW1uIGluZGljZXMgbXVzdCBiZSBhbiBhcnJheScpO1xuICB9XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2x1bW5JbmRpY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGNvbHVtbkluZGljZXNbaV0gPCAwIHx8IGNvbHVtbkluZGljZXNbaV0gPj0gbWF0cml4LmNvbHVtbnMpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdjb2x1bW4gaW5kaWNlcyBhcmUgb3V0IG9mIHJhbmdlJyk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja1JhbmdlKG1hdHJpeCwgc3RhcnRSb3csIGVuZFJvdywgc3RhcnRDb2x1bW4sIGVuZENvbHVtbikge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPT0gNSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdleHBlY3RlZCA0IGFyZ3VtZW50cycpO1xuICB9XG4gIGNoZWNrTnVtYmVyKCdzdGFydFJvdycsIHN0YXJ0Um93KTtcbiAgY2hlY2tOdW1iZXIoJ2VuZFJvdycsIGVuZFJvdyk7XG4gIGNoZWNrTnVtYmVyKCdzdGFydENvbHVtbicsIHN0YXJ0Q29sdW1uKTtcbiAgY2hlY2tOdW1iZXIoJ2VuZENvbHVtbicsIGVuZENvbHVtbik7XG4gIGlmIChcbiAgICBzdGFydFJvdyA+IGVuZFJvdyB8fFxuICAgIHN0YXJ0Q29sdW1uID4gZW5kQ29sdW1uIHx8XG4gICAgc3RhcnRSb3cgPCAwIHx8XG4gICAgc3RhcnRSb3cgPj0gbWF0cml4LnJvd3MgfHxcbiAgICBlbmRSb3cgPCAwIHx8XG4gICAgZW5kUm93ID49IG1hdHJpeC5yb3dzIHx8XG4gICAgc3RhcnRDb2x1bW4gPCAwIHx8XG4gICAgc3RhcnRDb2x1bW4gPj0gbWF0cml4LmNvbHVtbnMgfHxcbiAgICBlbmRDb2x1bW4gPCAwIHx8XG4gICAgZW5kQ29sdW1uID49IG1hdHJpeC5jb2x1bW5zXG4gICkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdTdWJtYXRyaXggaW5kaWNlcyBhcmUgb3V0IG9mIHJhbmdlJyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5ld0FycmF5KGxlbmd0aCwgdmFsdWUgPSAwKSB7XG4gIGxldCBhcnJheSA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgYXJyYXkucHVzaCh2YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5mdW5jdGlvbiBjaGVja051bWJlcihuYW1lLCB2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYCR7bmFtZX0gbXVzdCBiZSBhIG51bWJlcmApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja05vbkVtcHR5KG1hdHJpeCkge1xuICBpZiAobWF0cml4LmlzRW1wdHkoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignRW1wdHkgbWF0cml4IGhhcyBubyBlbGVtZW50cyB0byBpbmRleCcpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBpc0FueUFycmF5IH0gZnJvbSAnaXMtYW55LWFycmF5JztcbmltcG9ydCByZXNjYWxlIGZyb20gJ21sLWFycmF5LXJlc2NhbGUnO1xuXG5pbXBvcnQgeyBpbnNwZWN0TWF0cml4LCBpbnNwZWN0TWF0cml4V2l0aE9wdGlvbnMgfSBmcm9tICcuL2luc3BlY3QnO1xuaW1wb3J0IHsgaW5zdGFsbE1hdGhPcGVyYXRpb25zIH0gZnJvbSAnLi9tYXRoT3BlcmF0aW9ucyc7XG5pbXBvcnQge1xuICBzdW1CeVJvdyxcbiAgc3VtQnlDb2x1bW4sXG4gIHN1bUFsbCxcbiAgcHJvZHVjdEJ5Um93LFxuICBwcm9kdWN0QnlDb2x1bW4sXG4gIHByb2R1Y3RBbGwsXG4gIHZhcmlhbmNlQnlSb3csXG4gIHZhcmlhbmNlQnlDb2x1bW4sXG4gIHZhcmlhbmNlQWxsLFxuICBjZW50ZXJCeVJvdyxcbiAgY2VudGVyQnlDb2x1bW4sXG4gIGNlbnRlckFsbCxcbiAgc2NhbGVCeVJvdyxcbiAgc2NhbGVCeUNvbHVtbixcbiAgc2NhbGVBbGwsXG4gIGdldFNjYWxlQnlSb3csXG4gIGdldFNjYWxlQnlDb2x1bW4sXG4gIGdldFNjYWxlQWxsLFxufSBmcm9tICcuL3N0YXQnO1xuaW1wb3J0IHtcbiAgY2hlY2tSb3dWZWN0b3IsXG4gIGNoZWNrUm93SW5kZXgsXG4gIGNoZWNrQ29sdW1uSW5kZXgsXG4gIGNoZWNrQ29sdW1uVmVjdG9yLFxuICBjaGVja1JhbmdlLFxuICBjaGVja05vbkVtcHR5LFxuICBjaGVja1Jvd0luZGljZXMsXG4gIGNoZWNrQ29sdW1uSW5kaWNlcyxcbn0gZnJvbSAnLi91dGlsJztcblxuZXhwb3J0IGNsYXNzIEFic3RyYWN0TWF0cml4IHtcbiAgc3RhdGljIGZyb20xREFycmF5KG5ld1Jvd3MsIG5ld0NvbHVtbnMsIG5ld0RhdGEpIHtcbiAgICBsZXQgbGVuZ3RoID0gbmV3Um93cyAqIG5ld0NvbHVtbnM7XG4gICAgaWYgKGxlbmd0aCAhPT0gbmV3RGF0YS5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdkYXRhIGxlbmd0aCBkb2VzIG5vdCBtYXRjaCBnaXZlbiBkaW1lbnNpb25zJyk7XG4gICAgfVxuICAgIGxldCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG5ld1Jvd3MsIG5ld0NvbHVtbnMpO1xuICAgIGZvciAobGV0IHJvdyA9IDA7IHJvdyA8IG5ld1Jvd3M7IHJvdysrKSB7XG4gICAgICBmb3IgKGxldCBjb2x1bW4gPSAwOyBjb2x1bW4gPCBuZXdDb2x1bW5zOyBjb2x1bW4rKykge1xuICAgICAgICBuZXdNYXRyaXguc2V0KHJvdywgY29sdW1uLCBuZXdEYXRhW3JvdyAqIG5ld0NvbHVtbnMgKyBjb2x1bW5dKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld01hdHJpeDtcbiAgfVxuXG4gIHN0YXRpYyByb3dWZWN0b3IobmV3RGF0YSkge1xuICAgIGxldCB2ZWN0b3IgPSBuZXcgTWF0cml4KDEsIG5ld0RhdGEubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5ld0RhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZlY3Rvci5zZXQoMCwgaSwgbmV3RGF0YVtpXSk7XG4gICAgfVxuICAgIHJldHVybiB2ZWN0b3I7XG4gIH1cblxuICBzdGF0aWMgY29sdW1uVmVjdG9yKG5ld0RhdGEpIHtcbiAgICBsZXQgdmVjdG9yID0gbmV3IE1hdHJpeChuZXdEYXRhLmxlbmd0aCwgMSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZXdEYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2ZWN0b3Iuc2V0KGksIDAsIG5ld0RhdGFbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gdmVjdG9yO1xuICB9XG5cbiAgc3RhdGljIHplcm9zKHJvd3MsIGNvbHVtbnMpIHtcbiAgICByZXR1cm4gbmV3IE1hdHJpeChyb3dzLCBjb2x1bW5zKTtcbiAgfVxuXG4gIHN0YXRpYyBvbmVzKHJvd3MsIGNvbHVtbnMpIHtcbiAgICByZXR1cm4gbmV3IE1hdHJpeChyb3dzLCBjb2x1bW5zKS5maWxsKDEpO1xuICB9XG5cbiAgc3RhdGljIHJhbmQocm93cywgY29sdW1ucywgb3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgIH1cbiAgICBjb25zdCB7IHJhbmRvbSA9IE1hdGgucmFuZG9tIH0gPSBvcHRpb25zO1xuICAgIGxldCBtYXRyaXggPSBuZXcgTWF0cml4KHJvd3MsIGNvbHVtbnMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvbHVtbnM7IGorKykge1xuICAgICAgICBtYXRyaXguc2V0KGksIGosIHJhbmRvbSgpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1hdHJpeDtcbiAgfVxuXG4gIHN0YXRpYyByYW5kSW50KHJvd3MsIGNvbHVtbnMsIG9wdGlvbnMgPSB7fSkge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgICB9XG4gICAgY29uc3QgeyBtaW4gPSAwLCBtYXggPSAxMDAwLCByYW5kb20gPSBNYXRoLnJhbmRvbSB9ID0gb3B0aW9ucztcbiAgICBpZiAoIU51bWJlci5pc0ludGVnZXIobWluKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignbWluIG11c3QgYmUgYW4gaW50ZWdlcicpO1xuICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihtYXgpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdtYXggbXVzdCBiZSBhbiBpbnRlZ2VyJyk7XG4gICAgaWYgKG1pbiA+PSBtYXgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdtaW4gbXVzdCBiZSBzbWFsbGVyIHRoYW4gbWF4Jyk7XG4gICAgbGV0IGludGVydmFsID0gbWF4IC0gbWluO1xuICAgIGxldCBtYXRyaXggPSBuZXcgTWF0cml4KHJvd3MsIGNvbHVtbnMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvbHVtbnM7IGorKykge1xuICAgICAgICBsZXQgdmFsdWUgPSBtaW4gKyBNYXRoLnJvdW5kKHJhbmRvbSgpICogaW50ZXJ2YWwpO1xuICAgICAgICBtYXRyaXguc2V0KGksIGosIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1hdHJpeDtcbiAgfVxuXG4gIHN0YXRpYyBleWUocm93cywgY29sdW1ucywgdmFsdWUpIHtcbiAgICBpZiAoY29sdW1ucyA9PT0gdW5kZWZpbmVkKSBjb2x1bW5zID0gcm93cztcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkgdmFsdWUgPSAxO1xuICAgIGxldCBtaW4gPSBNYXRoLm1pbihyb3dzLCBjb2x1bW5zKTtcbiAgICBsZXQgbWF0cml4ID0gdGhpcy56ZXJvcyhyb3dzLCBjb2x1bW5zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1pbjsgaSsrKSB7XG4gICAgICBtYXRyaXguc2V0KGksIGksIHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIG1hdHJpeDtcbiAgfVxuXG4gIHN0YXRpYyBkaWFnKGRhdGEsIHJvd3MsIGNvbHVtbnMpIHtcbiAgICBsZXQgbCA9IGRhdGEubGVuZ3RoO1xuICAgIGlmIChyb3dzID09PSB1bmRlZmluZWQpIHJvd3MgPSBsO1xuICAgIGlmIChjb2x1bW5zID09PSB1bmRlZmluZWQpIGNvbHVtbnMgPSByb3dzO1xuICAgIGxldCBtaW4gPSBNYXRoLm1pbihsLCByb3dzLCBjb2x1bW5zKTtcbiAgICBsZXQgbWF0cml4ID0gdGhpcy56ZXJvcyhyb3dzLCBjb2x1bW5zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1pbjsgaSsrKSB7XG4gICAgICBtYXRyaXguc2V0KGksIGksIGRhdGFbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xuICB9XG5cbiAgc3RhdGljIG1pbihtYXRyaXgxLCBtYXRyaXgyKSB7XG4gICAgbWF0cml4MSA9IHRoaXMuY2hlY2tNYXRyaXgobWF0cml4MSk7XG4gICAgbWF0cml4MiA9IHRoaXMuY2hlY2tNYXRyaXgobWF0cml4Mik7XG4gICAgbGV0IHJvd3MgPSBtYXRyaXgxLnJvd3M7XG4gICAgbGV0IGNvbHVtbnMgPSBtYXRyaXgxLmNvbHVtbnM7XG4gICAgbGV0IHJlc3VsdCA9IG5ldyBNYXRyaXgocm93cywgY29sdW1ucyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sdW1uczsgaisrKSB7XG4gICAgICAgIHJlc3VsdC5zZXQoaSwgaiwgTWF0aC5taW4obWF0cml4MS5nZXQoaSwgaiksIG1hdHJpeDIuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBzdGF0aWMgbWF4KG1hdHJpeDEsIG1hdHJpeDIpIHtcbiAgICBtYXRyaXgxID0gdGhpcy5jaGVja01hdHJpeChtYXRyaXgxKTtcbiAgICBtYXRyaXgyID0gdGhpcy5jaGVja01hdHJpeChtYXRyaXgyKTtcbiAgICBsZXQgcm93cyA9IG1hdHJpeDEucm93cztcbiAgICBsZXQgY29sdW1ucyA9IG1hdHJpeDEuY29sdW1ucztcbiAgICBsZXQgcmVzdWx0ID0gbmV3IHRoaXMocm93cywgY29sdW1ucyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sdW1uczsgaisrKSB7XG4gICAgICAgIHJlc3VsdC5zZXQoaSwgaiwgTWF0aC5tYXgobWF0cml4MS5nZXQoaSwgaiksIG1hdHJpeDIuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBzdGF0aWMgY2hlY2tNYXRyaXgodmFsdWUpIHtcbiAgICByZXR1cm4gQWJzdHJhY3RNYXRyaXguaXNNYXRyaXgodmFsdWUpID8gdmFsdWUgOiBuZXcgTWF0cml4KHZhbHVlKTtcbiAgfVxuXG4gIHN0YXRpYyBpc01hdHJpeCh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHZhbHVlLmtsYXNzID09PSAnTWF0cml4JztcbiAgfVxuXG4gIGdldCBzaXplKCkge1xuICAgIHJldHVybiB0aGlzLnJvd3MgKiB0aGlzLmNvbHVtbnM7XG4gIH1cblxuICBhcHBseShjYWxsYmFjaykge1xuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2NhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIGNhbGxiYWNrLmNhbGwodGhpcywgaSwgaik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdG8xREFycmF5KCkge1xuICAgIGxldCBhcnJheSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgYXJyYXkucHVzaCh0aGlzLmdldChpLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIHRvMkRBcnJheSgpIHtcbiAgICBsZXQgY29weSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGNvcHkucHVzaChbXSk7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIGNvcHlbaV0ucHVzaCh0aGlzLmdldChpLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb3B5O1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiB0aGlzLnRvMkRBcnJheSgpO1xuICB9XG5cbiAgaXNSb3dWZWN0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMucm93cyA9PT0gMTtcbiAgfVxuXG4gIGlzQ29sdW1uVmVjdG9yKCkge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbnMgPT09IDE7XG4gIH1cblxuICBpc1ZlY3RvcigpIHtcbiAgICByZXR1cm4gdGhpcy5yb3dzID09PSAxIHx8IHRoaXMuY29sdW1ucyA9PT0gMTtcbiAgfVxuXG4gIGlzU3F1YXJlKCkge1xuICAgIHJldHVybiB0aGlzLnJvd3MgPT09IHRoaXMuY29sdW1ucztcbiAgfVxuXG4gIGlzRW1wdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMucm93cyA9PT0gMCB8fCB0aGlzLmNvbHVtbnMgPT09IDA7XG4gIH1cblxuICBpc1N5bW1ldHJpYygpIHtcbiAgICBpZiAodGhpcy5pc1NxdWFyZSgpKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDw9IGk7IGorKykge1xuICAgICAgICAgIGlmICh0aGlzLmdldChpLCBqKSAhPT0gdGhpcy5nZXQoaiwgaSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpc0VjaGVsb25Gb3JtKCkge1xuICAgIGxldCBpID0gMDtcbiAgICBsZXQgaiA9IDA7XG4gICAgbGV0IHByZXZpb3VzQ29sdW1uID0gLTE7XG4gICAgbGV0IGlzRWNoZWxvbkZvcm0gPSB0cnVlO1xuICAgIGxldCBjaGVja2VkID0gZmFsc2U7XG4gICAgd2hpbGUgKGkgPCB0aGlzLnJvd3MgJiYgaXNFY2hlbG9uRm9ybSkge1xuICAgICAgaiA9IDA7XG4gICAgICBjaGVja2VkID0gZmFsc2U7XG4gICAgICB3aGlsZSAoaiA8IHRoaXMuY29sdW1ucyAmJiBjaGVja2VkID09PSBmYWxzZSkge1xuICAgICAgICBpZiAodGhpcy5nZXQoaSwgaikgPT09IDApIHtcbiAgICAgICAgICBqKys7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5nZXQoaSwgaikgPT09IDEgJiYgaiA+IHByZXZpb3VzQ29sdW1uKSB7XG4gICAgICAgICAgY2hlY2tlZCA9IHRydWU7XG4gICAgICAgICAgcHJldmlvdXNDb2x1bW4gPSBqO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlzRWNoZWxvbkZvcm0gPSBmYWxzZTtcbiAgICAgICAgICBjaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaSsrO1xuICAgIH1cbiAgICByZXR1cm4gaXNFY2hlbG9uRm9ybTtcbiAgfVxuXG4gIGlzUmVkdWNlZEVjaGVsb25Gb3JtKCkge1xuICAgIGxldCBpID0gMDtcbiAgICBsZXQgaiA9IDA7XG4gICAgbGV0IHByZXZpb3VzQ29sdW1uID0gLTE7XG4gICAgbGV0IGlzUmVkdWNlZEVjaGVsb25Gb3JtID0gdHJ1ZTtcbiAgICBsZXQgY2hlY2tlZCA9IGZhbHNlO1xuICAgIHdoaWxlIChpIDwgdGhpcy5yb3dzICYmIGlzUmVkdWNlZEVjaGVsb25Gb3JtKSB7XG4gICAgICBqID0gMDtcbiAgICAgIGNoZWNrZWQgPSBmYWxzZTtcbiAgICAgIHdoaWxlIChqIDwgdGhpcy5jb2x1bW5zICYmIGNoZWNrZWQgPT09IGZhbHNlKSB7XG4gICAgICAgIGlmICh0aGlzLmdldChpLCBqKSA9PT0gMCkge1xuICAgICAgICAgIGorKztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmdldChpLCBqKSA9PT0gMSAmJiBqID4gcHJldmlvdXNDb2x1bW4pIHtcbiAgICAgICAgICBjaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgICBwcmV2aW91c0NvbHVtbiA9IGo7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXNSZWR1Y2VkRWNoZWxvbkZvcm0gPSBmYWxzZTtcbiAgICAgICAgICBjaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZm9yIChsZXQgayA9IGogKyAxOyBrIDwgdGhpcy5yb3dzOyBrKyspIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0KGksIGspICE9PSAwKSB7XG4gICAgICAgICAgaXNSZWR1Y2VkRWNoZWxvbkZvcm0gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaSsrO1xuICAgIH1cbiAgICByZXR1cm4gaXNSZWR1Y2VkRWNoZWxvbkZvcm07XG4gIH1cblxuICBlY2hlbG9uRm9ybSgpIHtcbiAgICBsZXQgcmVzdWx0ID0gdGhpcy5jbG9uZSgpO1xuICAgIGxldCBoID0gMDtcbiAgICBsZXQgayA9IDA7XG4gICAgd2hpbGUgKGggPCByZXN1bHQucm93cyAmJiBrIDwgcmVzdWx0LmNvbHVtbnMpIHtcbiAgICAgIGxldCBpTWF4ID0gaDtcbiAgICAgIGZvciAobGV0IGkgPSBoOyBpIDwgcmVzdWx0LnJvd3M7IGkrKykge1xuICAgICAgICBpZiAocmVzdWx0LmdldChpLCBrKSA+IHJlc3VsdC5nZXQoaU1heCwgaykpIHtcbiAgICAgICAgICBpTWF4ID0gaTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdC5nZXQoaU1heCwgaykgPT09IDApIHtcbiAgICAgICAgaysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0LnN3YXBSb3dzKGgsIGlNYXgpO1xuICAgICAgICBsZXQgdG1wID0gcmVzdWx0LmdldChoLCBrKTtcbiAgICAgICAgZm9yIChsZXQgaiA9IGs7IGogPCByZXN1bHQuY29sdW1uczsgaisrKSB7XG4gICAgICAgICAgcmVzdWx0LnNldChoLCBqLCByZXN1bHQuZ2V0KGgsIGopIC8gdG1wKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gaCArIDE7IGkgPCByZXN1bHQucm93czsgaSsrKSB7XG4gICAgICAgICAgbGV0IGZhY3RvciA9IHJlc3VsdC5nZXQoaSwgaykgLyByZXN1bHQuZ2V0KGgsIGspO1xuICAgICAgICAgIHJlc3VsdC5zZXQoaSwgaywgMCk7XG4gICAgICAgICAgZm9yIChsZXQgaiA9IGsgKyAxOyBqIDwgcmVzdWx0LmNvbHVtbnM7IGorKykge1xuICAgICAgICAgICAgcmVzdWx0LnNldChpLCBqLCByZXN1bHQuZ2V0KGksIGopIC0gcmVzdWx0LmdldChoLCBqKSAqIGZhY3Rvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGgrKztcbiAgICAgICAgaysrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcmVkdWNlZEVjaGVsb25Gb3JtKCkge1xuICAgIGxldCByZXN1bHQgPSB0aGlzLmVjaGVsb25Gb3JtKCk7XG4gICAgbGV0IG0gPSByZXN1bHQuY29sdW1ucztcbiAgICBsZXQgbiA9IHJlc3VsdC5yb3dzO1xuICAgIGxldCBoID0gbiAtIDE7XG4gICAgd2hpbGUgKGggPj0gMCkge1xuICAgICAgaWYgKHJlc3VsdC5tYXhSb3coaCkgPT09IDApIHtcbiAgICAgICAgaC0tO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IHAgPSAwO1xuICAgICAgICBsZXQgcGl2b3QgPSBmYWxzZTtcbiAgICAgICAgd2hpbGUgKHAgPCBuICYmIHBpdm90ID09PSBmYWxzZSkge1xuICAgICAgICAgIGlmIChyZXN1bHQuZ2V0KGgsIHApID09PSAxKSB7XG4gICAgICAgICAgICBwaXZvdCA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHArKztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoOyBpKyspIHtcbiAgICAgICAgICBsZXQgZmFjdG9yID0gcmVzdWx0LmdldChpLCBwKTtcbiAgICAgICAgICBmb3IgKGxldCBqID0gcDsgaiA8IG07IGorKykge1xuICAgICAgICAgICAgbGV0IHRtcCA9IHJlc3VsdC5nZXQoaSwgaikgLSBmYWN0b3IgKiByZXN1bHQuZ2V0KGgsIGopO1xuICAgICAgICAgICAgcmVzdWx0LnNldChpLCBqLCB0bXApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBoLS07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBzZXQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzZXQgbWV0aG9kIGlzIHVuaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIGdldCgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldCBtZXRob2QgaXMgdW5pbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgcmVwZWF0KG9wdGlvbnMgPSB7fSkge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgICB9XG4gICAgY29uc3QgeyByb3dzID0gMSwgY29sdW1ucyA9IDEgfSA9IG9wdGlvbnM7XG4gICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKHJvd3MpIHx8IHJvd3MgPD0gMCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncm93cyBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlcicpO1xuICAgIH1cbiAgICBpZiAoIU51bWJlci5pc0ludGVnZXIoY29sdW1ucykgfHwgY29sdW1ucyA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdjb2x1bW5zIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyJyk7XG4gICAgfVxuICAgIGxldCBtYXRyaXggPSBuZXcgTWF0cml4KHRoaXMucm93cyAqIHJvd3MsIHRoaXMuY29sdW1ucyAqIGNvbHVtbnMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvbHVtbnM7IGorKykge1xuICAgICAgICBtYXRyaXguc2V0U3ViTWF0cml4KHRoaXMsIHRoaXMucm93cyAqIGksIHRoaXMuY29sdW1ucyAqIGopO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xuICB9XG5cbiAgZmlsbCh2YWx1ZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG5lZygpIHtcbiAgICByZXR1cm4gdGhpcy5tdWxTKC0xKTtcbiAgfVxuXG4gIGdldFJvdyhpbmRleCkge1xuICAgIGNoZWNrUm93SW5kZXgodGhpcywgaW5kZXgpO1xuICAgIGxldCByb3cgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29sdW1uczsgaSsrKSB7XG4gICAgICByb3cucHVzaCh0aGlzLmdldChpbmRleCwgaSkpO1xuICAgIH1cbiAgICByZXR1cm4gcm93O1xuICB9XG5cbiAgZ2V0Um93VmVjdG9yKGluZGV4KSB7XG4gICAgcmV0dXJuIE1hdHJpeC5yb3dWZWN0b3IodGhpcy5nZXRSb3coaW5kZXgpKTtcbiAgfVxuXG4gIHNldFJvdyhpbmRleCwgYXJyYXkpIHtcbiAgICBjaGVja1Jvd0luZGV4KHRoaXMsIGluZGV4KTtcbiAgICBhcnJheSA9IGNoZWNrUm93VmVjdG9yKHRoaXMsIGFycmF5KTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29sdW1uczsgaSsrKSB7XG4gICAgICB0aGlzLnNldChpbmRleCwgaSwgYXJyYXlbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN3YXBSb3dzKHJvdzEsIHJvdzIpIHtcbiAgICBjaGVja1Jvd0luZGV4KHRoaXMsIHJvdzEpO1xuICAgIGNoZWNrUm93SW5kZXgodGhpcywgcm93Mik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbHVtbnM7IGkrKykge1xuICAgICAgbGV0IHRlbXAgPSB0aGlzLmdldChyb3cxLCBpKTtcbiAgICAgIHRoaXMuc2V0KHJvdzEsIGksIHRoaXMuZ2V0KHJvdzIsIGkpKTtcbiAgICAgIHRoaXMuc2V0KHJvdzIsIGksIHRlbXApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdldENvbHVtbihpbmRleCkge1xuICAgIGNoZWNrQ29sdW1uSW5kZXgodGhpcywgaW5kZXgpO1xuICAgIGxldCBjb2x1bW4gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBjb2x1bW4ucHVzaCh0aGlzLmdldChpLCBpbmRleCkpO1xuICAgIH1cbiAgICByZXR1cm4gY29sdW1uO1xuICB9XG5cbiAgZ2V0Q29sdW1uVmVjdG9yKGluZGV4KSB7XG4gICAgcmV0dXJuIE1hdHJpeC5jb2x1bW5WZWN0b3IodGhpcy5nZXRDb2x1bW4oaW5kZXgpKTtcbiAgfVxuXG4gIHNldENvbHVtbihpbmRleCwgYXJyYXkpIHtcbiAgICBjaGVja0NvbHVtbkluZGV4KHRoaXMsIGluZGV4KTtcbiAgICBhcnJheSA9IGNoZWNrQ29sdW1uVmVjdG9yKHRoaXMsIGFycmF5KTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICB0aGlzLnNldChpLCBpbmRleCwgYXJyYXlbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN3YXBDb2x1bW5zKGNvbHVtbjEsIGNvbHVtbjIpIHtcbiAgICBjaGVja0NvbHVtbkluZGV4KHRoaXMsIGNvbHVtbjEpO1xuICAgIGNoZWNrQ29sdW1uSW5kZXgodGhpcywgY29sdW1uMik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgbGV0IHRlbXAgPSB0aGlzLmdldChpLCBjb2x1bW4xKTtcbiAgICAgIHRoaXMuc2V0KGksIGNvbHVtbjEsIHRoaXMuZ2V0KGksIGNvbHVtbjIpKTtcbiAgICAgIHRoaXMuc2V0KGksIGNvbHVtbjIsIHRlbXApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFkZFJvd1ZlY3Rvcih2ZWN0b3IpIHtcbiAgICB2ZWN0b3IgPSBjaGVja1Jvd1ZlY3Rvcih0aGlzLCB2ZWN0b3IpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgKyB2ZWN0b3Jbal0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN1YlJvd1ZlY3Rvcih2ZWN0b3IpIHtcbiAgICB2ZWN0b3IgPSBjaGVja1Jvd1ZlY3Rvcih0aGlzLCB2ZWN0b3IpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgLSB2ZWN0b3Jbal0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG11bFJvd1ZlY3Rvcih2ZWN0b3IpIHtcbiAgICB2ZWN0b3IgPSBjaGVja1Jvd1ZlY3Rvcih0aGlzLCB2ZWN0b3IpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgKiB2ZWN0b3Jbal0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGRpdlJvd1ZlY3Rvcih2ZWN0b3IpIHtcbiAgICB2ZWN0b3IgPSBjaGVja1Jvd1ZlY3Rvcih0aGlzLCB2ZWN0b3IpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgLyB2ZWN0b3Jbal0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFkZENvbHVtblZlY3Rvcih2ZWN0b3IpIHtcbiAgICB2ZWN0b3IgPSBjaGVja0NvbHVtblZlY3Rvcih0aGlzLCB2ZWN0b3IpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgKyB2ZWN0b3JbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN1YkNvbHVtblZlY3Rvcih2ZWN0b3IpIHtcbiAgICB2ZWN0b3IgPSBjaGVja0NvbHVtblZlY3Rvcih0aGlzLCB2ZWN0b3IpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgLSB2ZWN0b3JbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG11bENvbHVtblZlY3Rvcih2ZWN0b3IpIHtcbiAgICB2ZWN0b3IgPSBjaGVja0NvbHVtblZlY3Rvcih0aGlzLCB2ZWN0b3IpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgKiB2ZWN0b3JbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGRpdkNvbHVtblZlY3Rvcih2ZWN0b3IpIHtcbiAgICB2ZWN0b3IgPSBjaGVja0NvbHVtblZlY3Rvcih0aGlzLCB2ZWN0b3IpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgLyB2ZWN0b3JbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG11bFJvdyhpbmRleCwgdmFsdWUpIHtcbiAgICBjaGVja1Jvd0luZGV4KHRoaXMsIGluZGV4KTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29sdW1uczsgaSsrKSB7XG4gICAgICB0aGlzLnNldChpbmRleCwgaSwgdGhpcy5nZXQoaW5kZXgsIGkpICogdmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG11bENvbHVtbihpbmRleCwgdmFsdWUpIHtcbiAgICBjaGVja0NvbHVtbkluZGV4KHRoaXMsIGluZGV4KTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICB0aGlzLnNldChpLCBpbmRleCwgdGhpcy5nZXQoaSwgaW5kZXgpICogdmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG1heChieSkge1xuICAgIGlmICh0aGlzLmlzRW1wdHkoKSkge1xuICAgICAgcmV0dXJuIE5hTjtcbiAgICB9XG4gICAgc3dpdGNoIChieSkge1xuICAgICAgY2FzZSAncm93Jzoge1xuICAgICAgICBjb25zdCBtYXggPSBuZXcgQXJyYXkodGhpcy5yb3dzKS5maWxsKE51bWJlci5ORUdBVElWRV9JTkZJTklUWSk7XG4gICAgICAgIGZvciAobGV0IHJvdyA9IDA7IHJvdyA8IHRoaXMucm93czsgcm93KyspIHtcbiAgICAgICAgICBmb3IgKGxldCBjb2x1bW4gPSAwOyBjb2x1bW4gPCB0aGlzLmNvbHVtbnM7IGNvbHVtbisrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5nZXQocm93LCBjb2x1bW4pID4gbWF4W3Jvd10pIHtcbiAgICAgICAgICAgICAgbWF4W3Jvd10gPSB0aGlzLmdldChyb3csIGNvbHVtbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXg7XG4gICAgICB9XG4gICAgICBjYXNlICdjb2x1bW4nOiB7XG4gICAgICAgIGNvbnN0IG1heCA9IG5ldyBBcnJheSh0aGlzLmNvbHVtbnMpLmZpbGwoTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKTtcbiAgICAgICAgZm9yIChsZXQgcm93ID0gMDsgcm93IDwgdGhpcy5yb3dzOyByb3crKykge1xuICAgICAgICAgIGZvciAobGV0IGNvbHVtbiA9IDA7IGNvbHVtbiA8IHRoaXMuY29sdW1uczsgY29sdW1uKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdldChyb3csIGNvbHVtbikgPiBtYXhbY29sdW1uXSkge1xuICAgICAgICAgICAgICBtYXhbY29sdW1uXSA9IHRoaXMuZ2V0KHJvdywgY29sdW1uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1heDtcbiAgICAgIH1cbiAgICAgIGNhc2UgdW5kZWZpbmVkOiB7XG4gICAgICAgIGxldCBtYXggPSB0aGlzLmdldCgwLCAwKTtcbiAgICAgICAgZm9yIChsZXQgcm93ID0gMDsgcm93IDwgdGhpcy5yb3dzOyByb3crKykge1xuICAgICAgICAgIGZvciAobGV0IGNvbHVtbiA9IDA7IGNvbHVtbiA8IHRoaXMuY29sdW1uczsgY29sdW1uKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdldChyb3csIGNvbHVtbikgPiBtYXgpIHtcbiAgICAgICAgICAgICAgbWF4ID0gdGhpcy5nZXQocm93LCBjb2x1bW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF4O1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG9wdGlvbjogJHtieX1gKTtcbiAgICB9XG4gIH1cblxuICBtYXhJbmRleCgpIHtcbiAgICBjaGVja05vbkVtcHR5KHRoaXMpO1xuICAgIGxldCB2ID0gdGhpcy5nZXQoMCwgMCk7XG4gICAgbGV0IGlkeCA9IFswLCAwXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIGlmICh0aGlzLmdldChpLCBqKSA+IHYpIHtcbiAgICAgICAgICB2ID0gdGhpcy5nZXQoaSwgaik7XG4gICAgICAgICAgaWR4WzBdID0gaTtcbiAgICAgICAgICBpZHhbMV0gPSBqO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpZHg7XG4gIH1cblxuICBtaW4oYnkpIHtcbiAgICBpZiAodGhpcy5pc0VtcHR5KCkpIHtcbiAgICAgIHJldHVybiBOYU47XG4gICAgfVxuXG4gICAgc3dpdGNoIChieSkge1xuICAgICAgY2FzZSAncm93Jzoge1xuICAgICAgICBjb25zdCBtaW4gPSBuZXcgQXJyYXkodGhpcy5yb3dzKS5maWxsKE51bWJlci5QT1NJVElWRV9JTkZJTklUWSk7XG4gICAgICAgIGZvciAobGV0IHJvdyA9IDA7IHJvdyA8IHRoaXMucm93czsgcm93KyspIHtcbiAgICAgICAgICBmb3IgKGxldCBjb2x1bW4gPSAwOyBjb2x1bW4gPCB0aGlzLmNvbHVtbnM7IGNvbHVtbisrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5nZXQocm93LCBjb2x1bW4pIDwgbWluW3Jvd10pIHtcbiAgICAgICAgICAgICAgbWluW3Jvd10gPSB0aGlzLmdldChyb3csIGNvbHVtbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtaW47XG4gICAgICB9XG4gICAgICBjYXNlICdjb2x1bW4nOiB7XG4gICAgICAgIGNvbnN0IG1pbiA9IG5ldyBBcnJheSh0aGlzLmNvbHVtbnMpLmZpbGwoTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKTtcbiAgICAgICAgZm9yIChsZXQgcm93ID0gMDsgcm93IDwgdGhpcy5yb3dzOyByb3crKykge1xuICAgICAgICAgIGZvciAobGV0IGNvbHVtbiA9IDA7IGNvbHVtbiA8IHRoaXMuY29sdW1uczsgY29sdW1uKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdldChyb3csIGNvbHVtbikgPCBtaW5bY29sdW1uXSkge1xuICAgICAgICAgICAgICBtaW5bY29sdW1uXSA9IHRoaXMuZ2V0KHJvdywgY29sdW1uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1pbjtcbiAgICAgIH1cbiAgICAgIGNhc2UgdW5kZWZpbmVkOiB7XG4gICAgICAgIGxldCBtaW4gPSB0aGlzLmdldCgwLCAwKTtcbiAgICAgICAgZm9yIChsZXQgcm93ID0gMDsgcm93IDwgdGhpcy5yb3dzOyByb3crKykge1xuICAgICAgICAgIGZvciAobGV0IGNvbHVtbiA9IDA7IGNvbHVtbiA8IHRoaXMuY29sdW1uczsgY29sdW1uKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdldChyb3csIGNvbHVtbikgPCBtaW4pIHtcbiAgICAgICAgICAgICAgbWluID0gdGhpcy5nZXQocm93LCBjb2x1bW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWluO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG9wdGlvbjogJHtieX1gKTtcbiAgICB9XG4gIH1cblxuICBtaW5JbmRleCgpIHtcbiAgICBjaGVja05vbkVtcHR5KHRoaXMpO1xuICAgIGxldCB2ID0gdGhpcy5nZXQoMCwgMCk7XG4gICAgbGV0IGlkeCA9IFswLCAwXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIGlmICh0aGlzLmdldChpLCBqKSA8IHYpIHtcbiAgICAgICAgICB2ID0gdGhpcy5nZXQoaSwgaik7XG4gICAgICAgICAgaWR4WzBdID0gaTtcbiAgICAgICAgICBpZHhbMV0gPSBqO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpZHg7XG4gIH1cblxuICBtYXhSb3cocm93KSB7XG4gICAgY2hlY2tSb3dJbmRleCh0aGlzLCByb3cpO1xuICAgIGlmICh0aGlzLmlzRW1wdHkoKSkge1xuICAgICAgcmV0dXJuIE5hTjtcbiAgICB9XG4gICAgbGV0IHYgPSB0aGlzLmdldChyb3csIDApO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgdGhpcy5jb2x1bW5zOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmdldChyb3csIGkpID4gdikge1xuICAgICAgICB2ID0gdGhpcy5nZXQocm93LCBpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHY7XG4gIH1cblxuICBtYXhSb3dJbmRleChyb3cpIHtcbiAgICBjaGVja1Jvd0luZGV4KHRoaXMsIHJvdyk7XG4gICAgY2hlY2tOb25FbXB0eSh0aGlzKTtcbiAgICBsZXQgdiA9IHRoaXMuZ2V0KHJvdywgMCk7XG4gICAgbGV0IGlkeCA9IFtyb3csIDBdO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgdGhpcy5jb2x1bW5zOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmdldChyb3csIGkpID4gdikge1xuICAgICAgICB2ID0gdGhpcy5nZXQocm93LCBpKTtcbiAgICAgICAgaWR4WzFdID0gaTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlkeDtcbiAgfVxuXG4gIG1pblJvdyhyb3cpIHtcbiAgICBjaGVja1Jvd0luZGV4KHRoaXMsIHJvdyk7XG4gICAgaWYgKHRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm4gTmFOO1xuICAgIH1cbiAgICBsZXQgdiA9IHRoaXMuZ2V0KHJvdywgMCk7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLmNvbHVtbnM7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZ2V0KHJvdywgaSkgPCB2KSB7XG4gICAgICAgIHYgPSB0aGlzLmdldChyb3csIGkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdjtcbiAgfVxuXG4gIG1pblJvd0luZGV4KHJvdykge1xuICAgIGNoZWNrUm93SW5kZXgodGhpcywgcm93KTtcbiAgICBjaGVja05vbkVtcHR5KHRoaXMpO1xuICAgIGxldCB2ID0gdGhpcy5nZXQocm93LCAwKTtcbiAgICBsZXQgaWR4ID0gW3JvdywgMF07XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLmNvbHVtbnM7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZ2V0KHJvdywgaSkgPCB2KSB7XG4gICAgICAgIHYgPSB0aGlzLmdldChyb3csIGkpO1xuICAgICAgICBpZHhbMV0gPSBpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaWR4O1xuICB9XG5cbiAgbWF4Q29sdW1uKGNvbHVtbikge1xuICAgIGNoZWNrQ29sdW1uSW5kZXgodGhpcywgY29sdW1uKTtcbiAgICBpZiAodGhpcy5pc0VtcHR5KCkpIHtcbiAgICAgIHJldHVybiBOYU47XG4gICAgfVxuICAgIGxldCB2ID0gdGhpcy5nZXQoMCwgY29sdW1uKTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5nZXQoaSwgY29sdW1uKSA+IHYpIHtcbiAgICAgICAgdiA9IHRoaXMuZ2V0KGksIGNvbHVtbik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2O1xuICB9XG5cbiAgbWF4Q29sdW1uSW5kZXgoY29sdW1uKSB7XG4gICAgY2hlY2tDb2x1bW5JbmRleCh0aGlzLCBjb2x1bW4pO1xuICAgIGNoZWNrTm9uRW1wdHkodGhpcyk7XG4gICAgbGV0IHYgPSB0aGlzLmdldCgwLCBjb2x1bW4pO1xuICAgIGxldCBpZHggPSBbMCwgY29sdW1uXTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5nZXQoaSwgY29sdW1uKSA+IHYpIHtcbiAgICAgICAgdiA9IHRoaXMuZ2V0KGksIGNvbHVtbik7XG4gICAgICAgIGlkeFswXSA9IGk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpZHg7XG4gIH1cblxuICBtaW5Db2x1bW4oY29sdW1uKSB7XG4gICAgY2hlY2tDb2x1bW5JbmRleCh0aGlzLCBjb2x1bW4pO1xuICAgIGlmICh0aGlzLmlzRW1wdHkoKSkge1xuICAgICAgcmV0dXJuIE5hTjtcbiAgICB9XG4gICAgbGV0IHYgPSB0aGlzLmdldCgwLCBjb2x1bW4pO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmdldChpLCBjb2x1bW4pIDwgdikge1xuICAgICAgICB2ID0gdGhpcy5nZXQoaSwgY29sdW1uKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHY7XG4gIH1cblxuICBtaW5Db2x1bW5JbmRleChjb2x1bW4pIHtcbiAgICBjaGVja0NvbHVtbkluZGV4KHRoaXMsIGNvbHVtbik7XG4gICAgY2hlY2tOb25FbXB0eSh0aGlzKTtcbiAgICBsZXQgdiA9IHRoaXMuZ2V0KDAsIGNvbHVtbik7XG4gICAgbGV0IGlkeCA9IFswLCBjb2x1bW5dO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmdldChpLCBjb2x1bW4pIDwgdikge1xuICAgICAgICB2ID0gdGhpcy5nZXQoaSwgY29sdW1uKTtcbiAgICAgICAgaWR4WzBdID0gaTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlkeDtcbiAgfVxuXG4gIGRpYWcoKSB7XG4gICAgbGV0IG1pbiA9IE1hdGgubWluKHRoaXMucm93cywgdGhpcy5jb2x1bW5zKTtcbiAgICBsZXQgZGlhZyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWluOyBpKyspIHtcbiAgICAgIGRpYWcucHVzaCh0aGlzLmdldChpLCBpKSk7XG4gICAgfVxuICAgIHJldHVybiBkaWFnO1xuICB9XG5cbiAgbm9ybSh0eXBlID0gJ2Zyb2Jlbml1cycpIHtcbiAgICBsZXQgcmVzdWx0ID0gMDtcbiAgICBpZiAodHlwZSA9PT0gJ21heCcpIHtcbiAgICAgIHJldHVybiB0aGlzLm1heCgpO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2Zyb2Jlbml1cycpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCArIHRoaXMuZ2V0KGksIGopICogdGhpcy5nZXQoaSwgaik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBNYXRoLnNxcnQocmVzdWx0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYHVua25vd24gbm9ybSB0eXBlOiAke3R5cGV9YCk7XG4gICAgfVxuICB9XG5cbiAgY3VtdWxhdGl2ZVN1bSgpIHtcbiAgICBsZXQgc3VtID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHN1bSArPSB0aGlzLmdldChpLCBqKTtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgc3VtKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBkb3QodmVjdG9yMikge1xuICAgIGlmIChBYnN0cmFjdE1hdHJpeC5pc01hdHJpeCh2ZWN0b3IyKSkgdmVjdG9yMiA9IHZlY3RvcjIudG8xREFycmF5KCk7XG4gICAgbGV0IHZlY3RvcjEgPSB0aGlzLnRvMURBcnJheSgpO1xuICAgIGlmICh2ZWN0b3IxLmxlbmd0aCAhPT0gdmVjdG9yMi5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd2ZWN0b3JzIGRvIG5vdCBoYXZlIHRoZSBzYW1lIHNpemUnKTtcbiAgICB9XG4gICAgbGV0IGRvdCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2ZWN0b3IxLmxlbmd0aDsgaSsrKSB7XG4gICAgICBkb3QgKz0gdmVjdG9yMVtpXSAqIHZlY3RvcjJbaV07XG4gICAgfVxuICAgIHJldHVybiBkb3Q7XG4gIH1cblxuICBtbXVsKG90aGVyKSB7XG4gICAgb3RoZXIgPSBNYXRyaXguY2hlY2tNYXRyaXgob3RoZXIpO1xuXG4gICAgbGV0IG0gPSB0aGlzLnJvd3M7XG4gICAgbGV0IG4gPSB0aGlzLmNvbHVtbnM7XG4gICAgbGV0IHAgPSBvdGhlci5jb2x1bW5zO1xuXG4gICAgbGV0IHJlc3VsdCA9IG5ldyBNYXRyaXgobSwgcCk7XG5cbiAgICBsZXQgQmNvbGogPSBuZXcgRmxvYXQ2NEFycmF5KG4pO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgcDsgaisrKSB7XG4gICAgICBmb3IgKGxldCBrID0gMDsgayA8IG47IGsrKykge1xuICAgICAgICBCY29saltrXSA9IG90aGVyLmdldChrLCBqKTtcbiAgICAgIH1cblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgbGV0IHMgPSAwO1xuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IG47IGsrKykge1xuICAgICAgICAgIHMgKz0gdGhpcy5nZXQoaSwgaykgKiBCY29saltrXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc3VsdC5zZXQoaSwgaiwgcyk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBzdHJhc3NlbjJ4MihvdGhlcikge1xuICAgIG90aGVyID0gTWF0cml4LmNoZWNrTWF0cml4KG90aGVyKTtcbiAgICBsZXQgcmVzdWx0ID0gbmV3IE1hdHJpeCgyLCAyKTtcbiAgICBjb25zdCBhMTEgPSB0aGlzLmdldCgwLCAwKTtcbiAgICBjb25zdCBiMTEgPSBvdGhlci5nZXQoMCwgMCk7XG4gICAgY29uc3QgYTEyID0gdGhpcy5nZXQoMCwgMSk7XG4gICAgY29uc3QgYjEyID0gb3RoZXIuZ2V0KDAsIDEpO1xuICAgIGNvbnN0IGEyMSA9IHRoaXMuZ2V0KDEsIDApO1xuICAgIGNvbnN0IGIyMSA9IG90aGVyLmdldCgxLCAwKTtcbiAgICBjb25zdCBhMjIgPSB0aGlzLmdldCgxLCAxKTtcbiAgICBjb25zdCBiMjIgPSBvdGhlci5nZXQoMSwgMSk7XG5cbiAgICAvLyBDb21wdXRlIGludGVybWVkaWF0ZSB2YWx1ZXMuXG4gICAgY29uc3QgbTEgPSAoYTExICsgYTIyKSAqIChiMTEgKyBiMjIpO1xuICAgIGNvbnN0IG0yID0gKGEyMSArIGEyMikgKiBiMTE7XG4gICAgY29uc3QgbTMgPSBhMTEgKiAoYjEyIC0gYjIyKTtcbiAgICBjb25zdCBtNCA9IGEyMiAqIChiMjEgLSBiMTEpO1xuICAgIGNvbnN0IG01ID0gKGExMSArIGExMikgKiBiMjI7XG4gICAgY29uc3QgbTYgPSAoYTIxIC0gYTExKSAqIChiMTEgKyBiMTIpO1xuICAgIGNvbnN0IG03ID0gKGExMiAtIGEyMikgKiAoYjIxICsgYjIyKTtcblxuICAgIC8vIENvbWJpbmUgaW50ZXJtZWRpYXRlIHZhbHVlcyBpbnRvIHRoZSBvdXRwdXQuXG4gICAgY29uc3QgYzAwID0gbTEgKyBtNCAtIG01ICsgbTc7XG4gICAgY29uc3QgYzAxID0gbTMgKyBtNTtcbiAgICBjb25zdCBjMTAgPSBtMiArIG00O1xuICAgIGNvbnN0IGMxMSA9IG0xIC0gbTIgKyBtMyArIG02O1xuXG4gICAgcmVzdWx0LnNldCgwLCAwLCBjMDApO1xuICAgIHJlc3VsdC5zZXQoMCwgMSwgYzAxKTtcbiAgICByZXN1bHQuc2V0KDEsIDAsIGMxMCk7XG4gICAgcmVzdWx0LnNldCgxLCAxLCBjMTEpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBzdHJhc3NlbjN4MyhvdGhlcikge1xuICAgIG90aGVyID0gTWF0cml4LmNoZWNrTWF0cml4KG90aGVyKTtcbiAgICBsZXQgcmVzdWx0ID0gbmV3IE1hdHJpeCgzLCAzKTtcblxuICAgIGNvbnN0IGEwMCA9IHRoaXMuZ2V0KDAsIDApO1xuICAgIGNvbnN0IGEwMSA9IHRoaXMuZ2V0KDAsIDEpO1xuICAgIGNvbnN0IGEwMiA9IHRoaXMuZ2V0KDAsIDIpO1xuICAgIGNvbnN0IGExMCA9IHRoaXMuZ2V0KDEsIDApO1xuICAgIGNvbnN0IGExMSA9IHRoaXMuZ2V0KDEsIDEpO1xuICAgIGNvbnN0IGExMiA9IHRoaXMuZ2V0KDEsIDIpO1xuICAgIGNvbnN0IGEyMCA9IHRoaXMuZ2V0KDIsIDApO1xuICAgIGNvbnN0IGEyMSA9IHRoaXMuZ2V0KDIsIDEpO1xuICAgIGNvbnN0IGEyMiA9IHRoaXMuZ2V0KDIsIDIpO1xuXG4gICAgY29uc3QgYjAwID0gb3RoZXIuZ2V0KDAsIDApO1xuICAgIGNvbnN0IGIwMSA9IG90aGVyLmdldCgwLCAxKTtcbiAgICBjb25zdCBiMDIgPSBvdGhlci5nZXQoMCwgMik7XG4gICAgY29uc3QgYjEwID0gb3RoZXIuZ2V0KDEsIDApO1xuICAgIGNvbnN0IGIxMSA9IG90aGVyLmdldCgxLCAxKTtcbiAgICBjb25zdCBiMTIgPSBvdGhlci5nZXQoMSwgMik7XG4gICAgY29uc3QgYjIwID0gb3RoZXIuZ2V0KDIsIDApO1xuICAgIGNvbnN0IGIyMSA9IG90aGVyLmdldCgyLCAxKTtcbiAgICBjb25zdCBiMjIgPSBvdGhlci5nZXQoMiwgMik7XG5cbiAgICBjb25zdCBtMSA9IChhMDAgKyBhMDEgKyBhMDIgLSBhMTAgLSBhMTEgLSBhMjEgLSBhMjIpICogYjExO1xuICAgIGNvbnN0IG0yID0gKGEwMCAtIGExMCkgKiAoLWIwMSArIGIxMSk7XG4gICAgY29uc3QgbTMgPSBhMTEgKiAoLWIwMCArIGIwMSArIGIxMCAtIGIxMSAtIGIxMiAtIGIyMCArIGIyMik7XG4gICAgY29uc3QgbTQgPSAoLWEwMCArIGExMCArIGExMSkgKiAoYjAwIC0gYjAxICsgYjExKTtcbiAgICBjb25zdCBtNSA9IChhMTAgKyBhMTEpICogKC1iMDAgKyBiMDEpO1xuICAgIGNvbnN0IG02ID0gYTAwICogYjAwO1xuICAgIGNvbnN0IG03ID0gKC1hMDAgKyBhMjAgKyBhMjEpICogKGIwMCAtIGIwMiArIGIxMik7XG4gICAgY29uc3QgbTggPSAoLWEwMCArIGEyMCkgKiAoYjAyIC0gYjEyKTtcbiAgICBjb25zdCBtOSA9IChhMjAgKyBhMjEpICogKC1iMDAgKyBiMDIpO1xuICAgIGNvbnN0IG0xMCA9IChhMDAgKyBhMDEgKyBhMDIgLSBhMTEgLSBhMTIgLSBhMjAgLSBhMjEpICogYjEyO1xuICAgIGNvbnN0IG0xMSA9IGEyMSAqICgtYjAwICsgYjAyICsgYjEwIC0gYjExIC0gYjEyIC0gYjIwICsgYjIxKTtcbiAgICBjb25zdCBtMTIgPSAoLWEwMiArIGEyMSArIGEyMikgKiAoYjExICsgYjIwIC0gYjIxKTtcbiAgICBjb25zdCBtMTMgPSAoYTAyIC0gYTIyKSAqIChiMTEgLSBiMjEpO1xuICAgIGNvbnN0IG0xNCA9IGEwMiAqIGIyMDtcbiAgICBjb25zdCBtMTUgPSAoYTIxICsgYTIyKSAqICgtYjIwICsgYjIxKTtcbiAgICBjb25zdCBtMTYgPSAoLWEwMiArIGExMSArIGExMikgKiAoYjEyICsgYjIwIC0gYjIyKTtcbiAgICBjb25zdCBtMTcgPSAoYTAyIC0gYTEyKSAqIChiMTIgLSBiMjIpO1xuICAgIGNvbnN0IG0xOCA9IChhMTEgKyBhMTIpICogKC1iMjAgKyBiMjIpO1xuICAgIGNvbnN0IG0xOSA9IGEwMSAqIGIxMDtcbiAgICBjb25zdCBtMjAgPSBhMTIgKiBiMjE7XG4gICAgY29uc3QgbTIxID0gYTEwICogYjAyO1xuICAgIGNvbnN0IG0yMiA9IGEyMCAqIGIwMTtcbiAgICBjb25zdCBtMjMgPSBhMjIgKiBiMjI7XG5cbiAgICBjb25zdCBjMDAgPSBtNiArIG0xNCArIG0xOTtcbiAgICBjb25zdCBjMDEgPSBtMSArIG00ICsgbTUgKyBtNiArIG0xMiArIG0xNCArIG0xNTtcbiAgICBjb25zdCBjMDIgPSBtNiArIG03ICsgbTkgKyBtMTAgKyBtMTQgKyBtMTYgKyBtMTg7XG4gICAgY29uc3QgYzEwID0gbTIgKyBtMyArIG00ICsgbTYgKyBtMTQgKyBtMTYgKyBtMTc7XG4gICAgY29uc3QgYzExID0gbTIgKyBtNCArIG01ICsgbTYgKyBtMjA7XG4gICAgY29uc3QgYzEyID0gbTE0ICsgbTE2ICsgbTE3ICsgbTE4ICsgbTIxO1xuICAgIGNvbnN0IGMyMCA9IG02ICsgbTcgKyBtOCArIG0xMSArIG0xMiArIG0xMyArIG0xNDtcbiAgICBjb25zdCBjMjEgPSBtMTIgKyBtMTMgKyBtMTQgKyBtMTUgKyBtMjI7XG4gICAgY29uc3QgYzIyID0gbTYgKyBtNyArIG04ICsgbTkgKyBtMjM7XG5cbiAgICByZXN1bHQuc2V0KDAsIDAsIGMwMCk7XG4gICAgcmVzdWx0LnNldCgwLCAxLCBjMDEpO1xuICAgIHJlc3VsdC5zZXQoMCwgMiwgYzAyKTtcbiAgICByZXN1bHQuc2V0KDEsIDAsIGMxMCk7XG4gICAgcmVzdWx0LnNldCgxLCAxLCBjMTEpO1xuICAgIHJlc3VsdC5zZXQoMSwgMiwgYzEyKTtcbiAgICByZXN1bHQuc2V0KDIsIDAsIGMyMCk7XG4gICAgcmVzdWx0LnNldCgyLCAxLCBjMjEpO1xuICAgIHJlc3VsdC5zZXQoMiwgMiwgYzIyKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgbW11bFN0cmFzc2VuKHkpIHtcbiAgICB5ID0gTWF0cml4LmNoZWNrTWF0cml4KHkpO1xuICAgIGxldCB4ID0gdGhpcy5jbG9uZSgpO1xuICAgIGxldCByMSA9IHgucm93cztcbiAgICBsZXQgYzEgPSB4LmNvbHVtbnM7XG4gICAgbGV0IHIyID0geS5yb3dzO1xuICAgIGxldCBjMiA9IHkuY29sdW1ucztcbiAgICBpZiAoYzEgIT09IHIyKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgTXVsdGlwbHlpbmcgJHtyMX0geCAke2MxfSBhbmQgJHtyMn0geCAke2MyfSBtYXRyaXg6IGRpbWVuc2lvbnMgZG8gbm90IG1hdGNoLmAsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFB1dCBhIG1hdHJpeCBpbnRvIHRoZSB0b3AgbGVmdCBvZiBhIG1hdHJpeCBvZiB6ZXJvcy5cbiAgICAvLyBgcm93c2AgYW5kIGBjb2xzYCBhcmUgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIG91dHB1dCBtYXRyaXguXG4gICAgZnVuY3Rpb24gZW1iZWQobWF0LCByb3dzLCBjb2xzKSB7XG4gICAgICBsZXQgciA9IG1hdC5yb3dzO1xuICAgICAgbGV0IGMgPSBtYXQuY29sdW1ucztcbiAgICAgIGlmIChyID09PSByb3dzICYmIGMgPT09IGNvbHMpIHtcbiAgICAgICAgcmV0dXJuIG1hdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCByZXN1bHRhdCA9IEFic3RyYWN0TWF0cml4Lnplcm9zKHJvd3MsIGNvbHMpO1xuICAgICAgICByZXN1bHRhdCA9IHJlc3VsdGF0LnNldFN1Yk1hdHJpeChtYXQsIDAsIDApO1xuICAgICAgICByZXR1cm4gcmVzdWx0YXQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTWFrZSBzdXJlIGJvdGggbWF0cmljZXMgYXJlIHRoZSBzYW1lIHNpemUuXG4gICAgLy8gVGhpcyBpcyBleGNsdXNpdmVseSBmb3Igc2ltcGxpY2l0eTpcbiAgICAvLyB0aGlzIGFsZ29yaXRobSBjYW4gYmUgaW1wbGVtZW50ZWQgd2l0aCBtYXRyaWNlcyBvZiBkaWZmZXJlbnQgc2l6ZXMuXG5cbiAgICBsZXQgciA9IE1hdGgubWF4KHIxLCByMik7XG4gICAgbGV0IGMgPSBNYXRoLm1heChjMSwgYzIpO1xuICAgIHggPSBlbWJlZCh4LCByLCBjKTtcbiAgICB5ID0gZW1iZWQoeSwgciwgYyk7XG5cbiAgICAvLyBPdXIgcmVjdXJzaXZlIG11bHRpcGxpY2F0aW9uIGZ1bmN0aW9uLlxuICAgIGZ1bmN0aW9uIGJsb2NrTXVsdChhLCBiLCByb3dzLCBjb2xzKSB7XG4gICAgICAvLyBGb3Igc21hbGwgbWF0cmljZXMsIHJlc29ydCB0byBuYWl2ZSBtdWx0aXBsaWNhdGlvbi5cbiAgICAgIGlmIChyb3dzIDw9IDUxMiB8fCBjb2xzIDw9IDUxMikge1xuICAgICAgICByZXR1cm4gYS5tbXVsKGIpOyAvLyBhIGlzIGVxdWl2YWxlbnQgdG8gdGhpc1xuICAgICAgfVxuXG4gICAgICAvLyBBcHBseSBkeW5hbWljIHBhZGRpbmcuXG4gICAgICBpZiAocm93cyAlIDIgPT09IDEgJiYgY29scyAlIDIgPT09IDEpIHtcbiAgICAgICAgYSA9IGVtYmVkKGEsIHJvd3MgKyAxLCBjb2xzICsgMSk7XG4gICAgICAgIGIgPSBlbWJlZChiLCByb3dzICsgMSwgY29scyArIDEpO1xuICAgICAgfSBlbHNlIGlmIChyb3dzICUgMiA9PT0gMSkge1xuICAgICAgICBhID0gZW1iZWQoYSwgcm93cyArIDEsIGNvbHMpO1xuICAgICAgICBiID0gZW1iZWQoYiwgcm93cyArIDEsIGNvbHMpO1xuICAgICAgfSBlbHNlIGlmIChjb2xzICUgMiA9PT0gMSkge1xuICAgICAgICBhID0gZW1iZWQoYSwgcm93cywgY29scyArIDEpO1xuICAgICAgICBiID0gZW1iZWQoYiwgcm93cywgY29scyArIDEpO1xuICAgICAgfVxuXG4gICAgICBsZXQgaGFsZlJvd3MgPSBwYXJzZUludChhLnJvd3MgLyAyLCAxMCk7XG4gICAgICBsZXQgaGFsZkNvbHMgPSBwYXJzZUludChhLmNvbHVtbnMgLyAyLCAxMCk7XG4gICAgICAvLyBTdWJkaXZpZGUgaW5wdXQgbWF0cmljZXMuXG4gICAgICBsZXQgYTExID0gYS5zdWJNYXRyaXgoMCwgaGFsZlJvd3MgLSAxLCAwLCBoYWxmQ29scyAtIDEpO1xuICAgICAgbGV0IGIxMSA9IGIuc3ViTWF0cml4KDAsIGhhbGZSb3dzIC0gMSwgMCwgaGFsZkNvbHMgLSAxKTtcblxuICAgICAgbGV0IGExMiA9IGEuc3ViTWF0cml4KDAsIGhhbGZSb3dzIC0gMSwgaGFsZkNvbHMsIGEuY29sdW1ucyAtIDEpO1xuICAgICAgbGV0IGIxMiA9IGIuc3ViTWF0cml4KDAsIGhhbGZSb3dzIC0gMSwgaGFsZkNvbHMsIGIuY29sdW1ucyAtIDEpO1xuXG4gICAgICBsZXQgYTIxID0gYS5zdWJNYXRyaXgoaGFsZlJvd3MsIGEucm93cyAtIDEsIDAsIGhhbGZDb2xzIC0gMSk7XG4gICAgICBsZXQgYjIxID0gYi5zdWJNYXRyaXgoaGFsZlJvd3MsIGIucm93cyAtIDEsIDAsIGhhbGZDb2xzIC0gMSk7XG5cbiAgICAgIGxldCBhMjIgPSBhLnN1Yk1hdHJpeChoYWxmUm93cywgYS5yb3dzIC0gMSwgaGFsZkNvbHMsIGEuY29sdW1ucyAtIDEpO1xuICAgICAgbGV0IGIyMiA9IGIuc3ViTWF0cml4KGhhbGZSb3dzLCBiLnJvd3MgLSAxLCBoYWxmQ29scywgYi5jb2x1bW5zIC0gMSk7XG5cbiAgICAgIC8vIENvbXB1dGUgaW50ZXJtZWRpYXRlIHZhbHVlcy5cbiAgICAgIGxldCBtMSA9IGJsb2NrTXVsdChcbiAgICAgICAgQWJzdHJhY3RNYXRyaXguYWRkKGExMSwgYTIyKSxcbiAgICAgICAgQWJzdHJhY3RNYXRyaXguYWRkKGIxMSwgYjIyKSxcbiAgICAgICAgaGFsZlJvd3MsXG4gICAgICAgIGhhbGZDb2xzLFxuICAgICAgKTtcbiAgICAgIGxldCBtMiA9IGJsb2NrTXVsdChBYnN0cmFjdE1hdHJpeC5hZGQoYTIxLCBhMjIpLCBiMTEsIGhhbGZSb3dzLCBoYWxmQ29scyk7XG4gICAgICBsZXQgbTMgPSBibG9ja011bHQoYTExLCBBYnN0cmFjdE1hdHJpeC5zdWIoYjEyLCBiMjIpLCBoYWxmUm93cywgaGFsZkNvbHMpO1xuICAgICAgbGV0IG00ID0gYmxvY2tNdWx0KGEyMiwgQWJzdHJhY3RNYXRyaXguc3ViKGIyMSwgYjExKSwgaGFsZlJvd3MsIGhhbGZDb2xzKTtcbiAgICAgIGxldCBtNSA9IGJsb2NrTXVsdChBYnN0cmFjdE1hdHJpeC5hZGQoYTExLCBhMTIpLCBiMjIsIGhhbGZSb3dzLCBoYWxmQ29scyk7XG4gICAgICBsZXQgbTYgPSBibG9ja011bHQoXG4gICAgICAgIEFic3RyYWN0TWF0cml4LnN1YihhMjEsIGExMSksXG4gICAgICAgIEFic3RyYWN0TWF0cml4LmFkZChiMTEsIGIxMiksXG4gICAgICAgIGhhbGZSb3dzLFxuICAgICAgICBoYWxmQ29scyxcbiAgICAgICk7XG4gICAgICBsZXQgbTcgPSBibG9ja011bHQoXG4gICAgICAgIEFic3RyYWN0TWF0cml4LnN1YihhMTIsIGEyMiksXG4gICAgICAgIEFic3RyYWN0TWF0cml4LmFkZChiMjEsIGIyMiksXG4gICAgICAgIGhhbGZSb3dzLFxuICAgICAgICBoYWxmQ29scyxcbiAgICAgICk7XG5cbiAgICAgIC8vIENvbWJpbmUgaW50ZXJtZWRpYXRlIHZhbHVlcyBpbnRvIHRoZSBvdXRwdXQuXG4gICAgICBsZXQgYzExID0gQWJzdHJhY3RNYXRyaXguYWRkKG0xLCBtNCk7XG4gICAgICBjMTEuc3ViKG01KTtcbiAgICAgIGMxMS5hZGQobTcpO1xuICAgICAgbGV0IGMxMiA9IEFic3RyYWN0TWF0cml4LmFkZChtMywgbTUpO1xuICAgICAgbGV0IGMyMSA9IEFic3RyYWN0TWF0cml4LmFkZChtMiwgbTQpO1xuICAgICAgbGV0IGMyMiA9IEFic3RyYWN0TWF0cml4LnN1YihtMSwgbTIpO1xuICAgICAgYzIyLmFkZChtMyk7XG4gICAgICBjMjIuYWRkKG02KTtcblxuICAgICAgLy8gQ3JvcCBvdXRwdXQgdG8gdGhlIGRlc2lyZWQgc2l6ZSAodW5kbyBkeW5hbWljIHBhZGRpbmcpLlxuICAgICAgbGV0IHJlc3VsdGF0ID0gQWJzdHJhY3RNYXRyaXguemVyb3MoMiAqIGMxMS5yb3dzLCAyICogYzExLmNvbHVtbnMpO1xuICAgICAgcmVzdWx0YXQgPSByZXN1bHRhdC5zZXRTdWJNYXRyaXgoYzExLCAwLCAwKTtcbiAgICAgIHJlc3VsdGF0ID0gcmVzdWx0YXQuc2V0U3ViTWF0cml4KGMxMiwgYzExLnJvd3MsIDApO1xuICAgICAgcmVzdWx0YXQgPSByZXN1bHRhdC5zZXRTdWJNYXRyaXgoYzIxLCAwLCBjMTEuY29sdW1ucyk7XG4gICAgICByZXN1bHRhdCA9IHJlc3VsdGF0LnNldFN1Yk1hdHJpeChjMjIsIGMxMS5yb3dzLCBjMTEuY29sdW1ucyk7XG4gICAgICByZXR1cm4gcmVzdWx0YXQuc3ViTWF0cml4KDAsIHJvd3MgLSAxLCAwLCBjb2xzIC0gMSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJsb2NrTXVsdCh4LCB5LCByLCBjKTtcbiAgfVxuXG4gIHNjYWxlUm93cyhvcHRpb25zID0ge30pIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gICAgfVxuICAgIGNvbnN0IHsgbWluID0gMCwgbWF4ID0gMSB9ID0gb3B0aW9ucztcbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShtaW4pKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdtaW4gbXVzdCBiZSBhIG51bWJlcicpO1xuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKG1heCkpIHRocm93IG5ldyBUeXBlRXJyb3IoJ21heCBtdXN0IGJlIGEgbnVtYmVyJyk7XG4gICAgaWYgKG1pbiA+PSBtYXgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdtaW4gbXVzdCBiZSBzbWFsbGVyIHRoYW4gbWF4Jyk7XG4gICAgbGV0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgodGhpcy5yb3dzLCB0aGlzLmNvbHVtbnMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGNvbnN0IHJvdyA9IHRoaXMuZ2V0Um93KGkpO1xuICAgICAgaWYgKHJvdy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJlc2NhbGUocm93LCB7IG1pbiwgbWF4LCBvdXRwdXQ6IHJvdyB9KTtcbiAgICAgIH1cbiAgICAgIG5ld01hdHJpeC5zZXRSb3coaSwgcm93KTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld01hdHJpeDtcbiAgfVxuXG4gIHNjYWxlQ29sdW1ucyhvcHRpb25zID0ge30pIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gICAgfVxuICAgIGNvbnN0IHsgbWluID0gMCwgbWF4ID0gMSB9ID0gb3B0aW9ucztcbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShtaW4pKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdtaW4gbXVzdCBiZSBhIG51bWJlcicpO1xuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKG1heCkpIHRocm93IG5ldyBUeXBlRXJyb3IoJ21heCBtdXN0IGJlIGEgbnVtYmVyJyk7XG4gICAgaWYgKG1pbiA+PSBtYXgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdtaW4gbXVzdCBiZSBzbWFsbGVyIHRoYW4gbWF4Jyk7XG4gICAgbGV0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgodGhpcy5yb3dzLCB0aGlzLmNvbHVtbnMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zOyBpKyspIHtcbiAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuZ2V0Q29sdW1uKGkpO1xuICAgICAgaWYgKGNvbHVtbi5sZW5ndGgpIHtcbiAgICAgICAgcmVzY2FsZShjb2x1bW4sIHtcbiAgICAgICAgICBtaW46IG1pbixcbiAgICAgICAgICBtYXg6IG1heCxcbiAgICAgICAgICBvdXRwdXQ6IGNvbHVtbixcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBuZXdNYXRyaXguc2V0Q29sdW1uKGksIGNvbHVtbik7XG4gICAgfVxuICAgIHJldHVybiBuZXdNYXRyaXg7XG4gIH1cblxuICBmbGlwUm93cygpIHtcbiAgICBjb25zdCBtaWRkbGUgPSBNYXRoLmNlaWwodGhpcy5jb2x1bW5zIC8gMik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBtaWRkbGU7IGorKykge1xuICAgICAgICBsZXQgZmlyc3QgPSB0aGlzLmdldChpLCBqKTtcbiAgICAgICAgbGV0IGxhc3QgPSB0aGlzLmdldChpLCB0aGlzLmNvbHVtbnMgLSAxIC0gaik7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIGxhc3QpO1xuICAgICAgICB0aGlzLnNldChpLCB0aGlzLmNvbHVtbnMgLSAxIC0gaiwgZmlyc3QpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGZsaXBDb2x1bW5zKCkge1xuICAgIGNvbnN0IG1pZGRsZSA9IE1hdGguY2VpbCh0aGlzLnJvd3MgLyAyKTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1pZGRsZTsgaSsrKSB7XG4gICAgICAgIGxldCBmaXJzdCA9IHRoaXMuZ2V0KGksIGopO1xuICAgICAgICBsZXQgbGFzdCA9IHRoaXMuZ2V0KHRoaXMucm93cyAtIDEgLSBpLCBqKTtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgbGFzdCk7XG4gICAgICAgIHRoaXMuc2V0KHRoaXMucm93cyAtIDEgLSBpLCBqLCBmaXJzdCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAga3JvbmVja2VyUHJvZHVjdChvdGhlcikge1xuICAgIG90aGVyID0gTWF0cml4LmNoZWNrTWF0cml4KG90aGVyKTtcblxuICAgIGxldCBtID0gdGhpcy5yb3dzO1xuICAgIGxldCBuID0gdGhpcy5jb2x1bW5zO1xuICAgIGxldCBwID0gb3RoZXIucm93cztcbiAgICBsZXQgcSA9IG90aGVyLmNvbHVtbnM7XG5cbiAgICBsZXQgcmVzdWx0ID0gbmV3IE1hdHJpeChtICogcCwgbiAqIHEpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbTsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG47IGorKykge1xuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IHA7IGsrKykge1xuICAgICAgICAgIGZvciAobGV0IGwgPSAwOyBsIDwgcTsgbCsrKSB7XG4gICAgICAgICAgICByZXN1bHQuc2V0KHAgKiBpICsgaywgcSAqIGogKyBsLCB0aGlzLmdldChpLCBqKSAqIG90aGVyLmdldChrLCBsKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBrcm9uZWNrZXJTdW0ob3RoZXIpIHtcbiAgICBvdGhlciA9IE1hdHJpeC5jaGVja01hdHJpeChvdGhlcik7XG4gICAgaWYgKCF0aGlzLmlzU3F1YXJlKCkgfHwgIW90aGVyLmlzU3F1YXJlKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignS3JvbmVja2VyIFN1bSBuZWVkcyB0d28gU3F1YXJlIE1hdHJpY2VzJyk7XG4gICAgfVxuICAgIGxldCBtID0gdGhpcy5yb3dzO1xuICAgIGxldCBuID0gb3RoZXIucm93cztcbiAgICBsZXQgQXhJID0gdGhpcy5rcm9uZWNrZXJQcm9kdWN0KE1hdHJpeC5leWUobiwgbikpO1xuICAgIGxldCBJeEIgPSBNYXRyaXguZXllKG0sIG0pLmtyb25lY2tlclByb2R1Y3Qob3RoZXIpO1xuICAgIHJldHVybiBBeEkuYWRkKEl4Qik7XG4gIH1cblxuICB0cmFuc3Bvc2UoKSB7XG4gICAgbGV0IHJlc3VsdCA9IG5ldyBNYXRyaXgodGhpcy5jb2x1bW5zLCB0aGlzLnJvd3MpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgcmVzdWx0LnNldChqLCBpLCB0aGlzLmdldChpLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBzb3J0Um93cyhjb21wYXJlRnVuY3Rpb24gPSBjb21wYXJlTnVtYmVycykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIHRoaXMuc2V0Um93KGksIHRoaXMuZ2V0Um93KGkpLnNvcnQoY29tcGFyZUZ1bmN0aW9uKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc29ydENvbHVtbnMoY29tcGFyZUZ1bmN0aW9uID0gY29tcGFyZU51bWJlcnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29sdW1uczsgaSsrKSB7XG4gICAgICB0aGlzLnNldENvbHVtbihpLCB0aGlzLmdldENvbHVtbihpKS5zb3J0KGNvbXBhcmVGdW5jdGlvbikpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN1Yk1hdHJpeChzdGFydFJvdywgZW5kUm93LCBzdGFydENvbHVtbiwgZW5kQ29sdW1uKSB7XG4gICAgY2hlY2tSYW5nZSh0aGlzLCBzdGFydFJvdywgZW5kUm93LCBzdGFydENvbHVtbiwgZW5kQ29sdW1uKTtcbiAgICBsZXQgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChcbiAgICAgIGVuZFJvdyAtIHN0YXJ0Um93ICsgMSxcbiAgICAgIGVuZENvbHVtbiAtIHN0YXJ0Q29sdW1uICsgMSxcbiAgICApO1xuICAgIGZvciAobGV0IGkgPSBzdGFydFJvdzsgaSA8PSBlbmRSb3c7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IHN0YXJ0Q29sdW1uOyBqIDw9IGVuZENvbHVtbjsgaisrKSB7XG4gICAgICAgIG5ld01hdHJpeC5zZXQoaSAtIHN0YXJ0Um93LCBqIC0gc3RhcnRDb2x1bW4sIHRoaXMuZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld01hdHJpeDtcbiAgfVxuXG4gIHN1Yk1hdHJpeFJvdyhpbmRpY2VzLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uKSB7XG4gICAgaWYgKHN0YXJ0Q29sdW1uID09PSB1bmRlZmluZWQpIHN0YXJ0Q29sdW1uID0gMDtcbiAgICBpZiAoZW5kQ29sdW1uID09PSB1bmRlZmluZWQpIGVuZENvbHVtbiA9IHRoaXMuY29sdW1ucyAtIDE7XG4gICAgaWYgKFxuICAgICAgc3RhcnRDb2x1bW4gPiBlbmRDb2x1bW4gfHxcbiAgICAgIHN0YXJ0Q29sdW1uIDwgMCB8fFxuICAgICAgc3RhcnRDb2x1bW4gPj0gdGhpcy5jb2x1bW5zIHx8XG4gICAgICBlbmRDb2x1bW4gPCAwIHx8XG4gICAgICBlbmRDb2x1bW4gPj0gdGhpcy5jb2x1bW5zXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXJndW1lbnQgb3V0IG9mIHJhbmdlJyk7XG4gICAgfVxuXG4gICAgbGV0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgoaW5kaWNlcy5sZW5ndGgsIGVuZENvbHVtbiAtIHN0YXJ0Q29sdW1uICsgMSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbmRpY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gc3RhcnRDb2x1bW47IGogPD0gZW5kQ29sdW1uOyBqKyspIHtcbiAgICAgICAgaWYgKGluZGljZXNbaV0gPCAwIHx8IGluZGljZXNbaV0gPj0gdGhpcy5yb3dzKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFJvdyBpbmRleCBvdXQgb2YgcmFuZ2U6ICR7aW5kaWNlc1tpXX1gKTtcbiAgICAgICAgfVxuICAgICAgICBuZXdNYXRyaXguc2V0KGksIGogLSBzdGFydENvbHVtbiwgdGhpcy5nZXQoaW5kaWNlc1tpXSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3TWF0cml4O1xuICB9XG5cbiAgc3ViTWF0cml4Q29sdW1uKGluZGljZXMsIHN0YXJ0Um93LCBlbmRSb3cpIHtcbiAgICBpZiAoc3RhcnRSb3cgPT09IHVuZGVmaW5lZCkgc3RhcnRSb3cgPSAwO1xuICAgIGlmIChlbmRSb3cgPT09IHVuZGVmaW5lZCkgZW5kUm93ID0gdGhpcy5yb3dzIC0gMTtcbiAgICBpZiAoXG4gICAgICBzdGFydFJvdyA+IGVuZFJvdyB8fFxuICAgICAgc3RhcnRSb3cgPCAwIHx8XG4gICAgICBzdGFydFJvdyA+PSB0aGlzLnJvd3MgfHxcbiAgICAgIGVuZFJvdyA8IDAgfHxcbiAgICAgIGVuZFJvdyA+PSB0aGlzLnJvd3NcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdBcmd1bWVudCBvdXQgb2YgcmFuZ2UnKTtcbiAgICB9XG5cbiAgICBsZXQgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChlbmRSb3cgLSBzdGFydFJvdyArIDEsIGluZGljZXMubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGluZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSBzdGFydFJvdzsgaiA8PSBlbmRSb3c7IGorKykge1xuICAgICAgICBpZiAoaW5kaWNlc1tpXSA8IDAgfHwgaW5kaWNlc1tpXSA+PSB0aGlzLmNvbHVtbnMpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgQ29sdW1uIGluZGV4IG91dCBvZiByYW5nZTogJHtpbmRpY2VzW2ldfWApO1xuICAgICAgICB9XG4gICAgICAgIG5ld01hdHJpeC5zZXQoaiAtIHN0YXJ0Um93LCBpLCB0aGlzLmdldChqLCBpbmRpY2VzW2ldKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXdNYXRyaXg7XG4gIH1cblxuICBzZXRTdWJNYXRyaXgobWF0cml4LCBzdGFydFJvdywgc3RhcnRDb2x1bW4pIHtcbiAgICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgICBpZiAobWF0cml4LmlzRW1wdHkoKSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIGxldCBlbmRSb3cgPSBzdGFydFJvdyArIG1hdHJpeC5yb3dzIC0gMTtcbiAgICBsZXQgZW5kQ29sdW1uID0gc3RhcnRDb2x1bW4gKyBtYXRyaXguY29sdW1ucyAtIDE7XG4gICAgY2hlY2tSYW5nZSh0aGlzLCBzdGFydFJvdywgZW5kUm93LCBzdGFydENvbHVtbiwgZW5kQ29sdW1uKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChzdGFydFJvdyArIGksIHN0YXJ0Q29sdW1uICsgaiwgbWF0cml4LmdldChpLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2VsZWN0aW9uKHJvd0luZGljZXMsIGNvbHVtbkluZGljZXMpIHtcbiAgICBjaGVja1Jvd0luZGljZXModGhpcywgcm93SW5kaWNlcyk7XG4gICAgY2hlY2tDb2x1bW5JbmRpY2VzKHRoaXMsIGNvbHVtbkluZGljZXMpO1xuICAgIGxldCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KHJvd0luZGljZXMubGVuZ3RoLCBjb2x1bW5JbmRpY2VzLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dJbmRpY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgcm93SW5kZXggPSByb3dJbmRpY2VzW2ldO1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2x1bW5JbmRpY2VzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGxldCBjb2x1bW5JbmRleCA9IGNvbHVtbkluZGljZXNbal07XG4gICAgICAgIG5ld01hdHJpeC5zZXQoaSwgaiwgdGhpcy5nZXQocm93SW5kZXgsIGNvbHVtbkluZGV4KSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXdNYXRyaXg7XG4gIH1cblxuICB0cmFjZSgpIHtcbiAgICBsZXQgbWluID0gTWF0aC5taW4odGhpcy5yb3dzLCB0aGlzLmNvbHVtbnMpO1xuICAgIGxldCB0cmFjZSA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtaW47IGkrKykge1xuICAgICAgdHJhY2UgKz0gdGhpcy5nZXQoaSwgaSk7XG4gICAgfVxuICAgIHJldHVybiB0cmFjZTtcbiAgfVxuXG4gIGNsb25lKCkge1xuICAgIGxldCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KHRoaXMucm93cywgdGhpcy5jb2x1bW5zKTtcbiAgICBmb3IgKGxldCByb3cgPSAwOyByb3cgPCB0aGlzLnJvd3M7IHJvdysrKSB7XG4gICAgICBmb3IgKGxldCBjb2x1bW4gPSAwOyBjb2x1bW4gPCB0aGlzLmNvbHVtbnM7IGNvbHVtbisrKSB7XG4gICAgICAgIG5ld01hdHJpeC5zZXQocm93LCBjb2x1bW4sIHRoaXMuZ2V0KHJvdywgY29sdW1uKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXdNYXRyaXg7XG4gIH1cblxuICBzdW0oYnkpIHtcbiAgICBzd2l0Y2ggKGJ5KSB7XG4gICAgICBjYXNlICdyb3cnOlxuICAgICAgICByZXR1cm4gc3VtQnlSb3codGhpcyk7XG4gICAgICBjYXNlICdjb2x1bW4nOlxuICAgICAgICByZXR1cm4gc3VtQnlDb2x1bW4odGhpcyk7XG4gICAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgICAgcmV0dXJuIHN1bUFsbCh0aGlzKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBvcHRpb246ICR7Ynl9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJvZHVjdChieSkge1xuICAgIHN3aXRjaCAoYnkpIHtcbiAgICAgIGNhc2UgJ3Jvdyc6XG4gICAgICAgIHJldHVybiBwcm9kdWN0QnlSb3codGhpcyk7XG4gICAgICBjYXNlICdjb2x1bW4nOlxuICAgICAgICByZXR1cm4gcHJvZHVjdEJ5Q29sdW1uKHRoaXMpO1xuICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgIHJldHVybiBwcm9kdWN0QWxsKHRoaXMpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG9wdGlvbjogJHtieX1gKTtcbiAgICB9XG4gIH1cblxuICBtZWFuKGJ5KSB7XG4gICAgY29uc3Qgc3VtID0gdGhpcy5zdW0oYnkpO1xuICAgIHN3aXRjaCAoYnkpIHtcbiAgICAgIGNhc2UgJ3Jvdyc6IHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgICAgIHN1bVtpXSAvPSB0aGlzLmNvbHVtbnM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1bTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2NvbHVtbic6IHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbHVtbnM7IGkrKykge1xuICAgICAgICAgIHN1bVtpXSAvPSB0aGlzLnJvd3M7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1bTtcbiAgICAgIH1cbiAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICByZXR1cm4gc3VtIC8gdGhpcy5zaXplO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG9wdGlvbjogJHtieX1gKTtcbiAgICB9XG4gIH1cblxuICB2YXJpYW5jZShieSwgb3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKHR5cGVvZiBieSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIG9wdGlvbnMgPSBieTtcbiAgICAgIGJ5ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gICAgfVxuICAgIGNvbnN0IHsgdW5iaWFzZWQgPSB0cnVlLCBtZWFuID0gdGhpcy5tZWFuKGJ5KSB9ID0gb3B0aW9ucztcbiAgICBpZiAodHlwZW9mIHVuYmlhc2VkICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3VuYmlhc2VkIG11c3QgYmUgYSBib29sZWFuJyk7XG4gICAgfVxuICAgIHN3aXRjaCAoYnkpIHtcbiAgICAgIGNhc2UgJ3Jvdyc6IHtcbiAgICAgICAgaWYgKCFpc0FueUFycmF5KG1lYW4pKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbWVhbiBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhcmlhbmNlQnlSb3codGhpcywgdW5iaWFzZWQsIG1lYW4pO1xuICAgICAgfVxuICAgICAgY2FzZSAnY29sdW1uJzoge1xuICAgICAgICBpZiAoIWlzQW55QXJyYXkobWVhbikpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdtZWFuIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFyaWFuY2VCeUNvbHVtbih0aGlzLCB1bmJpYXNlZCwgbWVhbik7XG4gICAgICB9XG4gICAgICBjYXNlIHVuZGVmaW5lZDoge1xuICAgICAgICBpZiAodHlwZW9mIG1lYW4gIT09ICdudW1iZXInKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbWVhbiBtdXN0IGJlIGEgbnVtYmVyJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhcmlhbmNlQWxsKHRoaXMsIHVuYmlhc2VkLCBtZWFuKTtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBvcHRpb246ICR7Ynl9YCk7XG4gICAgfVxuICB9XG5cbiAgc3RhbmRhcmREZXZpYXRpb24oYnksIG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIGJ5ID09PSAnb2JqZWN0Jykge1xuICAgICAgb3B0aW9ucyA9IGJ5O1xuICAgICAgYnkgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IHZhcmlhbmNlID0gdGhpcy52YXJpYW5jZShieSwgb3B0aW9ucyk7XG4gICAgaWYgKGJ5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBNYXRoLnNxcnQodmFyaWFuY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhcmlhbmNlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhcmlhbmNlW2ldID0gTWF0aC5zcXJ0KHZhcmlhbmNlW2ldKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YXJpYW5jZTtcbiAgICB9XG4gIH1cblxuICBjZW50ZXIoYnksIG9wdGlvbnMgPSB7fSkge1xuICAgIGlmICh0eXBlb2YgYnkgPT09ICdvYmplY3QnKSB7XG4gICAgICBvcHRpb25zID0gYnk7XG4gICAgICBieSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgIH1cbiAgICBjb25zdCB7IGNlbnRlciA9IHRoaXMubWVhbihieSkgfSA9IG9wdGlvbnM7XG4gICAgc3dpdGNoIChieSkge1xuICAgICAgY2FzZSAncm93Jzoge1xuICAgICAgICBpZiAoIWlzQW55QXJyYXkoY2VudGVyKSkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2NlbnRlciBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgY2VudGVyQnlSb3codGhpcywgY2VudGVyKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgICBjYXNlICdjb2x1bW4nOiB7XG4gICAgICAgIGlmICghaXNBbnlBcnJheShjZW50ZXIpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY2VudGVyIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgICAgICAgfVxuICAgICAgICBjZW50ZXJCeUNvbHVtbih0aGlzLCBjZW50ZXIpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cbiAgICAgIGNhc2UgdW5kZWZpbmVkOiB7XG4gICAgICAgIGlmICh0eXBlb2YgY2VudGVyICE9PSAnbnVtYmVyJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2NlbnRlciBtdXN0IGJlIGEgbnVtYmVyJyk7XG4gICAgICAgIH1cbiAgICAgICAgY2VudGVyQWxsKHRoaXMsIGNlbnRlcik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG9wdGlvbjogJHtieX1gKTtcbiAgICB9XG4gIH1cblxuICBzY2FsZShieSwgb3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKHR5cGVvZiBieSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIG9wdGlvbnMgPSBieTtcbiAgICAgIGJ5ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gICAgfVxuICAgIGxldCBzY2FsZSA9IG9wdGlvbnMuc2NhbGU7XG4gICAgc3dpdGNoIChieSkge1xuICAgICAgY2FzZSAncm93Jzoge1xuICAgICAgICBpZiAoc2NhbGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjYWxlID0gZ2V0U2NhbGVCeVJvdyh0aGlzKTtcbiAgICAgICAgfSBlbHNlIGlmICghaXNBbnlBcnJheShzY2FsZSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzY2FsZSBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgc2NhbGVCeVJvdyh0aGlzLCBzY2FsZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuICAgICAgY2FzZSAnY29sdW1uJzoge1xuICAgICAgICBpZiAoc2NhbGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjYWxlID0gZ2V0U2NhbGVCeUNvbHVtbih0aGlzKTtcbiAgICAgICAgfSBlbHNlIGlmICghaXNBbnlBcnJheShzY2FsZSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzY2FsZSBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgc2NhbGVCeUNvbHVtbih0aGlzLCBzY2FsZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuICAgICAgY2FzZSB1bmRlZmluZWQ6IHtcbiAgICAgICAgaWYgKHNjYWxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzY2FsZSA9IGdldFNjYWxlQWxsKHRoaXMpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBzY2FsZSAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzY2FsZSBtdXN0IGJlIGEgbnVtYmVyJyk7XG4gICAgICAgIH1cbiAgICAgICAgc2NhbGVBbGwodGhpcywgc2NhbGUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBvcHRpb246ICR7Ynl9YCk7XG4gICAgfVxuICB9XG5cbiAgdG9TdHJpbmcob3B0aW9ucykge1xuICAgIHJldHVybiBpbnNwZWN0TWF0cml4V2l0aE9wdGlvbnModGhpcywgb3B0aW9ucyk7XG4gIH1cbn1cblxuQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmtsYXNzID0gJ01hdHJpeCc7XG5pZiAodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlW1N5bWJvbC5mb3IoJ25vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tJyldID1cbiAgICBpbnNwZWN0TWF0cml4O1xufVxuXG5mdW5jdGlvbiBjb21wYXJlTnVtYmVycyhhLCBiKSB7XG4gIHJldHVybiBhIC0gYjtcbn1cblxuZnVuY3Rpb24gaXNBcnJheU9mTnVtYmVycyhhcnJheSkge1xuICByZXR1cm4gYXJyYXkuZXZlcnkoKGVsZW1lbnQpID0+IHtcbiAgICByZXR1cm4gdHlwZW9mIGVsZW1lbnQgPT09ICdudW1iZXInO1xuICB9KTtcbn1cblxuLy8gU3lub255bXNcbkFic3RyYWN0TWF0cml4LnJhbmRvbSA9IEFic3RyYWN0TWF0cml4LnJhbmQ7XG5BYnN0cmFjdE1hdHJpeC5yYW5kb21JbnQgPSBBYnN0cmFjdE1hdHJpeC5yYW5kSW50O1xuQWJzdHJhY3RNYXRyaXguZGlhZ29uYWwgPSBBYnN0cmFjdE1hdHJpeC5kaWFnO1xuQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmRpYWdvbmFsID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmRpYWc7XG5BYnN0cmFjdE1hdHJpeC5pZGVudGl0eSA9IEFic3RyYWN0TWF0cml4LmV5ZTtcbkFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5uZWdhdGUgPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubmVnO1xuQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnRlbnNvclByb2R1Y3QgPVxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUua3JvbmVja2VyUHJvZHVjdDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWF0cml4IGV4dGVuZHMgQWJzdHJhY3RNYXRyaXgge1xuICBjb25zdHJ1Y3RvcihuUm93cywgbkNvbHVtbnMpIHtcbiAgICBzdXBlcigpO1xuICAgIGlmIChNYXRyaXguaXNNYXRyaXgoblJvd3MpKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc3RydWN0b3ItcmV0dXJuXG4gICAgICByZXR1cm4gblJvd3MuY2xvbmUoKTtcbiAgICB9IGVsc2UgaWYgKE51bWJlci5pc0ludGVnZXIoblJvd3MpICYmIG5Sb3dzID49IDApIHtcbiAgICAgIC8vIENyZWF0ZSBhbiBlbXB0eSBtYXRyaXhcbiAgICAgIHRoaXMuZGF0YSA9IFtdO1xuICAgICAgaWYgKE51bWJlci5pc0ludGVnZXIobkNvbHVtbnMpICYmIG5Db2x1bW5zID49IDApIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuUm93czsgaSsrKSB7XG4gICAgICAgICAgdGhpcy5kYXRhLnB1c2gobmV3IEZsb2F0NjRBcnJheShuQ29sdW1ucykpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCduQ29sdW1ucyBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlcicpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNBbnlBcnJheShuUm93cykpIHtcbiAgICAgIC8vIENvcHkgdGhlIHZhbHVlcyBmcm9tIHRoZSAyRCBhcnJheVxuICAgICAgY29uc3QgYXJyYXlEYXRhID0gblJvd3M7XG4gICAgICBuUm93cyA9IGFycmF5RGF0YS5sZW5ndGg7XG4gICAgICBuQ29sdW1ucyA9IG5Sb3dzID8gYXJyYXlEYXRhWzBdLmxlbmd0aCA6IDA7XG4gICAgICBpZiAodHlwZW9mIG5Db2x1bW5zICE9PSAnbnVtYmVyJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgICdEYXRhIG11c3QgYmUgYSAyRCBhcnJheSB3aXRoIGF0IGxlYXN0IG9uZSBlbGVtZW50JyxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGF0YSA9IFtdO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuUm93czsgaSsrKSB7XG4gICAgICAgIGlmIChhcnJheURhdGFbaV0ubGVuZ3RoICE9PSBuQ29sdW1ucykge1xuICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmNvbnNpc3RlbnQgYXJyYXkgZGltZW5zaW9ucycpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNBcnJheU9mTnVtYmVycyhhcnJheURhdGFbaV0pKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW5wdXQgZGF0YSBjb250YWlucyBub24tbnVtZXJpYyB2YWx1ZXMnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRhdGEucHVzaChGbG9hdDY0QXJyYXkuZnJvbShhcnJheURhdGFbaV0pKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgJ0ZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIgb3IgYW4gYXJyYXknLFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5yb3dzID0gblJvd3M7XG4gICAgdGhpcy5jb2x1bW5zID0gbkNvbHVtbnM7XG4gIH1cblxuICBzZXQocm93SW5kZXgsIGNvbHVtbkluZGV4LCB2YWx1ZSkge1xuICAgIHRoaXMuZGF0YVtyb3dJbmRleF1bY29sdW1uSW5kZXhdID0gdmFsdWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXQocm93SW5kZXgsIGNvbHVtbkluZGV4KSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVtyb3dJbmRleF1bY29sdW1uSW5kZXhdO1xuICB9XG5cbiAgcmVtb3ZlUm93KGluZGV4KSB7XG4gICAgY2hlY2tSb3dJbmRleCh0aGlzLCBpbmRleCk7XG4gICAgdGhpcy5kYXRhLnNwbGljZShpbmRleCwgMSk7XG4gICAgdGhpcy5yb3dzIC09IDE7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBhZGRSb3coaW5kZXgsIGFycmF5KSB7XG4gICAgaWYgKGFycmF5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGFycmF5ID0gaW5kZXg7XG4gICAgICBpbmRleCA9IHRoaXMucm93cztcbiAgICB9XG4gICAgY2hlY2tSb3dJbmRleCh0aGlzLCBpbmRleCwgdHJ1ZSk7XG4gICAgYXJyYXkgPSBGbG9hdDY0QXJyYXkuZnJvbShjaGVja1Jvd1ZlY3Rvcih0aGlzLCBhcnJheSkpO1xuICAgIHRoaXMuZGF0YS5zcGxpY2UoaW5kZXgsIDAsIGFycmF5KTtcbiAgICB0aGlzLnJvd3MgKz0gMTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHJlbW92ZUNvbHVtbihpbmRleCkge1xuICAgIGNoZWNrQ29sdW1uSW5kZXgodGhpcywgaW5kZXgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGNvbnN0IG5ld1JvdyA9IG5ldyBGbG9hdDY0QXJyYXkodGhpcy5jb2x1bW5zIC0gMSk7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGluZGV4OyBqKyspIHtcbiAgICAgICAgbmV3Um93W2pdID0gdGhpcy5kYXRhW2ldW2pdO1xuICAgICAgfVxuICAgICAgZm9yIChsZXQgaiA9IGluZGV4ICsgMTsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIG5ld1Jvd1tqIC0gMV0gPSB0aGlzLmRhdGFbaV1bal07XG4gICAgICB9XG4gICAgICB0aGlzLmRhdGFbaV0gPSBuZXdSb3c7XG4gICAgfVxuICAgIHRoaXMuY29sdW1ucyAtPSAxO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYWRkQ29sdW1uKGluZGV4LCBhcnJheSkge1xuICAgIGlmICh0eXBlb2YgYXJyYXkgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBhcnJheSA9IGluZGV4O1xuICAgICAgaW5kZXggPSB0aGlzLmNvbHVtbnM7XG4gICAgfVxuICAgIGNoZWNrQ29sdW1uSW5kZXgodGhpcywgaW5kZXgsIHRydWUpO1xuICAgIGFycmF5ID0gY2hlY2tDb2x1bW5WZWN0b3IodGhpcywgYXJyYXkpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGNvbnN0IG5ld1JvdyA9IG5ldyBGbG9hdDY0QXJyYXkodGhpcy5jb2x1bW5zICsgMSk7XG4gICAgICBsZXQgaiA9IDA7XG4gICAgICBmb3IgKDsgaiA8IGluZGV4OyBqKyspIHtcbiAgICAgICAgbmV3Um93W2pdID0gdGhpcy5kYXRhW2ldW2pdO1xuICAgICAgfVxuICAgICAgbmV3Um93W2orK10gPSBhcnJheVtpXTtcbiAgICAgIGZvciAoOyBqIDwgdGhpcy5jb2x1bW5zICsgMTsgaisrKSB7XG4gICAgICAgIG5ld1Jvd1tqXSA9IHRoaXMuZGF0YVtpXVtqIC0gMV07XG4gICAgICB9XG4gICAgICB0aGlzLmRhdGFbaV0gPSBuZXdSb3c7XG4gICAgfVxuICAgIHRoaXMuY29sdW1ucyArPSAxO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG5cbmluc3RhbGxNYXRoT3BlcmF0aW9ucyhBYnN0cmFjdE1hdHJpeCwgTWF0cml4KTtcbiIsImltcG9ydCB7IG5ld0FycmF5IH0gZnJvbSAnLi91dGlsJztcblxuZXhwb3J0IGZ1bmN0aW9uIHN1bUJ5Um93KG1hdHJpeCkge1xuICBsZXQgc3VtID0gbmV3QXJyYXkobWF0cml4LnJvd3MpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyArK2kpIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyArK2opIHtcbiAgICAgIHN1bVtpXSArPSBtYXRyaXguZ2V0KGksIGopO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc3VtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VtQnlDb2x1bW4obWF0cml4KSB7XG4gIGxldCBzdW0gPSBuZXdBcnJheShtYXRyaXguY29sdW1ucyk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7ICsraSkge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7ICsraikge1xuICAgICAgc3VtW2pdICs9IG1hdHJpeC5nZXQoaSwgaik7XG4gICAgfVxuICB9XG4gIHJldHVybiBzdW07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdW1BbGwobWF0cml4KSB7XG4gIGxldCB2ID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRyaXgucm93czsgaSsrKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgaisrKSB7XG4gICAgICB2ICs9IG1hdHJpeC5nZXQoaSwgaik7XG4gICAgfVxuICB9XG4gIHJldHVybiB2O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvZHVjdEJ5Um93KG1hdHJpeCkge1xuICBsZXQgc3VtID0gbmV3QXJyYXkobWF0cml4LnJvd3MsIDEpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyArK2kpIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyArK2opIHtcbiAgICAgIHN1bVtpXSAqPSBtYXRyaXguZ2V0KGksIGopO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc3VtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvZHVjdEJ5Q29sdW1uKG1hdHJpeCkge1xuICBsZXQgc3VtID0gbmV3QXJyYXkobWF0cml4LmNvbHVtbnMsIDEpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyArK2kpIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyArK2opIHtcbiAgICAgIHN1bVtqXSAqPSBtYXRyaXguZ2V0KGksIGopO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc3VtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvZHVjdEFsbChtYXRyaXgpIHtcbiAgbGV0IHYgPSAxO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyBpKyspIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyBqKyspIHtcbiAgICAgIHYgKj0gbWF0cml4LmdldChpLCBqKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHY7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYW5jZUJ5Um93KG1hdHJpeCwgdW5iaWFzZWQsIG1lYW4pIHtcbiAgY29uc3Qgcm93cyA9IG1hdHJpeC5yb3dzO1xuICBjb25zdCBjb2xzID0gbWF0cml4LmNvbHVtbnM7XG4gIGNvbnN0IHZhcmlhbmNlID0gW107XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICBsZXQgc3VtMSA9IDA7XG4gICAgbGV0IHN1bTIgPSAwO1xuICAgIGxldCB4ID0gMDtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvbHM7IGorKykge1xuICAgICAgeCA9IG1hdHJpeC5nZXQoaSwgaikgLSBtZWFuW2ldO1xuICAgICAgc3VtMSArPSB4O1xuICAgICAgc3VtMiArPSB4ICogeDtcbiAgICB9XG4gICAgaWYgKHVuYmlhc2VkKSB7XG4gICAgICB2YXJpYW5jZS5wdXNoKChzdW0yIC0gKHN1bTEgKiBzdW0xKSAvIGNvbHMpIC8gKGNvbHMgLSAxKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhcmlhbmNlLnB1c2goKHN1bTIgLSAoc3VtMSAqIHN1bTEpIC8gY29scykgLyBjb2xzKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHZhcmlhbmNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFuY2VCeUNvbHVtbihtYXRyaXgsIHVuYmlhc2VkLCBtZWFuKSB7XG4gIGNvbnN0IHJvd3MgPSBtYXRyaXgucm93cztcbiAgY29uc3QgY29scyA9IG1hdHJpeC5jb2x1bW5zO1xuICBjb25zdCB2YXJpYW5jZSA9IFtdO1xuXG4gIGZvciAobGV0IGogPSAwOyBqIDwgY29sczsgaisrKSB7XG4gICAgbGV0IHN1bTEgPSAwO1xuICAgIGxldCBzdW0yID0gMDtcbiAgICBsZXQgeCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgIHggPSBtYXRyaXguZ2V0KGksIGopIC0gbWVhbltqXTtcbiAgICAgIHN1bTEgKz0geDtcbiAgICAgIHN1bTIgKz0geCAqIHg7XG4gICAgfVxuICAgIGlmICh1bmJpYXNlZCkge1xuICAgICAgdmFyaWFuY2UucHVzaCgoc3VtMiAtIChzdW0xICogc3VtMSkgLyByb3dzKSAvIChyb3dzIC0gMSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXJpYW5jZS5wdXNoKChzdW0yIC0gKHN1bTEgKiBzdW0xKSAvIHJvd3MpIC8gcm93cyk7XG4gICAgfVxuICB9XG4gIHJldHVybiB2YXJpYW5jZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhbmNlQWxsKG1hdHJpeCwgdW5iaWFzZWQsIG1lYW4pIHtcbiAgY29uc3Qgcm93cyA9IG1hdHJpeC5yb3dzO1xuICBjb25zdCBjb2xzID0gbWF0cml4LmNvbHVtbnM7XG4gIGNvbnN0IHNpemUgPSByb3dzICogY29scztcblxuICBsZXQgc3VtMSA9IDA7XG4gIGxldCBzdW0yID0gMDtcbiAgbGV0IHggPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sczsgaisrKSB7XG4gICAgICB4ID0gbWF0cml4LmdldChpLCBqKSAtIG1lYW47XG4gICAgICBzdW0xICs9IHg7XG4gICAgICBzdW0yICs9IHggKiB4O1xuICAgIH1cbiAgfVxuICBpZiAodW5iaWFzZWQpIHtcbiAgICByZXR1cm4gKHN1bTIgLSAoc3VtMSAqIHN1bTEpIC8gc2l6ZSkgLyAoc2l6ZSAtIDEpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAoc3VtMiAtIChzdW0xICogc3VtMSkgLyBzaXplKSAvIHNpemU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNlbnRlckJ5Um93KG1hdHJpeCwgbWVhbikge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyBpKyspIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyBqKyspIHtcbiAgICAgIG1hdHJpeC5zZXQoaSwgaiwgbWF0cml4LmdldChpLCBqKSAtIG1lYW5baV0pO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2VudGVyQnlDb2x1bW4obWF0cml4LCBtZWFuKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7IGorKykge1xuICAgICAgbWF0cml4LnNldChpLCBqLCBtYXRyaXguZ2V0KGksIGopIC0gbWVhbltqXSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjZW50ZXJBbGwobWF0cml4LCBtZWFuKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7IGorKykge1xuICAgICAgbWF0cml4LnNldChpLCBqLCBtYXRyaXguZ2V0KGksIGopIC0gbWVhbik7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY2FsZUJ5Um93KG1hdHJpeCkge1xuICBjb25zdCBzY2FsZSA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyBpKyspIHtcbiAgICBsZXQgc3VtID0gMDtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyBqKyspIHtcbiAgICAgIHN1bSArPSBNYXRoLnBvdyhtYXRyaXguZ2V0KGksIGopLCAyKSAvIChtYXRyaXguY29sdW1ucyAtIDEpO1xuICAgIH1cbiAgICBzY2FsZS5wdXNoKE1hdGguc3FydChzdW0pKTtcbiAgfVxuICByZXR1cm4gc2NhbGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzY2FsZUJ5Um93KG1hdHJpeCwgc2NhbGUpIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRyaXgucm93czsgaSsrKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgaisrKSB7XG4gICAgICBtYXRyaXguc2V0KGksIGosIG1hdHJpeC5nZXQoaSwgaikgLyBzY2FsZVtpXSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY2FsZUJ5Q29sdW1uKG1hdHJpeCkge1xuICBjb25zdCBzY2FsZSA9IFtdO1xuICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyBqKyspIHtcbiAgICBsZXQgc3VtID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyBpKyspIHtcbiAgICAgIHN1bSArPSBNYXRoLnBvdyhtYXRyaXguZ2V0KGksIGopLCAyKSAvIChtYXRyaXgucm93cyAtIDEpO1xuICAgIH1cbiAgICBzY2FsZS5wdXNoKE1hdGguc3FydChzdW0pKTtcbiAgfVxuICByZXR1cm4gc2NhbGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzY2FsZUJ5Q29sdW1uKG1hdHJpeCwgc2NhbGUpIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRyaXgucm93czsgaSsrKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgaisrKSB7XG4gICAgICBtYXRyaXguc2V0KGksIGosIG1hdHJpeC5nZXQoaSwgaikgLyBzY2FsZVtqXSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY2FsZUFsbChtYXRyaXgpIHtcbiAgY29uc3QgZGl2aWRlciA9IG1hdHJpeC5zaXplIC0gMTtcbiAgbGV0IHN1bSA9IDA7XG4gIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7IGorKykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgICAgc3VtICs9IE1hdGgucG93KG1hdHJpeC5nZXQoaSwgaiksIDIpIC8gZGl2aWRlcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIE1hdGguc3FydChzdW0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2NhbGVBbGwobWF0cml4LCBzY2FsZSkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyBpKyspIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyBqKyspIHtcbiAgICAgIG1hdHJpeC5zZXQoaSwgaiwgbWF0cml4LmdldChpLCBqKSAvIHNjYWxlKTtcbiAgICB9XG4gIH1cbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpbnN0YWxsTWF0aE9wZXJhdGlvbnMoQWJzdHJhY3RNYXRyaXgsIE1hdHJpeCkge1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiB0aGlzLmFkZFModmFsdWUpO1xuICAgIHJldHVybiB0aGlzLmFkZE0odmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5hZGRTID0gZnVuY3Rpb24gYWRkUyh2YWx1ZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgKyB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5hZGRNID0gZnVuY3Rpb24gYWRkTShtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgICBpZiAodGhpcy5yb3dzICE9PSBtYXRyaXgucm93cyB8fFxuICAgICAgdGhpcy5jb2x1bW5zICE9PSBtYXRyaXguY29sdW1ucykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ01hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCcpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopICsgbWF0cml4LmdldChpLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmFkZCA9IGZ1bmN0aW9uIGFkZChtYXRyaXgsIHZhbHVlKSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguYWRkKHZhbHVlKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gc3ViKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiB0aGlzLnN1YlModmFsdWUpO1xuICAgIHJldHVybiB0aGlzLnN1Yk0odmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zdWJTID0gZnVuY3Rpb24gc3ViUyh2YWx1ZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgLSB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zdWJNID0gZnVuY3Rpb24gc3ViTShtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgICBpZiAodGhpcy5yb3dzICE9PSBtYXRyaXgucm93cyB8fFxuICAgICAgdGhpcy5jb2x1bW5zICE9PSBtYXRyaXguY29sdW1ucykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ01hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCcpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopIC0gbWF0cml4LmdldChpLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnN1YiA9IGZ1bmN0aW9uIHN1YihtYXRyaXgsIHZhbHVlKSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguc3ViKHZhbHVlKTtcbiAgfTtcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnN1YnRyYWN0ID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnN1YjtcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnN1YnRyYWN0UyA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zdWJTO1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc3VidHJhY3RNID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnN1Yk07XG4gIEFic3RyYWN0TWF0cml4LnN1YnRyYWN0ID0gQWJzdHJhY3RNYXRyaXguc3ViO1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMubXVsUyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMubXVsTSh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm11bFMgPSBmdW5jdGlvbiBtdWxTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAqIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm11bE0gPSBmdW5jdGlvbiBtdWxNKG1hdHJpeCkge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmICh0aGlzLnJvd3MgIT09IG1hdHJpeC5yb3dzIHx8XG4gICAgICB0aGlzLmNvbHVtbnMgIT09IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgKiBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgubXVsID0gZnVuY3Rpb24gbXVsKG1hdHJpeCwgdmFsdWUpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5tdWwodmFsdWUpO1xuICB9O1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubXVsdGlwbHkgPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubXVsO1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubXVsdGlwbHlTID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm11bFM7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tdWx0aXBseU0gPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubXVsTTtcbiAgQWJzdHJhY3RNYXRyaXgubXVsdGlwbHkgPSBBYnN0cmFjdE1hdHJpeC5tdWw7XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmRpdiA9IGZ1bmN0aW9uIGRpdih2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSByZXR1cm4gdGhpcy5kaXZTKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy5kaXZNKHZhbHVlKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuZGl2UyA9IGZ1bmN0aW9uIGRpdlModmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopIC8gdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuZGl2TSA9IGZ1bmN0aW9uIGRpdk0obWF0cml4KSB7XG4gICAgbWF0cml4ID0gTWF0cml4LmNoZWNrTWF0cml4KG1hdHJpeCk7XG4gICAgaWYgKHRoaXMucm93cyAhPT0gbWF0cml4LnJvd3MgfHxcbiAgICAgIHRoaXMuY29sdW1ucyAhPT0gbWF0cml4LmNvbHVtbnMpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwnKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAvIG1hdHJpeC5nZXQoaSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5kaXYgPSBmdW5jdGlvbiBkaXYobWF0cml4LCB2YWx1ZSkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmRpdih2YWx1ZSk7XG4gIH07XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5kaXZpZGUgPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuZGl2O1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuZGl2aWRlUyA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5kaXZTO1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuZGl2aWRlTSA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5kaXZNO1xuICBBYnN0cmFjdE1hdHJpeC5kaXZpZGUgPSBBYnN0cmFjdE1hdHJpeC5kaXY7XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uIG1vZCh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSByZXR1cm4gdGhpcy5tb2RTKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy5tb2RNKHZhbHVlKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubW9kUyA9IGZ1bmN0aW9uIG1vZFModmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopICUgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubW9kTSA9IGZ1bmN0aW9uIG1vZE0obWF0cml4KSB7XG4gICAgbWF0cml4ID0gTWF0cml4LmNoZWNrTWF0cml4KG1hdHJpeCk7XG4gICAgaWYgKHRoaXMucm93cyAhPT0gbWF0cml4LnJvd3MgfHxcbiAgICAgIHRoaXMuY29sdW1ucyAhPT0gbWF0cml4LmNvbHVtbnMpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwnKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAlIG1hdHJpeC5nZXQoaSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5tb2QgPSBmdW5jdGlvbiBtb2QobWF0cml4LCB2YWx1ZSkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4Lm1vZCh2YWx1ZSk7XG4gIH07XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tb2R1bHVzID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm1vZDtcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm1vZHVsdXNTID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm1vZFM7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tb2R1bHVzTSA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tb2RNO1xuICBBYnN0cmFjdE1hdHJpeC5tb2R1bHVzID0gQWJzdHJhY3RNYXRyaXgubW9kO1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5hbmQgPSBmdW5jdGlvbiBhbmQodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMuYW5kUyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMuYW5kTSh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmFuZFMgPSBmdW5jdGlvbiBhbmRTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAmIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmFuZE0gPSBmdW5jdGlvbiBhbmRNKG1hdHJpeCkge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmICh0aGlzLnJvd3MgIT09IG1hdHJpeC5yb3dzIHx8XG4gICAgICB0aGlzLmNvbHVtbnMgIT09IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgJiBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguYW5kID0gZnVuY3Rpb24gYW5kKG1hdHJpeCwgdmFsdWUpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5hbmQodmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5vciA9IGZ1bmN0aW9uIG9yKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiB0aGlzLm9yUyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMub3JNKHZhbHVlKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUub3JTID0gZnVuY3Rpb24gb3JTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSB8IHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm9yTSA9IGZ1bmN0aW9uIG9yTShtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgICBpZiAodGhpcy5yb3dzICE9PSBtYXRyaXgucm93cyB8fFxuICAgICAgdGhpcy5jb2x1bW5zICE9PSBtYXRyaXguY29sdW1ucykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ01hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCcpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopIHwgbWF0cml4LmdldChpLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4Lm9yID0gZnVuY3Rpb24gb3IobWF0cml4LCB2YWx1ZSkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4Lm9yKHZhbHVlKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUueG9yID0gZnVuY3Rpb24geG9yKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiB0aGlzLnhvclModmFsdWUpO1xuICAgIHJldHVybiB0aGlzLnhvck0odmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS54b3JTID0gZnVuY3Rpb24geG9yUyh2YWx1ZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgXiB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS54b3JNID0gZnVuY3Rpb24geG9yTShtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgICBpZiAodGhpcy5yb3dzICE9PSBtYXRyaXgucm93cyB8fFxuICAgICAgdGhpcy5jb2x1bW5zICE9PSBtYXRyaXguY29sdW1ucykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ01hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCcpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopIF4gbWF0cml4LmdldChpLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnhvciA9IGZ1bmN0aW9uIHhvcihtYXRyaXgsIHZhbHVlKSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgueG9yKHZhbHVlKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubGVmdFNoaWZ0ID0gZnVuY3Rpb24gbGVmdFNoaWZ0KHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiB0aGlzLmxlZnRTaGlmdFModmFsdWUpO1xuICAgIHJldHVybiB0aGlzLmxlZnRTaGlmdE0odmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5sZWZ0U2hpZnRTID0gZnVuY3Rpb24gbGVmdFNoaWZ0Uyh2YWx1ZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgPDwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubGVmdFNoaWZ0TSA9IGZ1bmN0aW9uIGxlZnRTaGlmdE0obWF0cml4KSB7XG4gICAgbWF0cml4ID0gTWF0cml4LmNoZWNrTWF0cml4KG1hdHJpeCk7XG4gICAgaWYgKHRoaXMucm93cyAhPT0gbWF0cml4LnJvd3MgfHxcbiAgICAgIHRoaXMuY29sdW1ucyAhPT0gbWF0cml4LmNvbHVtbnMpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwnKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSA8PCBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgubGVmdFNoaWZ0ID0gZnVuY3Rpb24gbGVmdFNoaWZ0KG1hdHJpeCwgdmFsdWUpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5sZWZ0U2hpZnQodmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0ID0gZnVuY3Rpb24gc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdCh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSByZXR1cm4gdGhpcy5zaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0Uyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMuc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdE0odmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0UyA9IGZ1bmN0aW9uIHNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSA+PiB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0TSA9IGZ1bmN0aW9uIHNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRNKG1hdHJpeCkge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmICh0aGlzLnJvd3MgIT09IG1hdHJpeC5yb3dzIHx8XG4gICAgICB0aGlzLmNvbHVtbnMgIT09IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgPj4gbWF0cml4LmdldChpLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnQgPSBmdW5jdGlvbiBzaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0KG1hdHJpeCwgdmFsdWUpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5zaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0KHZhbHVlKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUucmlnaHRTaGlmdCA9IGZ1bmN0aW9uIHJpZ2h0U2hpZnQodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMucmlnaHRTaGlmdFModmFsdWUpO1xuICAgIHJldHVybiB0aGlzLnJpZ2h0U2hpZnRNKHZhbHVlKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUucmlnaHRTaGlmdFMgPSBmdW5jdGlvbiByaWdodFNoaWZ0Uyh2YWx1ZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgPj4+IHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnJpZ2h0U2hpZnRNID0gZnVuY3Rpb24gcmlnaHRTaGlmdE0obWF0cml4KSB7XG4gICAgbWF0cml4ID0gTWF0cml4LmNoZWNrTWF0cml4KG1hdHJpeCk7XG4gICAgaWYgKHRoaXMucm93cyAhPT0gbWF0cml4LnJvd3MgfHxcbiAgICAgIHRoaXMuY29sdW1ucyAhPT0gbWF0cml4LmNvbHVtbnMpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwnKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSA+Pj4gbWF0cml4LmdldChpLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnJpZ2h0U2hpZnQgPSBmdW5jdGlvbiByaWdodFNoaWZ0KG1hdHJpeCwgdmFsdWUpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5yaWdodFNoaWZ0KHZhbHVlKTtcbiAgfTtcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnplcm9GaWxsUmlnaHRTaGlmdCA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5yaWdodFNoaWZ0O1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuemVyb0ZpbGxSaWdodFNoaWZ0UyA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5yaWdodFNoaWZ0UztcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnplcm9GaWxsUmlnaHRTaGlmdE0gPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUucmlnaHRTaGlmdE07XG4gIEFic3RyYWN0TWF0cml4Lnplcm9GaWxsUmlnaHRTaGlmdCA9IEFic3RyYWN0TWF0cml4LnJpZ2h0U2hpZnQ7XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm5vdCA9IGZ1bmN0aW9uIG5vdCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIH4odGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgubm90ID0gZnVuY3Rpb24gbm90KG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4Lm5vdCgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5hYnMgPSBmdW5jdGlvbiBhYnMoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmFicyh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5hYnMgPSBmdW5jdGlvbiBhYnMobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguYWJzKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmFjb3MgPSBmdW5jdGlvbiBhY29zKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5hY29zKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmFjb3MgPSBmdW5jdGlvbiBhY29zKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmFjb3MoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuYWNvc2ggPSBmdW5jdGlvbiBhY29zaCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguYWNvc2godGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguYWNvc2ggPSBmdW5jdGlvbiBhY29zaChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5hY29zaCgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5hc2luID0gZnVuY3Rpb24gYXNpbigpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguYXNpbih0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5hc2luID0gZnVuY3Rpb24gYXNpbihtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5hc2luKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmFzaW5oID0gZnVuY3Rpb24gYXNpbmgoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmFzaW5oKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmFzaW5oID0gZnVuY3Rpb24gYXNpbmgobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguYXNpbmgoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuYXRhbiA9IGZ1bmN0aW9uIGF0YW4oKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmF0YW4odGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguYXRhbiA9IGZ1bmN0aW9uIGF0YW4obWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguYXRhbigpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5hdGFuaCA9IGZ1bmN0aW9uIGF0YW5oKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5hdGFuaCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5hdGFuaCA9IGZ1bmN0aW9uIGF0YW5oKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmF0YW5oKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmNicnQgPSBmdW5jdGlvbiBjYnJ0KCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5jYnJ0KHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmNicnQgPSBmdW5jdGlvbiBjYnJ0KG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmNicnQoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuY2VpbCA9IGZ1bmN0aW9uIGNlaWwoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmNlaWwodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguY2VpbCA9IGZ1bmN0aW9uIGNlaWwobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguY2VpbCgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5jbHozMiA9IGZ1bmN0aW9uIGNsejMyKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5jbHozMih0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5jbHozMiA9IGZ1bmN0aW9uIGNsejMyKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmNsejMyKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmNvcyA9IGZ1bmN0aW9uIGNvcygpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguY29zKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmNvcyA9IGZ1bmN0aW9uIGNvcyhtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5jb3MoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuY29zaCA9IGZ1bmN0aW9uIGNvc2goKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmNvc2godGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguY29zaCA9IGZ1bmN0aW9uIGNvc2gobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguY29zaCgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5leHAgPSBmdW5jdGlvbiBleHAoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmV4cCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5leHAgPSBmdW5jdGlvbiBleHAobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguZXhwKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmV4cG0xID0gZnVuY3Rpb24gZXhwbTEoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmV4cG0xKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmV4cG0xID0gZnVuY3Rpb24gZXhwbTEobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguZXhwbTEoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuZmxvb3IgPSBmdW5jdGlvbiBmbG9vcigpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguZmxvb3IodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguZmxvb3IgPSBmdW5jdGlvbiBmbG9vcihtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5mbG9vcigpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5mcm91bmQgPSBmdW5jdGlvbiBmcm91bmQoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmZyb3VuZCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5mcm91bmQgPSBmdW5jdGlvbiBmcm91bmQobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguZnJvdW5kKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmxvZyA9IGZ1bmN0aW9uIGxvZygpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGgubG9nKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmxvZyA9IGZ1bmN0aW9uIGxvZyhtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5sb2coKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubG9nMXAgPSBmdW5jdGlvbiBsb2cxcCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGgubG9nMXAodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgubG9nMXAgPSBmdW5jdGlvbiBsb2cxcChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5sb2cxcCgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5sb2cxMCA9IGZ1bmN0aW9uIGxvZzEwKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5sb2cxMCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5sb2cxMCA9IGZ1bmN0aW9uIGxvZzEwKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmxvZzEwKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmxvZzIgPSBmdW5jdGlvbiBsb2cyKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5sb2cyKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmxvZzIgPSBmdW5jdGlvbiBsb2cyKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmxvZzIoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUucm91bmQgPSBmdW5jdGlvbiByb3VuZCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGgucm91bmQodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucm91bmQgPSBmdW5jdGlvbiByb3VuZChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5yb3VuZCgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zaWduID0gZnVuY3Rpb24gc2lnbigpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguc2lnbih0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5zaWduID0gZnVuY3Rpb24gc2lnbihtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5zaWduKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnNpbiA9IGZ1bmN0aW9uIHNpbigpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguc2luKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnNpbiA9IGZ1bmN0aW9uIHNpbihtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5zaW4oKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc2luaCA9IGZ1bmN0aW9uIHNpbmgoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLnNpbmgodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguc2luaCA9IGZ1bmN0aW9uIHNpbmgobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguc2luaCgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zcXJ0ID0gZnVuY3Rpb24gc3FydCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguc3FydCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5zcXJ0ID0gZnVuY3Rpb24gc3FydChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5zcXJ0KCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnRhbiA9IGZ1bmN0aW9uIHRhbigpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGgudGFuKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnRhbiA9IGZ1bmN0aW9uIHRhbihtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC50YW4oKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUudGFuaCA9IGZ1bmN0aW9uIHRhbmgoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLnRhbmgodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgudGFuaCA9IGZ1bmN0aW9uIHRhbmgobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgudGFuaCgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS50cnVuYyA9IGZ1bmN0aW9uIHRydW5jKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC50cnVuYyh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC50cnVuYyA9IGZ1bmN0aW9uIHRydW5jKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnRydW5jKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucG93ID0gZnVuY3Rpb24gcG93KG1hdHJpeCwgYXJnMCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnBvdyhhcmcwKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUucG93ID0gZnVuY3Rpb24gcG93KHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiB0aGlzLnBvd1ModmFsdWUpO1xuICAgIHJldHVybiB0aGlzLnBvd00odmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5wb3dTID0gZnVuY3Rpb24gcG93Uyh2YWx1ZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5wb3codGhpcy5nZXQoaSwgaiksIHZhbHVlKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5wb3dNID0gZnVuY3Rpb24gcG93TShtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgICBpZiAodGhpcy5yb3dzICE9PSBtYXRyaXgucm93cyB8fFxuICAgICAgdGhpcy5jb2x1bW5zICE9PSBtYXRyaXguY29sdW1ucykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ01hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCcpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGgucG93KHRoaXMuZ2V0KGksIGopLCBtYXRyaXguZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgQWJzdHJhY3RNYXRyaXggfSBmcm9tICcuLi9tYXRyaXgnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBXcmFwcGVyTWF0cml4MkQgZXh0ZW5kcyBBYnN0cmFjdE1hdHJpeCB7XG4gIGNvbnN0cnVjdG9yKGRhdGEpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZGF0YSA9IGRhdGE7XG4gICAgdGhpcy5yb3dzID0gZGF0YS5sZW5ndGg7XG4gICAgdGhpcy5jb2x1bW5zID0gZGF0YVswXS5sZW5ndGg7XG4gIH1cblxuICBzZXQocm93SW5kZXgsIGNvbHVtbkluZGV4LCB2YWx1ZSkge1xuICAgIHRoaXMuZGF0YVtyb3dJbmRleF1bY29sdW1uSW5kZXhdID0gdmFsdWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXQocm93SW5kZXgsIGNvbHVtbkluZGV4KSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVtyb3dJbmRleF1bY29sdW1uSW5kZXhdO1xuICB9XG59XG4iLCJpbXBvcnQgTWF0cml4IGZyb20gJy4uL21hdHJpeCc7XG5pbXBvcnQgV3JhcHBlck1hdHJpeDJEIGZyb20gJy4uL3dyYXAvV3JhcHBlck1hdHJpeDJEJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTHVEZWNvbXBvc2l0aW9uIHtcbiAgY29uc3RydWN0b3IobWF0cml4KSB7XG4gICAgbWF0cml4ID0gV3JhcHBlck1hdHJpeDJELmNoZWNrTWF0cml4KG1hdHJpeCk7XG5cbiAgICBsZXQgbHUgPSBtYXRyaXguY2xvbmUoKTtcbiAgICBsZXQgcm93cyA9IGx1LnJvd3M7XG4gICAgbGV0IGNvbHVtbnMgPSBsdS5jb2x1bW5zO1xuICAgIGxldCBwaXZvdFZlY3RvciA9IG5ldyBGbG9hdDY0QXJyYXkocm93cyk7XG4gICAgbGV0IHBpdm90U2lnbiA9IDE7XG4gICAgbGV0IGksIGosIGssIHAsIHMsIHQsIHY7XG4gICAgbGV0IExVY29saiwga21heDtcblxuICAgIGZvciAoaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgIHBpdm90VmVjdG9yW2ldID0gaTtcbiAgICB9XG5cbiAgICBMVWNvbGogPSBuZXcgRmxvYXQ2NEFycmF5KHJvd3MpO1xuXG4gICAgZm9yIChqID0gMDsgaiA8IGNvbHVtbnM7IGorKykge1xuICAgICAgZm9yIChpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgICBMVWNvbGpbaV0gPSBsdS5nZXQoaSwgaik7XG4gICAgICB9XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgICAga21heCA9IE1hdGgubWluKGksIGopO1xuICAgICAgICBzID0gMDtcbiAgICAgICAgZm9yIChrID0gMDsgayA8IGttYXg7IGsrKykge1xuICAgICAgICAgIHMgKz0gbHUuZ2V0KGksIGspICogTFVjb2xqW2tdO1xuICAgICAgICB9XG4gICAgICAgIExVY29saltpXSAtPSBzO1xuICAgICAgICBsdS5zZXQoaSwgaiwgTFVjb2xqW2ldKTtcbiAgICAgIH1cblxuICAgICAgcCA9IGo7XG4gICAgICBmb3IgKGkgPSBqICsgMTsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgICBpZiAoTWF0aC5hYnMoTFVjb2xqW2ldKSA+IE1hdGguYWJzKExVY29saltwXSkpIHtcbiAgICAgICAgICBwID0gaTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocCAhPT0gaikge1xuICAgICAgICBmb3IgKGsgPSAwOyBrIDwgY29sdW1uczsgaysrKSB7XG4gICAgICAgICAgdCA9IGx1LmdldChwLCBrKTtcbiAgICAgICAgICBsdS5zZXQocCwgaywgbHUuZ2V0KGosIGspKTtcbiAgICAgICAgICBsdS5zZXQoaiwgaywgdCk7XG4gICAgICAgIH1cblxuICAgICAgICB2ID0gcGl2b3RWZWN0b3JbcF07XG4gICAgICAgIHBpdm90VmVjdG9yW3BdID0gcGl2b3RWZWN0b3Jbal07XG4gICAgICAgIHBpdm90VmVjdG9yW2pdID0gdjtcblxuICAgICAgICBwaXZvdFNpZ24gPSAtcGl2b3RTaWduO1xuICAgICAgfVxuXG4gICAgICBpZiAoaiA8IHJvd3MgJiYgbHUuZ2V0KGosIGopICE9PSAwKSB7XG4gICAgICAgIGZvciAoaSA9IGogKyAxOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICAgICAgbHUuc2V0KGksIGosIGx1LmdldChpLCBqKSAvIGx1LmdldChqLCBqKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLkxVID0gbHU7XG4gICAgdGhpcy5waXZvdFZlY3RvciA9IHBpdm90VmVjdG9yO1xuICAgIHRoaXMucGl2b3RTaWduID0gcGl2b3RTaWduO1xuICB9XG5cbiAgaXNTaW5ndWxhcigpIHtcbiAgICBsZXQgZGF0YSA9IHRoaXMuTFU7XG4gICAgbGV0IGNvbCA9IGRhdGEuY29sdW1ucztcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvbDsgaisrKSB7XG4gICAgICBpZiAoZGF0YS5nZXQoaiwgaikgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHNvbHZlKHZhbHVlKSB7XG4gICAgdmFsdWUgPSBNYXRyaXguY2hlY2tNYXRyaXgodmFsdWUpO1xuXG4gICAgbGV0IGx1ID0gdGhpcy5MVTtcbiAgICBsZXQgcm93cyA9IGx1LnJvd3M7XG5cbiAgICBpZiAocm93cyAhPT0gdmFsdWUucm93cykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG1hdHJpeCBkaW1lbnNpb25zJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzU2luZ3VsYXIoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdMVSBtYXRyaXggaXMgc2luZ3VsYXInKTtcbiAgICB9XG5cbiAgICBsZXQgY291bnQgPSB2YWx1ZS5jb2x1bW5zO1xuICAgIGxldCBYID0gdmFsdWUuc3ViTWF0cml4Um93KHRoaXMucGl2b3RWZWN0b3IsIDAsIGNvdW50IC0gMSk7XG4gICAgbGV0IGNvbHVtbnMgPSBsdS5jb2x1bW5zO1xuICAgIGxldCBpLCBqLCBrO1xuXG4gICAgZm9yIChrID0gMDsgayA8IGNvbHVtbnM7IGsrKykge1xuICAgICAgZm9yIChpID0gayArIDE7IGkgPCBjb2x1bW5zOyBpKyspIHtcbiAgICAgICAgZm9yIChqID0gMDsgaiA8IGNvdW50OyBqKyspIHtcbiAgICAgICAgICBYLnNldChpLCBqLCBYLmdldChpLCBqKSAtIFguZ2V0KGssIGopICogbHUuZ2V0KGksIGspKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGsgPSBjb2x1bW5zIC0gMTsgayA+PSAwOyBrLS0pIHtcbiAgICAgIGZvciAoaiA9IDA7IGogPCBjb3VudDsgaisrKSB7XG4gICAgICAgIFguc2V0KGssIGosIFguZ2V0KGssIGopIC8gbHUuZ2V0KGssIGspKTtcbiAgICAgIH1cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBrOyBpKyspIHtcbiAgICAgICAgZm9yIChqID0gMDsgaiA8IGNvdW50OyBqKyspIHtcbiAgICAgICAgICBYLnNldChpLCBqLCBYLmdldChpLCBqKSAtIFguZ2V0KGssIGopICogbHUuZ2V0KGksIGspKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gWDtcbiAgfVxuXG4gIGdldCBkZXRlcm1pbmFudCgpIHtcbiAgICBsZXQgZGF0YSA9IHRoaXMuTFU7XG4gICAgaWYgKCFkYXRhLmlzU3F1YXJlKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWF0cml4IG11c3QgYmUgc3F1YXJlJyk7XG4gICAgfVxuICAgIGxldCBkZXRlcm1pbmFudCA9IHRoaXMucGl2b3RTaWduO1xuICAgIGxldCBjb2wgPSBkYXRhLmNvbHVtbnM7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2w7IGorKykge1xuICAgICAgZGV0ZXJtaW5hbnQgKj0gZGF0YS5nZXQoaiwgaik7XG4gICAgfVxuICAgIHJldHVybiBkZXRlcm1pbmFudDtcbiAgfVxuXG4gIGdldCBsb3dlclRyaWFuZ3VsYXJNYXRyaXgoKSB7XG4gICAgbGV0IGRhdGEgPSB0aGlzLkxVO1xuICAgIGxldCByb3dzID0gZGF0YS5yb3dzO1xuICAgIGxldCBjb2x1bW5zID0gZGF0YS5jb2x1bW5zO1xuICAgIGxldCBYID0gbmV3IE1hdHJpeChyb3dzLCBjb2x1bW5zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2x1bW5zOyBqKyspIHtcbiAgICAgICAgaWYgKGkgPiBqKSB7XG4gICAgICAgICAgWC5zZXQoaSwgaiwgZGF0YS5nZXQoaSwgaikpO1xuICAgICAgICB9IGVsc2UgaWYgKGkgPT09IGopIHtcbiAgICAgICAgICBYLnNldChpLCBqLCAxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBYLnNldChpLCBqLCAwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gWDtcbiAgfVxuXG4gIGdldCB1cHBlclRyaWFuZ3VsYXJNYXRyaXgoKSB7XG4gICAgbGV0IGRhdGEgPSB0aGlzLkxVO1xuICAgIGxldCByb3dzID0gZGF0YS5yb3dzO1xuICAgIGxldCBjb2x1bW5zID0gZGF0YS5jb2x1bW5zO1xuICAgIGxldCBYID0gbmV3IE1hdHJpeChyb3dzLCBjb2x1bW5zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2x1bW5zOyBqKyspIHtcbiAgICAgICAgaWYgKGkgPD0gaikge1xuICAgICAgICAgIFguc2V0KGksIGosIGRhdGEuZ2V0KGksIGopKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBYLnNldChpLCBqLCAwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gWDtcbiAgfVxuXG4gIGdldCBwaXZvdFBlcm11dGF0aW9uVmVjdG9yKCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMucGl2b3RWZWN0b3IpO1xuICB9XG59XG4iLCJleHBvcnQgZnVuY3Rpb24gaHlwb3RlbnVzZShhLCBiKSB7XG4gIGxldCByID0gMDtcbiAgaWYgKE1hdGguYWJzKGEpID4gTWF0aC5hYnMoYikpIHtcbiAgICByID0gYiAvIGE7XG4gICAgcmV0dXJuIE1hdGguYWJzKGEpICogTWF0aC5zcXJ0KDEgKyByICogcik7XG4gIH1cbiAgaWYgKGIgIT09IDApIHtcbiAgICByID0gYSAvIGI7XG4gICAgcmV0dXJuIE1hdGguYWJzKGIpICogTWF0aC5zcXJ0KDEgKyByICogcik7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG4iLCJpbXBvcnQgTWF0cml4IGZyb20gJy4uL21hdHJpeCc7XG5pbXBvcnQgV3JhcHBlck1hdHJpeDJEIGZyb20gJy4uL3dyYXAvV3JhcHBlck1hdHJpeDJEJztcblxuaW1wb3J0IHsgaHlwb3RlbnVzZSB9IGZyb20gJy4vdXRpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFFyRGVjb21wb3NpdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHZhbHVlKSB7XG4gICAgdmFsdWUgPSBXcmFwcGVyTWF0cml4MkQuY2hlY2tNYXRyaXgodmFsdWUpO1xuXG4gICAgbGV0IHFyID0gdmFsdWUuY2xvbmUoKTtcbiAgICBsZXQgbSA9IHZhbHVlLnJvd3M7XG4gICAgbGV0IG4gPSB2YWx1ZS5jb2x1bW5zO1xuICAgIGxldCByZGlhZyA9IG5ldyBGbG9hdDY0QXJyYXkobik7XG4gICAgbGV0IGksIGosIGssIHM7XG5cbiAgICBmb3IgKGsgPSAwOyBrIDwgbjsgaysrKSB7XG4gICAgICBsZXQgbnJtID0gMDtcbiAgICAgIGZvciAoaSA9IGs7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgbnJtID0gaHlwb3RlbnVzZShucm0sIHFyLmdldChpLCBrKSk7XG4gICAgICB9XG4gICAgICBpZiAobnJtICE9PSAwKSB7XG4gICAgICAgIGlmIChxci5nZXQoaywgaykgPCAwKSB7XG4gICAgICAgICAgbnJtID0gLW5ybTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGkgPSBrOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgcXIuc2V0KGksIGssIHFyLmdldChpLCBrKSAvIG5ybSk7XG4gICAgICAgIH1cbiAgICAgICAgcXIuc2V0KGssIGssIHFyLmdldChrLCBrKSArIDEpO1xuICAgICAgICBmb3IgKGogPSBrICsgMTsgaiA8IG47IGorKykge1xuICAgICAgICAgIHMgPSAwO1xuICAgICAgICAgIGZvciAoaSA9IGs7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgIHMgKz0gcXIuZ2V0KGksIGspICogcXIuZ2V0KGksIGopO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzID0gLXMgLyBxci5nZXQoaywgayk7XG4gICAgICAgICAgZm9yIChpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgcXIuc2V0KGksIGosIHFyLmdldChpLCBqKSArIHMgKiBxci5nZXQoaSwgaykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmRpYWdba10gPSAtbnJtO1xuICAgIH1cblxuICAgIHRoaXMuUVIgPSBxcjtcbiAgICB0aGlzLlJkaWFnID0gcmRpYWc7XG4gIH1cblxuICBzb2x2ZSh2YWx1ZSkge1xuICAgIHZhbHVlID0gTWF0cml4LmNoZWNrTWF0cml4KHZhbHVlKTtcblxuICAgIGxldCBxciA9IHRoaXMuUVI7XG4gICAgbGV0IG0gPSBxci5yb3dzO1xuXG4gICAgaWYgKHZhbHVlLnJvd3MgIT09IG0pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWF0cml4IHJvdyBkaW1lbnNpb25zIG11c3QgYWdyZWUnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmlzRnVsbFJhbmsoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNYXRyaXggaXMgcmFuayBkZWZpY2llbnQnKTtcbiAgICB9XG5cbiAgICBsZXQgY291bnQgPSB2YWx1ZS5jb2x1bW5zO1xuICAgIGxldCBYID0gdmFsdWUuY2xvbmUoKTtcbiAgICBsZXQgbiA9IHFyLmNvbHVtbnM7XG4gICAgbGV0IGksIGosIGssIHM7XG5cbiAgICBmb3IgKGsgPSAwOyBrIDwgbjsgaysrKSB7XG4gICAgICBmb3IgKGogPSAwOyBqIDwgY291bnQ7IGorKykge1xuICAgICAgICBzID0gMDtcbiAgICAgICAgZm9yIChpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICAgIHMgKz0gcXIuZ2V0KGksIGspICogWC5nZXQoaSwgaik7XG4gICAgICAgIH1cbiAgICAgICAgcyA9IC1zIC8gcXIuZ2V0KGssIGspO1xuICAgICAgICBmb3IgKGkgPSBrOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgWC5zZXQoaSwgaiwgWC5nZXQoaSwgaikgKyBzICogcXIuZ2V0KGksIGspKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGsgPSBuIC0gMTsgayA+PSAwOyBrLS0pIHtcbiAgICAgIGZvciAoaiA9IDA7IGogPCBjb3VudDsgaisrKSB7XG4gICAgICAgIFguc2V0KGssIGosIFguZ2V0KGssIGopIC8gdGhpcy5SZGlhZ1trXSk7XG4gICAgICB9XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgazsgaSsrKSB7XG4gICAgICAgIGZvciAoaiA9IDA7IGogPCBjb3VudDsgaisrKSB7XG4gICAgICAgICAgWC5zZXQoaSwgaiwgWC5nZXQoaSwgaikgLSBYLmdldChrLCBqKSAqIHFyLmdldChpLCBrKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gWC5zdWJNYXRyaXgoMCwgbiAtIDEsIDAsIGNvdW50IC0gMSk7XG4gIH1cblxuICBpc0Z1bGxSYW5rKCkge1xuICAgIGxldCBjb2x1bW5zID0gdGhpcy5RUi5jb2x1bW5zO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29sdW1uczsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5SZGlhZ1tpXSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZ2V0IHVwcGVyVHJpYW5ndWxhck1hdHJpeCgpIHtcbiAgICBsZXQgcXIgPSB0aGlzLlFSO1xuICAgIGxldCBuID0gcXIuY29sdW1ucztcbiAgICBsZXQgWCA9IG5ldyBNYXRyaXgobiwgbik7XG4gICAgbGV0IGksIGo7XG4gICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgZm9yIChqID0gMDsgaiA8IG47IGorKykge1xuICAgICAgICBpZiAoaSA8IGopIHtcbiAgICAgICAgICBYLnNldChpLCBqLCBxci5nZXQoaSwgaikpO1xuICAgICAgICB9IGVsc2UgaWYgKGkgPT09IGopIHtcbiAgICAgICAgICBYLnNldChpLCBqLCB0aGlzLlJkaWFnW2ldKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBYLnNldChpLCBqLCAwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gWDtcbiAgfVxuXG4gIGdldCBvcnRob2dvbmFsTWF0cml4KCkge1xuICAgIGxldCBxciA9IHRoaXMuUVI7XG4gICAgbGV0IHJvd3MgPSBxci5yb3dzO1xuICAgIGxldCBjb2x1bW5zID0gcXIuY29sdW1ucztcbiAgICBsZXQgWCA9IG5ldyBNYXRyaXgocm93cywgY29sdW1ucyk7XG4gICAgbGV0IGksIGosIGssIHM7XG5cbiAgICBmb3IgKGsgPSBjb2x1bW5zIC0gMTsgayA+PSAwOyBrLS0pIHtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgICAgWC5zZXQoaSwgaywgMCk7XG4gICAgICB9XG4gICAgICBYLnNldChrLCBrLCAxKTtcbiAgICAgIGZvciAoaiA9IGs7IGogPCBjb2x1bW5zOyBqKyspIHtcbiAgICAgICAgaWYgKHFyLmdldChrLCBrKSAhPT0gMCkge1xuICAgICAgICAgIHMgPSAwO1xuICAgICAgICAgIGZvciAoaSA9IGs7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgICAgICAgIHMgKz0gcXIuZ2V0KGksIGspICogWC5nZXQoaSwgaik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcyA9IC1zIC8gcXIuZ2V0KGssIGspO1xuXG4gICAgICAgICAgZm9yIChpID0gazsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgICAgICAgWC5zZXQoaSwgaiwgWC5nZXQoaSwgaikgKyBzICogcXIuZ2V0KGksIGspKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFg7XG4gIH1cbn1cbiIsImltcG9ydCBNYXRyaXggZnJvbSAnLi4vbWF0cml4JztcbmltcG9ydCBXcmFwcGVyTWF0cml4MkQgZnJvbSAnLi4vd3JhcC9XcmFwcGVyTWF0cml4MkQnO1xuXG5pbXBvcnQgeyBoeXBvdGVudXNlIH0gZnJvbSAnLi91dGlsJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2luZ3VsYXJWYWx1ZURlY29tcG9zaXRpb24ge1xuICBjb25zdHJ1Y3Rvcih2YWx1ZSwgb3B0aW9ucyA9IHt9KSB7XG4gICAgdmFsdWUgPSBXcmFwcGVyTWF0cml4MkQuY2hlY2tNYXRyaXgodmFsdWUpO1xuXG4gICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNYXRyaXggbXVzdCBiZSBub24tZW1wdHknKTtcbiAgICB9XG5cbiAgICBsZXQgbSA9IHZhbHVlLnJvd3M7XG4gICAgbGV0IG4gPSB2YWx1ZS5jb2x1bW5zO1xuXG4gICAgY29uc3Qge1xuICAgICAgY29tcHV0ZUxlZnRTaW5ndWxhclZlY3RvcnMgPSB0cnVlLFxuICAgICAgY29tcHV0ZVJpZ2h0U2luZ3VsYXJWZWN0b3JzID0gdHJ1ZSxcbiAgICAgIGF1dG9UcmFuc3Bvc2UgPSBmYWxzZSxcbiAgICB9ID0gb3B0aW9ucztcblxuICAgIGxldCB3YW50dSA9IEJvb2xlYW4oY29tcHV0ZUxlZnRTaW5ndWxhclZlY3RvcnMpO1xuICAgIGxldCB3YW50diA9IEJvb2xlYW4oY29tcHV0ZVJpZ2h0U2luZ3VsYXJWZWN0b3JzKTtcblxuICAgIGxldCBzd2FwcGVkID0gZmFsc2U7XG4gICAgbGV0IGE7XG4gICAgaWYgKG0gPCBuKSB7XG4gICAgICBpZiAoIWF1dG9UcmFuc3Bvc2UpIHtcbiAgICAgICAgYSA9IHZhbHVlLmNsb25lKCk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAnQ29tcHV0aW5nIFNWRCBvbiBhIG1hdHJpeCB3aXRoIG1vcmUgY29sdW1ucyB0aGFuIHJvd3MuIENvbnNpZGVyIGVuYWJsaW5nIGF1dG9UcmFuc3Bvc2UnLFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYSA9IHZhbHVlLnRyYW5zcG9zZSgpO1xuICAgICAgICBtID0gYS5yb3dzO1xuICAgICAgICBuID0gYS5jb2x1bW5zO1xuICAgICAgICBzd2FwcGVkID0gdHJ1ZTtcbiAgICAgICAgbGV0IGF1eCA9IHdhbnR1O1xuICAgICAgICB3YW50dSA9IHdhbnR2O1xuICAgICAgICB3YW50diA9IGF1eDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IHZhbHVlLmNsb25lKCk7XG4gICAgfVxuXG4gICAgbGV0IG51ID0gTWF0aC5taW4obSwgbik7XG4gICAgbGV0IG5pID0gTWF0aC5taW4obSArIDEsIG4pO1xuICAgIGxldCBzID0gbmV3IEZsb2F0NjRBcnJheShuaSk7XG4gICAgbGV0IFUgPSBuZXcgTWF0cml4KG0sIG51KTtcbiAgICBsZXQgViA9IG5ldyBNYXRyaXgobiwgbik7XG5cbiAgICBsZXQgZSA9IG5ldyBGbG9hdDY0QXJyYXkobik7XG4gICAgbGV0IHdvcmsgPSBuZXcgRmxvYXQ2NEFycmF5KG0pO1xuXG4gICAgbGV0IHNpID0gbmV3IEZsb2F0NjRBcnJheShuaSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuaTsgaSsrKSBzaVtpXSA9IGk7XG5cbiAgICBsZXQgbmN0ID0gTWF0aC5taW4obSAtIDEsIG4pO1xuICAgIGxldCBucnQgPSBNYXRoLm1heCgwLCBNYXRoLm1pbihuIC0gMiwgbSkpO1xuICAgIGxldCBtcmMgPSBNYXRoLm1heChuY3QsIG5ydCk7XG5cbiAgICBmb3IgKGxldCBrID0gMDsgayA8IG1yYzsgaysrKSB7XG4gICAgICBpZiAoayA8IG5jdCkge1xuICAgICAgICBzW2tdID0gMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IGs7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICBzW2tdID0gaHlwb3RlbnVzZShzW2tdLCBhLmdldChpLCBrKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNba10gIT09IDApIHtcbiAgICAgICAgICBpZiAoYS5nZXQoaywgaykgPCAwKSB7XG4gICAgICAgICAgICBzW2tdID0gLXNba107XG4gICAgICAgICAgfVxuICAgICAgICAgIGZvciAobGV0IGkgPSBrOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICBhLnNldChpLCBrLCBhLmdldChpLCBrKSAvIHNba10pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhLnNldChrLCBrLCBhLmdldChrLCBrKSArIDEpO1xuICAgICAgICB9XG4gICAgICAgIHNba10gPSAtc1trXTtcbiAgICAgIH1cblxuICAgICAgZm9yIChsZXQgaiA9IGsgKyAxOyBqIDwgbjsgaisrKSB7XG4gICAgICAgIGlmIChrIDwgbmN0ICYmIHNba10gIT09IDApIHtcbiAgICAgICAgICBsZXQgdCA9IDA7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IGs7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgIHQgKz0gYS5nZXQoaSwgaykgKiBhLmdldChpLCBqKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdCA9IC10IC8gYS5nZXQoaywgayk7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IGs7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgIGEuc2V0KGksIGosIGEuZ2V0KGksIGopICsgdCAqIGEuZ2V0KGksIGspKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZVtqXSA9IGEuZ2V0KGssIGopO1xuICAgICAgfVxuXG4gICAgICBpZiAod2FudHUgJiYgayA8IG5jdCkge1xuICAgICAgICBmb3IgKGxldCBpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICAgIFUuc2V0KGksIGssIGEuZ2V0KGksIGspKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoayA8IG5ydCkge1xuICAgICAgICBlW2tdID0gMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IGsgKyAxOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgZVtrXSA9IGh5cG90ZW51c2UoZVtrXSwgZVtpXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVba10gIT09IDApIHtcbiAgICAgICAgICBpZiAoZVtrICsgMV0gPCAwKSB7XG4gICAgICAgICAgICBlW2tdID0gMCAtIGVba107XG4gICAgICAgICAgfVxuICAgICAgICAgIGZvciAobGV0IGkgPSBrICsgMTsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgZVtpXSAvPSBlW2tdO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlW2sgKyAxXSArPSAxO1xuICAgICAgICB9XG4gICAgICAgIGVba10gPSAtZVtrXTtcbiAgICAgICAgaWYgKGsgKyAxIDwgbSAmJiBlW2tdICE9PSAwKSB7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IGsgKyAxOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICB3b3JrW2ldID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yIChsZXQgaSA9IGsgKyAxOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gayArIDE7IGogPCBuOyBqKyspIHtcbiAgICAgICAgICAgICAgd29ya1tpXSArPSBlW2pdICogYS5nZXQoaSwgaik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGZvciAobGV0IGogPSBrICsgMTsgaiA8IG47IGorKykge1xuICAgICAgICAgICAgbGV0IHQgPSAtZVtqXSAvIGVbayArIDFdO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IGsgKyAxOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICAgIGEuc2V0KGksIGosIGEuZ2V0KGksIGopICsgdCAqIHdvcmtbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAod2FudHYpIHtcbiAgICAgICAgICBmb3IgKGxldCBpID0gayArIDE7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIFYuc2V0KGksIGssIGVbaV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBwID0gTWF0aC5taW4obiwgbSArIDEpO1xuICAgIGlmIChuY3QgPCBuKSB7XG4gICAgICBzW25jdF0gPSBhLmdldChuY3QsIG5jdCk7XG4gICAgfVxuICAgIGlmIChtIDwgcCkge1xuICAgICAgc1twIC0gMV0gPSAwO1xuICAgIH1cbiAgICBpZiAobnJ0ICsgMSA8IHApIHtcbiAgICAgIGVbbnJ0XSA9IGEuZ2V0KG5ydCwgcCAtIDEpO1xuICAgIH1cbiAgICBlW3AgLSAxXSA9IDA7XG5cbiAgICBpZiAod2FudHUpIHtcbiAgICAgIGZvciAobGV0IGogPSBuY3Q7IGogPCBudTsgaisrKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgVS5zZXQoaSwgaiwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgVS5zZXQoaiwgaiwgMSk7XG4gICAgICB9XG4gICAgICBmb3IgKGxldCBrID0gbmN0IC0gMTsgayA+PSAwOyBrLS0pIHtcbiAgICAgICAgaWYgKHNba10gIT09IDApIHtcbiAgICAgICAgICBmb3IgKGxldCBqID0gayArIDE7IGogPCBudTsgaisrKSB7XG4gICAgICAgICAgICBsZXQgdCA9IDA7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgICB0ICs9IFUuZ2V0KGksIGspICogVS5nZXQoaSwgaik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0ID0gLXQgLyBVLmdldChrLCBrKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBrOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICAgIFUuc2V0KGksIGosIFUuZ2V0KGksIGopICsgdCAqIFUuZ2V0KGksIGspKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yIChsZXQgaSA9IGs7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgIFUuc2V0KGksIGssIC1VLmdldChpLCBrKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIFUuc2V0KGssIGssIDEgKyBVLmdldChrLCBrKSk7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrIC0gMTsgaSsrKSB7XG4gICAgICAgICAgICBVLnNldChpLCBrLCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgIFUuc2V0KGksIGssIDApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBVLnNldChrLCBrLCAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh3YW50dikge1xuICAgICAgZm9yIChsZXQgayA9IG4gLSAxOyBrID49IDA7IGstLSkge1xuICAgICAgICBpZiAoayA8IG5ydCAmJiBlW2tdICE9PSAwKSB7XG4gICAgICAgICAgZm9yIChsZXQgaiA9IGsgKyAxOyBqIDwgbjsgaisrKSB7XG4gICAgICAgICAgICBsZXQgdCA9IDA7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gayArIDE7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgICAgdCArPSBWLmdldChpLCBrKSAqIFYuZ2V0KGksIGopO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdCA9IC10IC8gVi5nZXQoayArIDEsIGspO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IGsgKyAxOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICAgIFYuc2V0KGksIGosIFYuZ2V0KGksIGopICsgdCAqIFYuZ2V0KGksIGspKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICBWLnNldChpLCBrLCAwKTtcbiAgICAgICAgfVxuICAgICAgICBWLnNldChrLCBrLCAxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgcHAgPSBwIC0gMTtcbiAgICBsZXQgaXRlciA9IDA7XG4gICAgbGV0IGVwcyA9IE51bWJlci5FUFNJTE9OO1xuICAgIHdoaWxlIChwID4gMCkge1xuICAgICAgbGV0IGssIGthc2U7XG4gICAgICBmb3IgKGsgPSBwIC0gMjsgayA+PSAtMTsgay0tKSB7XG4gICAgICAgIGlmIChrID09PSAtMSkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFscGhhID1cbiAgICAgICAgICBOdW1iZXIuTUlOX1ZBTFVFICsgZXBzICogTWF0aC5hYnMoc1trXSArIE1hdGguYWJzKHNbayArIDFdKSk7XG4gICAgICAgIGlmIChNYXRoLmFicyhlW2tdKSA8PSBhbHBoYSB8fCBOdW1iZXIuaXNOYU4oZVtrXSkpIHtcbiAgICAgICAgICBlW2tdID0gMDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGsgPT09IHAgLSAyKSB7XG4gICAgICAgIGthc2UgPSA0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGtzO1xuICAgICAgICBmb3IgKGtzID0gcCAtIDE7IGtzID49IGs7IGtzLS0pIHtcbiAgICAgICAgICBpZiAoa3MgPT09IGspIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgdCA9XG4gICAgICAgICAgICAoa3MgIT09IHAgPyBNYXRoLmFicyhlW2tzXSkgOiAwKSArXG4gICAgICAgICAgICAoa3MgIT09IGsgKyAxID8gTWF0aC5hYnMoZVtrcyAtIDFdKSA6IDApO1xuICAgICAgICAgIGlmIChNYXRoLmFicyhzW2tzXSkgPD0gZXBzICogdCkge1xuICAgICAgICAgICAgc1trc10gPSAwO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChrcyA9PT0gaykge1xuICAgICAgICAgIGthc2UgPSAzO1xuICAgICAgICB9IGVsc2UgaWYgKGtzID09PSBwIC0gMSkge1xuICAgICAgICAgIGthc2UgPSAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGthc2UgPSAyO1xuICAgICAgICAgIGsgPSBrcztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBrKys7XG5cbiAgICAgIHN3aXRjaCAoa2FzZSkge1xuICAgICAgICBjYXNlIDE6IHtcbiAgICAgICAgICBsZXQgZiA9IGVbcCAtIDJdO1xuICAgICAgICAgIGVbcCAtIDJdID0gMDtcbiAgICAgICAgICBmb3IgKGxldCBqID0gcCAtIDI7IGogPj0gazsgai0tKSB7XG4gICAgICAgICAgICBsZXQgdCA9IGh5cG90ZW51c2Uoc1tqXSwgZik7XG4gICAgICAgICAgICBsZXQgY3MgPSBzW2pdIC8gdDtcbiAgICAgICAgICAgIGxldCBzbiA9IGYgLyB0O1xuICAgICAgICAgICAgc1tqXSA9IHQ7XG4gICAgICAgICAgICBpZiAoaiAhPT0gaykge1xuICAgICAgICAgICAgICBmID0gLXNuICogZVtqIC0gMV07XG4gICAgICAgICAgICAgIGVbaiAtIDFdID0gY3MgKiBlW2ogLSAxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh3YW50dikge1xuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgICAgIHQgPSBjcyAqIFYuZ2V0KGksIGopICsgc24gKiBWLmdldChpLCBwIC0gMSk7XG4gICAgICAgICAgICAgICAgVi5zZXQoaSwgcCAtIDEsIC1zbiAqIFYuZ2V0KGksIGopICsgY3MgKiBWLmdldChpLCBwIC0gMSkpO1xuICAgICAgICAgICAgICAgIFYuc2V0KGksIGosIHQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMjoge1xuICAgICAgICAgIGxldCBmID0gZVtrIC0gMV07XG4gICAgICAgICAgZVtrIC0gMV0gPSAwO1xuICAgICAgICAgIGZvciAobGV0IGogPSBrOyBqIDwgcDsgaisrKSB7XG4gICAgICAgICAgICBsZXQgdCA9IGh5cG90ZW51c2Uoc1tqXSwgZik7XG4gICAgICAgICAgICBsZXQgY3MgPSBzW2pdIC8gdDtcbiAgICAgICAgICAgIGxldCBzbiA9IGYgLyB0O1xuICAgICAgICAgICAgc1tqXSA9IHQ7XG4gICAgICAgICAgICBmID0gLXNuICogZVtqXTtcbiAgICAgICAgICAgIGVbal0gPSBjcyAqIGVbal07XG4gICAgICAgICAgICBpZiAod2FudHUpIHtcbiAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0ID0gY3MgKiBVLmdldChpLCBqKSArIHNuICogVS5nZXQoaSwgayAtIDEpO1xuICAgICAgICAgICAgICAgIFUuc2V0KGksIGsgLSAxLCAtc24gKiBVLmdldChpLCBqKSArIGNzICogVS5nZXQoaSwgayAtIDEpKTtcbiAgICAgICAgICAgICAgICBVLnNldChpLCBqLCB0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIDM6IHtcbiAgICAgICAgICBjb25zdCBzY2FsZSA9IE1hdGgubWF4KFxuICAgICAgICAgICAgTWF0aC5hYnMoc1twIC0gMV0pLFxuICAgICAgICAgICAgTWF0aC5hYnMoc1twIC0gMl0pLFxuICAgICAgICAgICAgTWF0aC5hYnMoZVtwIC0gMl0pLFxuICAgICAgICAgICAgTWF0aC5hYnMoc1trXSksXG4gICAgICAgICAgICBNYXRoLmFicyhlW2tdKSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnN0IHNwID0gc1twIC0gMV0gLyBzY2FsZTtcbiAgICAgICAgICBjb25zdCBzcG0xID0gc1twIC0gMl0gLyBzY2FsZTtcbiAgICAgICAgICBjb25zdCBlcG0xID0gZVtwIC0gMl0gLyBzY2FsZTtcbiAgICAgICAgICBjb25zdCBzayA9IHNba10gLyBzY2FsZTtcbiAgICAgICAgICBjb25zdCBlayA9IGVba10gLyBzY2FsZTtcbiAgICAgICAgICBjb25zdCBiID0gKChzcG0xICsgc3ApICogKHNwbTEgLSBzcCkgKyBlcG0xICogZXBtMSkgLyAyO1xuICAgICAgICAgIGNvbnN0IGMgPSBzcCAqIGVwbTEgKiAoc3AgKiBlcG0xKTtcbiAgICAgICAgICBsZXQgc2hpZnQgPSAwO1xuICAgICAgICAgIGlmIChiICE9PSAwIHx8IGMgIT09IDApIHtcbiAgICAgICAgICAgIGlmIChiIDwgMCkge1xuICAgICAgICAgICAgICBzaGlmdCA9IDAgLSBNYXRoLnNxcnQoYiAqIGIgKyBjKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNoaWZ0ID0gTWF0aC5zcXJ0KGIgKiBiICsgYyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzaGlmdCA9IGMgLyAoYiArIHNoaWZ0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGV0IGYgPSAoc2sgKyBzcCkgKiAoc2sgLSBzcCkgKyBzaGlmdDtcbiAgICAgICAgICBsZXQgZyA9IHNrICogZWs7XG4gICAgICAgICAgZm9yIChsZXQgaiA9IGs7IGogPCBwIC0gMTsgaisrKSB7XG4gICAgICAgICAgICBsZXQgdCA9IGh5cG90ZW51c2UoZiwgZyk7XG4gICAgICAgICAgICBpZiAodCA9PT0gMCkgdCA9IE51bWJlci5NSU5fVkFMVUU7XG4gICAgICAgICAgICBsZXQgY3MgPSBmIC8gdDtcbiAgICAgICAgICAgIGxldCBzbiA9IGcgLyB0O1xuICAgICAgICAgICAgaWYgKGogIT09IGspIHtcbiAgICAgICAgICAgICAgZVtqIC0gMV0gPSB0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZiA9IGNzICogc1tqXSArIHNuICogZVtqXTtcbiAgICAgICAgICAgIGVbal0gPSBjcyAqIGVbal0gLSBzbiAqIHNbal07XG4gICAgICAgICAgICBnID0gc24gKiBzW2ogKyAxXTtcbiAgICAgICAgICAgIHNbaiArIDFdID0gY3MgKiBzW2ogKyAxXTtcbiAgICAgICAgICAgIGlmICh3YW50dikge1xuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgICAgIHQgPSBjcyAqIFYuZ2V0KGksIGopICsgc24gKiBWLmdldChpLCBqICsgMSk7XG4gICAgICAgICAgICAgICAgVi5zZXQoaSwgaiArIDEsIC1zbiAqIFYuZ2V0KGksIGopICsgY3MgKiBWLmdldChpLCBqICsgMSkpO1xuICAgICAgICAgICAgICAgIFYuc2V0KGksIGosIHQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0ID0gaHlwb3RlbnVzZShmLCBnKTtcbiAgICAgICAgICAgIGlmICh0ID09PSAwKSB0ID0gTnVtYmVyLk1JTl9WQUxVRTtcbiAgICAgICAgICAgIGNzID0gZiAvIHQ7XG4gICAgICAgICAgICBzbiA9IGcgLyB0O1xuICAgICAgICAgICAgc1tqXSA9IHQ7XG4gICAgICAgICAgICBmID0gY3MgKiBlW2pdICsgc24gKiBzW2ogKyAxXTtcbiAgICAgICAgICAgIHNbaiArIDFdID0gLXNuICogZVtqXSArIGNzICogc1tqICsgMV07XG4gICAgICAgICAgICBnID0gc24gKiBlW2ogKyAxXTtcbiAgICAgICAgICAgIGVbaiArIDFdID0gY3MgKiBlW2ogKyAxXTtcbiAgICAgICAgICAgIGlmICh3YW50dSAmJiBqIDwgbSAtIDEpIHtcbiAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0ID0gY3MgKiBVLmdldChpLCBqKSArIHNuICogVS5nZXQoaSwgaiArIDEpO1xuICAgICAgICAgICAgICAgIFUuc2V0KGksIGogKyAxLCAtc24gKiBVLmdldChpLCBqKSArIGNzICogVS5nZXQoaSwgaiArIDEpKTtcbiAgICAgICAgICAgICAgICBVLnNldChpLCBqLCB0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBlW3AgLSAyXSA9IGY7XG4gICAgICAgICAgaXRlciA9IGl0ZXIgKyAxO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgNDoge1xuICAgICAgICAgIGlmIChzW2tdIDw9IDApIHtcbiAgICAgICAgICAgIHNba10gPSBzW2tdIDwgMCA/IC1zW2tdIDogMDtcbiAgICAgICAgICAgIGlmICh3YW50dikge1xuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBwcDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgVi5zZXQoaSwgaywgLVYuZ2V0KGksIGspKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB3aGlsZSAoayA8IHBwKSB7XG4gICAgICAgICAgICBpZiAoc1trXSA+PSBzW2sgKyAxXSkge1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCB0ID0gc1trXTtcbiAgICAgICAgICAgIHNba10gPSBzW2sgKyAxXTtcbiAgICAgICAgICAgIHNbayArIDFdID0gdDtcbiAgICAgICAgICAgIGlmICh3YW50diAmJiBrIDwgbiAtIDEpIHtcbiAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0ID0gVi5nZXQoaSwgayArIDEpO1xuICAgICAgICAgICAgICAgIFYuc2V0KGksIGsgKyAxLCBWLmdldChpLCBrKSk7XG4gICAgICAgICAgICAgICAgVi5zZXQoaSwgaywgdCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh3YW50dSAmJiBrIDwgbSAtIDEpIHtcbiAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0ID0gVS5nZXQoaSwgayArIDEpO1xuICAgICAgICAgICAgICAgIFUuc2V0KGksIGsgKyAxLCBVLmdldChpLCBrKSk7XG4gICAgICAgICAgICAgICAgVS5zZXQoaSwgaywgdCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGsrKztcbiAgICAgICAgICB9XG4gICAgICAgICAgaXRlciA9IDA7XG4gICAgICAgICAgcC0tO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vIG5vIGRlZmF1bHRcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3dhcHBlZCkge1xuICAgICAgbGV0IHRtcCA9IFY7XG4gICAgICBWID0gVTtcbiAgICAgIFUgPSB0bXA7XG4gICAgfVxuXG4gICAgdGhpcy5tID0gbTtcbiAgICB0aGlzLm4gPSBuO1xuICAgIHRoaXMucyA9IHM7XG4gICAgdGhpcy5VID0gVTtcbiAgICB0aGlzLlYgPSBWO1xuICB9XG5cbiAgc29sdmUodmFsdWUpIHtcbiAgICBsZXQgWSA9IHZhbHVlO1xuICAgIGxldCBlID0gdGhpcy50aHJlc2hvbGQ7XG4gICAgbGV0IHNjb2xzID0gdGhpcy5zLmxlbmd0aDtcbiAgICBsZXQgTHMgPSBNYXRyaXguemVyb3Moc2NvbHMsIHNjb2xzKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2NvbHM7IGkrKykge1xuICAgICAgaWYgKE1hdGguYWJzKHRoaXMuc1tpXSkgPD0gZSkge1xuICAgICAgICBMcy5zZXQoaSwgaSwgMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBMcy5zZXQoaSwgaSwgMSAvIHRoaXMuc1tpXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IFUgPSB0aGlzLlU7XG4gICAgbGV0IFYgPSB0aGlzLnJpZ2h0U2luZ3VsYXJWZWN0b3JzO1xuXG4gICAgbGV0IFZMID0gVi5tbXVsKExzKTtcbiAgICBsZXQgdnJvd3MgPSBWLnJvd3M7XG4gICAgbGV0IHVyb3dzID0gVS5yb3dzO1xuICAgIGxldCBWTFUgPSBNYXRyaXguemVyb3ModnJvd3MsIHVyb3dzKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB1cm93czsgaisrKSB7XG4gICAgICAgIGxldCBzdW0gPSAwO1xuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IHNjb2xzOyBrKyspIHtcbiAgICAgICAgICBzdW0gKz0gVkwuZ2V0KGksIGspICogVS5nZXQoaiwgayk7XG4gICAgICAgIH1cbiAgICAgICAgVkxVLnNldChpLCBqLCBzdW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBWTFUubW11bChZKTtcbiAgfVxuXG4gIHNvbHZlRm9yRGlhZ29uYWwodmFsdWUpIHtcbiAgICByZXR1cm4gdGhpcy5zb2x2ZShNYXRyaXguZGlhZyh2YWx1ZSkpO1xuICB9XG5cbiAgaW52ZXJzZSgpIHtcbiAgICBsZXQgViA9IHRoaXMuVjtcbiAgICBsZXQgZSA9IHRoaXMudGhyZXNob2xkO1xuICAgIGxldCB2cm93cyA9IFYucm93cztcbiAgICBsZXQgdmNvbHMgPSBWLmNvbHVtbnM7XG4gICAgbGV0IFggPSBuZXcgTWF0cml4KHZyb3dzLCB0aGlzLnMubGVuZ3RoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB2Y29sczsgaisrKSB7XG4gICAgICAgIGlmIChNYXRoLmFicyh0aGlzLnNbal0pID4gZSkge1xuICAgICAgICAgIFguc2V0KGksIGosIFYuZ2V0KGksIGopIC8gdGhpcy5zW2pdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBVID0gdGhpcy5VO1xuXG4gICAgbGV0IHVyb3dzID0gVS5yb3dzO1xuICAgIGxldCB1Y29scyA9IFUuY29sdW1ucztcbiAgICBsZXQgWSA9IG5ldyBNYXRyaXgodnJvd3MsIHVyb3dzKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB1cm93czsgaisrKSB7XG4gICAgICAgIGxldCBzdW0gPSAwO1xuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IHVjb2xzOyBrKyspIHtcbiAgICAgICAgICBzdW0gKz0gWC5nZXQoaSwgaykgKiBVLmdldChqLCBrKTtcbiAgICAgICAgfVxuICAgICAgICBZLnNldChpLCBqLCBzdW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBZO1xuICB9XG5cbiAgZ2V0IGNvbmRpdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zWzBdIC8gdGhpcy5zW01hdGgubWluKHRoaXMubSwgdGhpcy5uKSAtIDFdO1xuICB9XG5cbiAgZ2V0IG5vcm0yKCkge1xuICAgIHJldHVybiB0aGlzLnNbMF07XG4gIH1cblxuICBnZXQgcmFuaygpIHtcbiAgICBsZXQgdG9sID0gTWF0aC5tYXgodGhpcy5tLCB0aGlzLm4pICogdGhpcy5zWzBdICogTnVtYmVyLkVQU0lMT047XG4gICAgbGV0IHIgPSAwO1xuICAgIGxldCBzID0gdGhpcy5zO1xuICAgIGZvciAobGV0IGkgPSAwLCBpaSA9IHMubGVuZ3RoOyBpIDwgaWk7IGkrKykge1xuICAgICAgaWYgKHNbaV0gPiB0b2wpIHtcbiAgICAgICAgcisrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuXG4gIGdldCBkaWFnb25hbCgpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnMpO1xuICB9XG5cbiAgZ2V0IHRocmVzaG9sZCgpIHtcbiAgICByZXR1cm4gKE51bWJlci5FUFNJTE9OIC8gMikgKiBNYXRoLm1heCh0aGlzLm0sIHRoaXMubikgKiB0aGlzLnNbMF07XG4gIH1cblxuICBnZXQgbGVmdFNpbmd1bGFyVmVjdG9ycygpIHtcbiAgICByZXR1cm4gdGhpcy5VO1xuICB9XG5cbiAgZ2V0IHJpZ2h0U2luZ3VsYXJWZWN0b3JzKCkge1xuICAgIHJldHVybiB0aGlzLlY7XG4gIH1cblxuICBnZXQgZGlhZ29uYWxNYXRyaXgoKSB7XG4gICAgcmV0dXJuIE1hdHJpeC5kaWFnKHRoaXMucyk7XG4gIH1cbn1cbiIsImltcG9ydCB7IGludmVyc2UsIE1hdHJpeCB9IGZyb20gJ21sLW1hdHJpeCc7XG5cbi8qKlxuICogRGlmZmVyZW5jZSBvZiB0aGUgbWF0cml4IGZ1bmN0aW9uIG92ZXIgdGhlIHBhcmFtZXRlcnNcbiAqIEBpZ25vcmVcbiAqIEBwYXJhbSB7e3g6QXJyYXk8bnVtYmVyPiwgeTpBcnJheTxudW1iZXI+fX0gZGF0YSAtIEFycmF5IG9mIHBvaW50cyB0byBmaXQgaW4gdGhlIGZvcm1hdCBbeDEsIHgyLCAuLi4gXSwgW3kxLCB5MiwgLi4uIF1cbiAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gZXZhbHVhdGVkRGF0YSAtIEFycmF5IG9mIHByZXZpb3VzIGV2YWx1YXRlZCBmdW5jdGlvbiB2YWx1ZXNcbiAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcGFyYW1zIC0gQXJyYXkgb2YgcHJldmlvdXMgcGFyYW1ldGVyIHZhbHVlc1xuICogQHBhcmFtIHtudW1iZXJ9IGdyYWRpZW50RGlmZmVyZW5jZSAtIEFkanVzdG1lbnQgZm9yIGRlY3JlYXNlIHRoZSBkYW1waW5nIHBhcmFtZXRlclxuICogQHBhcmFtIHtmdW5jdGlvbn0gcGFyYW1GdW5jdGlvbiAtIFRoZSBwYXJhbWV0ZXJzIGFuZCByZXR1cm5zIGEgZnVuY3Rpb24gd2l0aCB0aGUgaW5kZXBlbmRlbnQgdmFyaWFibGUgYXMgYSBwYXJhbWV0ZXJcbiAqIEByZXR1cm4ge01hdHJpeH1cbiAqL1xuZnVuY3Rpb24gZ3JhZGllbnRGdW5jdGlvbihcbiAgZGF0YSxcbiAgZXZhbHVhdGVkRGF0YSxcbiAgcGFyYW1zLFxuICBncmFkaWVudERpZmZlcmVuY2UsXG4gIHBhcmFtRnVuY3Rpb24sXG4pIHtcbiAgY29uc3QgbiA9IHBhcmFtcy5sZW5ndGg7XG4gIGNvbnN0IG0gPSBkYXRhLngubGVuZ3RoO1xuXG4gIGxldCBhbnMgPSBuZXcgQXJyYXkobik7XG5cbiAgZm9yIChsZXQgcGFyYW0gPSAwOyBwYXJhbSA8IG47IHBhcmFtKyspIHtcbiAgICBhbnNbcGFyYW1dID0gbmV3IEFycmF5KG0pO1xuICAgIGxldCBhdXhQYXJhbXMgPSBwYXJhbXMuc2xpY2UoKTtcbiAgICBhdXhQYXJhbXNbcGFyYW1dICs9IGdyYWRpZW50RGlmZmVyZW5jZTtcbiAgICBsZXQgZnVuY1BhcmFtID0gcGFyYW1GdW5jdGlvbihhdXhQYXJhbXMpO1xuXG4gICAgZm9yIChsZXQgcG9pbnQgPSAwOyBwb2ludCA8IG07IHBvaW50KyspIHtcbiAgICAgIGFuc1twYXJhbV1bcG9pbnRdID0gZXZhbHVhdGVkRGF0YVtwb2ludF0gLSBmdW5jUGFyYW0oZGF0YS54W3BvaW50XSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBuZXcgTWF0cml4KGFucyk7XG59XG5cbi8qKlxuICogTWF0cml4IGZ1bmN0aW9uIG92ZXIgdGhlIHNhbXBsZXNcbiAqIEBpZ25vcmVcbiAqIEBwYXJhbSB7e3g6QXJyYXk8bnVtYmVyPiwgeTpBcnJheTxudW1iZXI+fX0gZGF0YSAtIEFycmF5IG9mIHBvaW50cyB0byBmaXQgaW4gdGhlIGZvcm1hdCBbeDEsIHgyLCAuLi4gXSwgW3kxLCB5MiwgLi4uIF1cbiAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gZXZhbHVhdGVkRGF0YSAtIEFycmF5IG9mIHByZXZpb3VzIGV2YWx1YXRlZCBmdW5jdGlvbiB2YWx1ZXNcbiAqIEByZXR1cm4ge01hdHJpeH1cbiAqL1xuZnVuY3Rpb24gbWF0cml4RnVuY3Rpb24oZGF0YSwgZXZhbHVhdGVkRGF0YSkge1xuICBjb25zdCBtID0gZGF0YS54Lmxlbmd0aDtcblxuICBsZXQgYW5zID0gbmV3IEFycmF5KG0pO1xuXG4gIGZvciAobGV0IHBvaW50ID0gMDsgcG9pbnQgPCBtOyBwb2ludCsrKSB7XG4gICAgYW5zW3BvaW50XSA9IFtkYXRhLnlbcG9pbnRdIC0gZXZhbHVhdGVkRGF0YVtwb2ludF1dO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBNYXRyaXgoYW5zKTtcbn1cblxuLyoqXG4gKiBJdGVyYXRpb24gZm9yIExldmVuYmVyZy1NYXJxdWFyZHRcbiAqIEBpZ25vcmVcbiAqIEBwYXJhbSB7e3g6QXJyYXk8bnVtYmVyPiwgeTpBcnJheTxudW1iZXI+fX0gZGF0YSAtIEFycmF5IG9mIHBvaW50cyB0byBmaXQgaW4gdGhlIGZvcm1hdCBbeDEsIHgyLCAuLi4gXSwgW3kxLCB5MiwgLi4uIF1cbiAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcGFyYW1zIC0gQXJyYXkgb2YgcHJldmlvdXMgcGFyYW1ldGVyIHZhbHVlc1xuICogQHBhcmFtIHtudW1iZXJ9IGRhbXBpbmcgLSBMZXZlbmJlcmctTWFycXVhcmR0IHBhcmFtZXRlclxuICogQHBhcmFtIHtudW1iZXJ9IGdyYWRpZW50RGlmZmVyZW5jZSAtIEFkanVzdG1lbnQgZm9yIGRlY3JlYXNlIHRoZSBkYW1waW5nIHBhcmFtZXRlclxuICogQHBhcmFtIHtmdW5jdGlvbn0gcGFyYW1ldGVyaXplZEZ1bmN0aW9uIC0gVGhlIHBhcmFtZXRlcnMgYW5kIHJldHVybnMgYSBmdW5jdGlvbiB3aXRoIHRoZSBpbmRlcGVuZGVudCB2YXJpYWJsZSBhcyBhIHBhcmFtZXRlclxuICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RlcChcbiAgZGF0YSxcbiAgcGFyYW1zLFxuICBkYW1waW5nLFxuICBncmFkaWVudERpZmZlcmVuY2UsXG4gIHBhcmFtZXRlcml6ZWRGdW5jdGlvbixcbikge1xuICBsZXQgdmFsdWUgPSBkYW1waW5nICogZ3JhZGllbnREaWZmZXJlbmNlICogZ3JhZGllbnREaWZmZXJlbmNlO1xuICBsZXQgaWRlbnRpdHkgPSBNYXRyaXguZXllKHBhcmFtcy5sZW5ndGgsIHBhcmFtcy5sZW5ndGgsIHZhbHVlKTtcblxuICBjb25zdCBmdW5jID0gcGFyYW1ldGVyaXplZEZ1bmN0aW9uKHBhcmFtcyk7XG5cbiAgbGV0IGV2YWx1YXRlZERhdGEgPSBuZXcgRmxvYXQ2NEFycmF5KGRhdGEueC5sZW5ndGgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEueC5sZW5ndGg7IGkrKykge1xuICAgIGV2YWx1YXRlZERhdGFbaV0gPSBmdW5jKGRhdGEueFtpXSk7XG4gIH1cblxuICBsZXQgZ3JhZGllbnRGdW5jID0gZ3JhZGllbnRGdW5jdGlvbihcbiAgICBkYXRhLFxuICAgIGV2YWx1YXRlZERhdGEsXG4gICAgcGFyYW1zLFxuICAgIGdyYWRpZW50RGlmZmVyZW5jZSxcbiAgICBwYXJhbWV0ZXJpemVkRnVuY3Rpb24sXG4gICk7XG4gIGxldCBtYXRyaXhGdW5jID0gbWF0cml4RnVuY3Rpb24oZGF0YSwgZXZhbHVhdGVkRGF0YSk7XG4gIGxldCBpbnZlcnNlTWF0cml4ID0gaW52ZXJzZShcbiAgICBpZGVudGl0eS5hZGQoZ3JhZGllbnRGdW5jLm1tdWwoZ3JhZGllbnRGdW5jLnRyYW5zcG9zZSgpKSksXG4gICk7XG5cbiAgcGFyYW1zID0gbmV3IE1hdHJpeChbcGFyYW1zXSk7XG4gIHBhcmFtcyA9IHBhcmFtcy5zdWIoXG4gICAgaW52ZXJzZU1hdHJpeFxuICAgICAgLm1tdWwoZ3JhZGllbnRGdW5jKVxuICAgICAgLm1tdWwobWF0cml4RnVuYylcbiAgICAgIC5tdWwoZ3JhZGllbnREaWZmZXJlbmNlKVxuICAgICAgLnRyYW5zcG9zZSgpLFxuICApO1xuXG4gIHJldHVybiBwYXJhbXMudG8xREFycmF5KCk7XG59XG4iLCJpbXBvcnQgTHVEZWNvbXBvc2l0aW9uIGZyb20gJy4vZGMvbHUnO1xuaW1wb3J0IFFyRGVjb21wb3NpdGlvbiBmcm9tICcuL2RjL3FyJztcbmltcG9ydCBTaW5ndWxhclZhbHVlRGVjb21wb3NpdGlvbiBmcm9tICcuL2RjL3N2ZCc7XG5pbXBvcnQgTWF0cml4IGZyb20gJy4vbWF0cml4JztcbmltcG9ydCBXcmFwcGVyTWF0cml4MkQgZnJvbSAnLi93cmFwL1dyYXBwZXJNYXRyaXgyRCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZlcnNlKG1hdHJpeCwgdXNlU1ZEID0gZmFsc2UpIHtcbiAgbWF0cml4ID0gV3JhcHBlck1hdHJpeDJELmNoZWNrTWF0cml4KG1hdHJpeCk7XG4gIGlmICh1c2VTVkQpIHtcbiAgICByZXR1cm4gbmV3IFNpbmd1bGFyVmFsdWVEZWNvbXBvc2l0aW9uKG1hdHJpeCkuaW52ZXJzZSgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBzb2x2ZShtYXRyaXgsIE1hdHJpeC5leWUobWF0cml4LnJvd3MpKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc29sdmUobGVmdEhhbmRTaWRlLCByaWdodEhhbmRTaWRlLCB1c2VTVkQgPSBmYWxzZSkge1xuICBsZWZ0SGFuZFNpZGUgPSBXcmFwcGVyTWF0cml4MkQuY2hlY2tNYXRyaXgobGVmdEhhbmRTaWRlKTtcbiAgcmlnaHRIYW5kU2lkZSA9IFdyYXBwZXJNYXRyaXgyRC5jaGVja01hdHJpeChyaWdodEhhbmRTaWRlKTtcbiAgaWYgKHVzZVNWRCkge1xuICAgIHJldHVybiBuZXcgU2luZ3VsYXJWYWx1ZURlY29tcG9zaXRpb24obGVmdEhhbmRTaWRlKS5zb2x2ZShyaWdodEhhbmRTaWRlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbGVmdEhhbmRTaWRlLmlzU3F1YXJlKClcbiAgICAgID8gbmV3IEx1RGVjb21wb3NpdGlvbihsZWZ0SGFuZFNpZGUpLnNvbHZlKHJpZ2h0SGFuZFNpZGUpXG4gICAgICA6IG5ldyBRckRlY29tcG9zaXRpb24obGVmdEhhbmRTaWRlKS5zb2x2ZShyaWdodEhhbmRTaWRlKTtcbiAgfVxufVxuIiwiaW1wb3J0IGlzQXJyYXkgZnJvbSAnaXMtYW55LWFycmF5JztcblxuaW1wb3J0IGVycm9yQ2FsY3VsYXRpb24gZnJvbSAnLi9lcnJvckNhbGN1bGF0aW9uJztcbmltcG9ydCBzdGVwIGZyb20gJy4vc3RlcCc7XG5cbi8qKlxuICogQ3VydmUgZml0dGluZyBhbGdvcml0aG1cbiAqIEBwYXJhbSB7e3g6QXJyYXk8bnVtYmVyPiwgeTpBcnJheTxudW1iZXI+fX0gZGF0YSAtIEFycmF5IG9mIHBvaW50cyB0byBmaXQgaW4gdGhlIGZvcm1hdCBbeDEsIHgyLCAuLi4gXSwgW3kxLCB5MiwgLi4uIF1cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHBhcmFtZXRlcml6ZWRGdW5jdGlvbiAtIFRoZSBwYXJhbWV0ZXJzIGFuZCByZXR1cm5zIGEgZnVuY3Rpb24gd2l0aCB0aGUgaW5kZXBlbmRlbnQgdmFyaWFibGUgYXMgYSBwYXJhbWV0ZXJcbiAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc10gLSBPcHRpb25zIG9iamVjdFxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLmRhbXBpbmddIC0gTGV2ZW5iZXJnLU1hcnF1YXJkdCBwYXJhbWV0ZXJcbiAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5ncmFkaWVudERpZmZlcmVuY2UgPSAxMGUtMl0gLSBBZGp1c3RtZW50IGZvciBkZWNyZWFzZSB0aGUgZGFtcGluZyBwYXJhbWV0ZXJcbiAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gW29wdGlvbnMubWluVmFsdWVzXSAtIE1pbmltdW0gYWxsb3dlZCB2YWx1ZXMgZm9yIHBhcmFtZXRlcnNcbiAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gW29wdGlvbnMubWF4VmFsdWVzXSAtIE1heGltdW0gYWxsb3dlZCB2YWx1ZXMgZm9yIHBhcmFtZXRlcnNcbiAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gW29wdGlvbnMuaW5pdGlhbFZhbHVlc10gLSBBcnJheSBvZiBpbml0aWFsIHBhcmFtZXRlciB2YWx1ZXNcbiAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5tYXhJdGVyYXRpb25zID0gMTAwXSAtIE1heGltdW0gb2YgYWxsb3dlZCBpdGVyYXRpb25zXG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMuZXJyb3JUb2xlcmFuY2UgPSAxMGUtM10gLSBNaW5pbXVtIHVuY2VydGFpbnR5IGFsbG93ZWQgZm9yIGVhY2ggcG9pbnRcbiAqIEByZXR1cm4ge3twYXJhbWV0ZXJWYWx1ZXM6IEFycmF5PG51bWJlcj4sIHBhcmFtZXRlckVycm9yOiBudW1iZXIsIGl0ZXJhdGlvbnM6IG51bWJlcn19XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxldmVuYmVyZ01hcnF1YXJkdChcbiAgZGF0YSxcbiAgcGFyYW1ldGVyaXplZEZ1bmN0aW9uLFxuICBvcHRpb25zID0ge30sXG4pIHtcbiAgbGV0IHtcbiAgICBtYXhJdGVyYXRpb25zID0gMTAwLFxuICAgIGdyYWRpZW50RGlmZmVyZW5jZSA9IDEwZS0yLFxuICAgIGRhbXBpbmcgPSAwLFxuICAgIGVycm9yVG9sZXJhbmNlID0gMTBlLTMsXG4gICAgbWluVmFsdWVzLFxuICAgIG1heFZhbHVlcyxcbiAgICBpbml0aWFsVmFsdWVzLFxuICB9ID0gb3B0aW9ucztcblxuICBpZiAoZGFtcGluZyA8PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgZGFtcGluZyBvcHRpb24gbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlcicpO1xuICB9IGVsc2UgaWYgKCFkYXRhLnggfHwgIWRhdGEueSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhlIGRhdGEgcGFyYW1ldGVyIG11c3QgaGF2ZSB4IGFuZCB5IGVsZW1lbnRzJyk7XG4gIH0gZWxzZSBpZiAoXG4gICAgIWlzQXJyYXkoZGF0YS54KSB8fFxuICAgIGRhdGEueC5sZW5ndGggPCAyIHx8XG4gICAgIWlzQXJyYXkoZGF0YS55KSB8fFxuICAgIGRhdGEueS5sZW5ndGggPCAyXG4gICkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdUaGUgZGF0YSBwYXJhbWV0ZXIgZWxlbWVudHMgbXVzdCBiZSBhbiBhcnJheSB3aXRoIG1vcmUgdGhhbiAyIHBvaW50cycsXG4gICAgKTtcbiAgfSBlbHNlIGlmIChkYXRhLngubGVuZ3RoICE9PSBkYXRhLnkubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgZGF0YSBwYXJhbWV0ZXIgZWxlbWVudHMgbXVzdCBoYXZlIHRoZSBzYW1lIHNpemUnKTtcbiAgfVxuXG4gIGxldCBwYXJhbWV0ZXJzID1cbiAgICBpbml0aWFsVmFsdWVzIHx8IG5ldyBBcnJheShwYXJhbWV0ZXJpemVkRnVuY3Rpb24ubGVuZ3RoKS5maWxsKDEpO1xuICBsZXQgcGFyTGVuID0gcGFyYW1ldGVycy5sZW5ndGg7XG4gIG1heFZhbHVlcyA9IG1heFZhbHVlcyB8fCBuZXcgQXJyYXkocGFyTGVuKS5maWxsKE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKTtcbiAgbWluVmFsdWVzID0gbWluVmFsdWVzIHx8IG5ldyBBcnJheShwYXJMZW4pLmZpbGwoTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIpO1xuXG4gIGlmIChtYXhWYWx1ZXMubGVuZ3RoICE9PSBtaW5WYWx1ZXMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtaW5WYWx1ZXMgYW5kIG1heFZhbHVlcyBtdXN0IGJlIHRoZSBzYW1lIHNpemUnKTtcbiAgfVxuXG4gIGlmICghaXNBcnJheShwYXJhbWV0ZXJzKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW5pdGlhbFZhbHVlcyBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gIH1cblxuICBsZXQgZXJyb3IgPSBlcnJvckNhbGN1bGF0aW9uKGRhdGEsIHBhcmFtZXRlcnMsIHBhcmFtZXRlcml6ZWRGdW5jdGlvbik7XG5cbiAgbGV0IGNvbnZlcmdlZCA9IGVycm9yIDw9IGVycm9yVG9sZXJhbmNlO1xuXG4gIGxldCBpdGVyYXRpb247XG4gIGZvciAoaXRlcmF0aW9uID0gMDsgaXRlcmF0aW9uIDwgbWF4SXRlcmF0aW9ucyAmJiAhY29udmVyZ2VkOyBpdGVyYXRpb24rKykge1xuICAgIHBhcmFtZXRlcnMgPSBzdGVwKFxuICAgICAgZGF0YSxcbiAgICAgIHBhcmFtZXRlcnMsXG4gICAgICBkYW1waW5nLFxuICAgICAgZ3JhZGllbnREaWZmZXJlbmNlLFxuICAgICAgcGFyYW1ldGVyaXplZEZ1bmN0aW9uLFxuICAgICk7XG5cbiAgICBmb3IgKGxldCBrID0gMDsgayA8IHBhckxlbjsgaysrKSB7XG4gICAgICBwYXJhbWV0ZXJzW2tdID0gTWF0aC5taW4oXG4gICAgICAgIE1hdGgubWF4KG1pblZhbHVlc1trXSwgcGFyYW1ldGVyc1trXSksXG4gICAgICAgIG1heFZhbHVlc1trXSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgZXJyb3IgPSBlcnJvckNhbGN1bGF0aW9uKGRhdGEsIHBhcmFtZXRlcnMsIHBhcmFtZXRlcml6ZWRGdW5jdGlvbik7XG4gICAgaWYgKGlzTmFOKGVycm9yKSkgYnJlYWs7XG4gICAgY29udmVyZ2VkID0gZXJyb3IgPD0gZXJyb3JUb2xlcmFuY2U7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHBhcmFtZXRlclZhbHVlczogcGFyYW1ldGVycyxcbiAgICBwYXJhbWV0ZXJFcnJvcjogZXJyb3IsXG4gICAgaXRlcmF0aW9uczogaXRlcmF0aW9uLFxuICB9O1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnRTdGFyID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydFN0YXIpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xuICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgaW4gbW9kKSBpZiAoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwobW9kLCBrKSkgcmVzdWx0W2tdID0gbW9kW2tdO1xuICAgIHJlc3VsdFtcImRlZmF1bHRcIl0gPSBtb2Q7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdXRpbHMgPSBfX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vdXRpbHNcIikpO1xuZnVuY3Rpb24gbWFrZUhlYXAoblBvaW50cywgc2l6ZSkge1xuICAgIHZhciBtYWtlQXJyYXlzID0gZnVuY3Rpb24gKGZpbGxWYWx1ZSkge1xuICAgICAgICByZXR1cm4gdXRpbHMuZW1wdHkoblBvaW50cykubWFwKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB1dGlscy5maWxsZWQoc2l6ZSwgZmlsbFZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICB2YXIgaGVhcCA9IFtdO1xuICAgIGhlYXAucHVzaChtYWtlQXJyYXlzKC0xKSk7XG4gICAgaGVhcC5wdXNoKG1ha2VBcnJheXMoSW5maW5pdHkpKTtcbiAgICBoZWFwLnB1c2gobWFrZUFycmF5cygwKSk7XG4gICAgcmV0dXJuIGhlYXA7XG59XG5leHBvcnRzLm1ha2VIZWFwID0gbWFrZUhlYXA7XG5mdW5jdGlvbiByZWplY3Rpb25TYW1wbGUoblNhbXBsZXMsIHBvb2xTaXplLCByYW5kb20pIHtcbiAgICB2YXIgcmVzdWx0ID0gdXRpbHMuemVyb3MoblNhbXBsZXMpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgblNhbXBsZXM7IGkrKykge1xuICAgICAgICB2YXIgcmVqZWN0U2FtcGxlID0gdHJ1ZTtcbiAgICAgICAgdmFyIGogPSAwO1xuICAgICAgICB3aGlsZSAocmVqZWN0U2FtcGxlKSB7XG4gICAgICAgICAgICBqID0gdXRpbHMudGF1UmFuZEludChwb29sU2l6ZSwgcmFuZG9tKTtcbiAgICAgICAgICAgIHZhciBicm9rZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgaTsgaysrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGogPT09IHJlc3VsdFtrXSkge1xuICAgICAgICAgICAgICAgICAgICBicm9rZW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWJyb2tlbilcbiAgICAgICAgICAgICAgICByZWplY3RTYW1wbGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRbaV0gPSBqO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZXhwb3J0cy5yZWplY3Rpb25TYW1wbGUgPSByZWplY3Rpb25TYW1wbGU7XG5mdW5jdGlvbiBoZWFwUHVzaChoZWFwLCByb3csIHdlaWdodCwgaW5kZXgsIGZsYWcpIHtcbiAgICByb3cgPSBNYXRoLmZsb29yKHJvdyk7XG4gICAgdmFyIGluZGljZXMgPSBoZWFwWzBdW3Jvd107XG4gICAgdmFyIHdlaWdodHMgPSBoZWFwWzFdW3Jvd107XG4gICAgdmFyIGlzTmV3ID0gaGVhcFsyXVtyb3ddO1xuICAgIGlmICh3ZWlnaHQgPj0gd2VpZ2h0c1swXSkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbmRpY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChpbmRleCA9PT0gaW5kaWNlc1tpXSkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuY2hlY2tlZEhlYXBQdXNoKGhlYXAsIHJvdywgd2VpZ2h0LCBpbmRleCwgZmxhZyk7XG59XG5leHBvcnRzLmhlYXBQdXNoID0gaGVhcFB1c2g7XG5mdW5jdGlvbiB1bmNoZWNrZWRIZWFwUHVzaChoZWFwLCByb3csIHdlaWdodCwgaW5kZXgsIGZsYWcpIHtcbiAgICB2YXIgaW5kaWNlcyA9IGhlYXBbMF1bcm93XTtcbiAgICB2YXIgd2VpZ2h0cyA9IGhlYXBbMV1bcm93XTtcbiAgICB2YXIgaXNOZXcgPSBoZWFwWzJdW3Jvd107XG4gICAgaWYgKHdlaWdodCA+PSB3ZWlnaHRzWzBdKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICB3ZWlnaHRzWzBdID0gd2VpZ2h0O1xuICAgIGluZGljZXNbMF0gPSBpbmRleDtcbiAgICBpc05ld1swXSA9IGZsYWc7XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciBpU3dhcCA9IDA7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgdmFyIGljMSA9IDIgKiBpICsgMTtcbiAgICAgICAgdmFyIGljMiA9IGljMSArIDE7XG4gICAgICAgIHZhciBoZWFwU2hhcGUyID0gaGVhcFswXVswXS5sZW5ndGg7XG4gICAgICAgIGlmIChpYzEgPj0gaGVhcFNoYXBlMikge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaWMyID49IGhlYXBTaGFwZTIpIHtcbiAgICAgICAgICAgIGlmICh3ZWlnaHRzW2ljMV0gPiB3ZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBpU3dhcCA9IGljMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHdlaWdodHNbaWMxXSA+PSB3ZWlnaHRzW2ljMl0pIHtcbiAgICAgICAgICAgIGlmICh3ZWlnaHQgPCB3ZWlnaHRzW2ljMV0pIHtcbiAgICAgICAgICAgICAgICBpU3dhcCA9IGljMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKHdlaWdodCA8IHdlaWdodHNbaWMyXSkge1xuICAgICAgICAgICAgICAgIGlTd2FwID0gaWMyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgd2VpZ2h0c1tpXSA9IHdlaWdodHNbaVN3YXBdO1xuICAgICAgICBpbmRpY2VzW2ldID0gaW5kaWNlc1tpU3dhcF07XG4gICAgICAgIGlzTmV3W2ldID0gaXNOZXdbaVN3YXBdO1xuICAgICAgICBpID0gaVN3YXA7XG4gICAgfVxuICAgIHdlaWdodHNbaV0gPSB3ZWlnaHQ7XG4gICAgaW5kaWNlc1tpXSA9IGluZGV4O1xuICAgIGlzTmV3W2ldID0gZmxhZztcbiAgICByZXR1cm4gMTtcbn1cbmV4cG9ydHMudW5jaGVja2VkSGVhcFB1c2ggPSB1bmNoZWNrZWRIZWFwUHVzaDtcbmZ1bmN0aW9uIGJ1aWxkQ2FuZGlkYXRlcyhjdXJyZW50R3JhcGgsIG5WZXJ0aWNlcywgbk5laWdoYm9ycywgbWF4Q2FuZGlkYXRlcywgcmFuZG9tKSB7XG4gICAgdmFyIGNhbmRpZGF0ZU5laWdoYm9ycyA9IG1ha2VIZWFwKG5WZXJ0aWNlcywgbWF4Q2FuZGlkYXRlcyk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuVmVydGljZXM7IGkrKykge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG5OZWlnaGJvcnM7IGorKykge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRHcmFwaFswXVtpXVtqXSA8IDApIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBpZHggPSBjdXJyZW50R3JhcGhbMF1baV1bal07XG4gICAgICAgICAgICB2YXIgaXNuID0gY3VycmVudEdyYXBoWzJdW2ldW2pdO1xuICAgICAgICAgICAgdmFyIGQgPSB1dGlscy50YXVSYW5kKHJhbmRvbSk7XG4gICAgICAgICAgICBoZWFwUHVzaChjYW5kaWRhdGVOZWlnaGJvcnMsIGksIGQsIGlkeCwgaXNuKTtcbiAgICAgICAgICAgIGhlYXBQdXNoKGNhbmRpZGF0ZU5laWdoYm9ycywgaWR4LCBkLCBpLCBpc24pO1xuICAgICAgICAgICAgY3VycmVudEdyYXBoWzJdW2ldW2pdID0gMDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2FuZGlkYXRlTmVpZ2hib3JzO1xufVxuZXhwb3J0cy5idWlsZENhbmRpZGF0ZXMgPSBidWlsZENhbmRpZGF0ZXM7XG5mdW5jdGlvbiBkZWhlYXBTb3J0KGhlYXApIHtcbiAgICB2YXIgaW5kaWNlcyA9IGhlYXBbMF07XG4gICAgdmFyIHdlaWdodHMgPSBoZWFwWzFdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5kaWNlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgaW5kSGVhcCA9IGluZGljZXNbaV07XG4gICAgICAgIHZhciBkaXN0SGVhcCA9IHdlaWdodHNbaV07XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgaW5kSGVhcC5sZW5ndGggLSAxOyBqKyspIHtcbiAgICAgICAgICAgIHZhciBpbmRIZWFwSW5kZXggPSBpbmRIZWFwLmxlbmd0aCAtIGogLSAxO1xuICAgICAgICAgICAgdmFyIGRpc3RIZWFwSW5kZXggPSBkaXN0SGVhcC5sZW5ndGggLSBqIC0gMTtcbiAgICAgICAgICAgIHZhciB0ZW1wMSA9IGluZEhlYXBbMF07XG4gICAgICAgICAgICBpbmRIZWFwWzBdID0gaW5kSGVhcFtpbmRIZWFwSW5kZXhdO1xuICAgICAgICAgICAgaW5kSGVhcFtpbmRIZWFwSW5kZXhdID0gdGVtcDE7XG4gICAgICAgICAgICB2YXIgdGVtcDIgPSBkaXN0SGVhcFswXTtcbiAgICAgICAgICAgIGRpc3RIZWFwWzBdID0gZGlzdEhlYXBbZGlzdEhlYXBJbmRleF07XG4gICAgICAgICAgICBkaXN0SGVhcFtkaXN0SGVhcEluZGV4XSA9IHRlbXAyO1xuICAgICAgICAgICAgc2lmdERvd24oZGlzdEhlYXAsIGluZEhlYXAsIGRpc3RIZWFwSW5kZXgsIDApO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IGluZGljZXM6IGluZGljZXMsIHdlaWdodHM6IHdlaWdodHMgfTtcbn1cbmV4cG9ydHMuZGVoZWFwU29ydCA9IGRlaGVhcFNvcnQ7XG5mdW5jdGlvbiBzaWZ0RG93bihoZWFwMSwgaGVhcDIsIGNlaWxpbmcsIGVsdCkge1xuICAgIHdoaWxlIChlbHQgKiAyICsgMSA8IGNlaWxpbmcpIHtcbiAgICAgICAgdmFyIGxlZnRDaGlsZCA9IGVsdCAqIDIgKyAxO1xuICAgICAgICB2YXIgcmlnaHRDaGlsZCA9IGxlZnRDaGlsZCArIDE7XG4gICAgICAgIHZhciBzd2FwID0gZWx0O1xuICAgICAgICBpZiAoaGVhcDFbc3dhcF0gPCBoZWFwMVtsZWZ0Q2hpbGRdKSB7XG4gICAgICAgICAgICBzd2FwID0gbGVmdENoaWxkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyaWdodENoaWxkIDwgY2VpbGluZyAmJiBoZWFwMVtzd2FwXSA8IGhlYXAxW3JpZ2h0Q2hpbGRdKSB7XG4gICAgICAgICAgICBzd2FwID0gcmlnaHRDaGlsZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3dhcCA9PT0gZWx0KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciB0ZW1wMSA9IGhlYXAxW2VsdF07XG4gICAgICAgICAgICBoZWFwMVtlbHRdID0gaGVhcDFbc3dhcF07XG4gICAgICAgICAgICBoZWFwMVtzd2FwXSA9IHRlbXAxO1xuICAgICAgICAgICAgdmFyIHRlbXAyID0gaGVhcDJbZWx0XTtcbiAgICAgICAgICAgIGhlYXAyW2VsdF0gPSBoZWFwMltzd2FwXTtcbiAgICAgICAgICAgIGhlYXAyW3N3YXBdID0gdGVtcDI7XG4gICAgICAgICAgICBlbHQgPSBzd2FwO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gc21hbGxlc3RGbGFnZ2VkKGhlYXAsIHJvdykge1xuICAgIHZhciBpbmQgPSBoZWFwWzBdW3Jvd107XG4gICAgdmFyIGRpc3QgPSBoZWFwWzFdW3Jvd107XG4gICAgdmFyIGZsYWcgPSBoZWFwWzJdW3Jvd107XG4gICAgdmFyIG1pbkRpc3QgPSBJbmZpbml0eTtcbiAgICB2YXIgcmVzdWx0SW5kZXggPSAtMTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA+IGluZC5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoZmxhZ1tpXSA9PT0gMSAmJiBkaXN0W2ldIDwgbWluRGlzdCkge1xuICAgICAgICAgICAgbWluRGlzdCA9IGRpc3RbaV07XG4gICAgICAgICAgICByZXN1bHRJbmRleCA9IGk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHJlc3VsdEluZGV4ID49IDApIHtcbiAgICAgICAgZmxhZ1tyZXN1bHRJbmRleF0gPSAwO1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihpbmRbcmVzdWx0SW5kZXhdKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG59XG5leHBvcnRzLnNtYWxsZXN0RmxhZ2dlZCA9IHNtYWxsZXN0RmxhZ2dlZDtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHVtYXBfMSA9IHJlcXVpcmUoXCIuL3VtYXBcIik7XG5leHBvcnRzLlVNQVAgPSB1bWFwXzEuVU1BUDtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fcmVhZCA9ICh0aGlzICYmIHRoaXMuX19yZWFkKSB8fCBmdW5jdGlvbiAobywgbikge1xuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgICBpZiAoIW0pIHJldHVybiBvO1xuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xuICAgIHRyeSB7XG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxuICAgIH1cbiAgICByZXR1cm4gYXI7XG59O1xudmFyIF9fdmFsdWVzID0gKHRoaXMgJiYgdGhpcy5fX3ZhbHVlcykgfHwgZnVuY3Rpb24gKG8pIHtcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl0sIGkgPSAwO1xuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xufTtcbnZhciBfX2ltcG9ydFN0YXIgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0U3RhcikgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSByZXN1bHRba10gPSBtb2Rba107XG4gICAgcmVzdWx0W1wiZGVmYXVsdFwiXSA9IG1vZDtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBfYTtcbnZhciB1dGlscyA9IF9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi91dGlsc1wiKSk7XG52YXIgU3BhcnNlTWF0cml4ID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBTcGFyc2VNYXRyaXgocm93cywgY29scywgdmFsdWVzLCBkaW1zKSB7XG4gICAgICAgIHRoaXMuZW50cmllcyA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5uUm93cyA9IDA7XG4gICAgICAgIHRoaXMubkNvbHMgPSAwO1xuICAgICAgICBpZiAocm93cy5sZW5ndGggIT09IGNvbHMubGVuZ3RoIHx8IHJvd3MubGVuZ3RoICE9PSB2YWx1ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Jvd3MsIGNvbHMgYW5kIHZhbHVlcyBhcnJheXMgbXVzdCBhbGwgaGF2ZSB0aGUgc2FtZSBsZW5ndGgnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm5Sb3dzID0gZGltc1swXTtcbiAgICAgICAgdGhpcy5uQ29scyA9IGRpbXNbMV07XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgcm93ID0gcm93c1tpXTtcbiAgICAgICAgICAgIHZhciBjb2wgPSBjb2xzW2ldO1xuICAgICAgICAgICAgdGhpcy5jaGVja0RpbXMocm93LCBjb2wpO1xuICAgICAgICAgICAgdmFyIGtleSA9IHRoaXMubWFrZUtleShyb3csIGNvbCk7XG4gICAgICAgICAgICB0aGlzLmVudHJpZXMuc2V0KGtleSwgeyB2YWx1ZTogdmFsdWVzW2ldLCByb3c6IHJvdywgY29sOiBjb2wgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgU3BhcnNlTWF0cml4LnByb3RvdHlwZS5tYWtlS2V5ID0gZnVuY3Rpb24gKHJvdywgY29sKSB7XG4gICAgICAgIHJldHVybiByb3cgKyBcIjpcIiArIGNvbDtcbiAgICB9O1xuICAgIFNwYXJzZU1hdHJpeC5wcm90b3R5cGUuY2hlY2tEaW1zID0gZnVuY3Rpb24gKHJvdywgY29sKSB7XG4gICAgICAgIHZhciB3aXRoaW5Cb3VuZHMgPSByb3cgPCB0aGlzLm5Sb3dzICYmIGNvbCA8IHRoaXMubkNvbHM7XG4gICAgICAgIGlmICghd2l0aGluQm91bmRzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3JvdyBhbmQvb3IgY29sIHNwZWNpZmllZCBvdXRzaWRlIG9mIG1hdHJpeCBkaW1lbnNpb25zJyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFNwYXJzZU1hdHJpeC5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKHJvdywgY29sLCB2YWx1ZSkge1xuICAgICAgICB0aGlzLmNoZWNrRGltcyhyb3csIGNvbCk7XG4gICAgICAgIHZhciBrZXkgPSB0aGlzLm1ha2VLZXkocm93LCBjb2wpO1xuICAgICAgICBpZiAoIXRoaXMuZW50cmllcy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgdGhpcy5lbnRyaWVzLnNldChrZXksIHsgdmFsdWU6IHZhbHVlLCByb3c6IHJvdywgY29sOiBjb2wgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVudHJpZXMuZ2V0KGtleSkudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3BhcnNlTWF0cml4LnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAocm93LCBjb2wsIGRlZmF1bHRWYWx1ZSkge1xuICAgICAgICBpZiAoZGVmYXVsdFZhbHVlID09PSB2b2lkIDApIHsgZGVmYXVsdFZhbHVlID0gMDsgfVxuICAgICAgICB0aGlzLmNoZWNrRGltcyhyb3csIGNvbCk7XG4gICAgICAgIHZhciBrZXkgPSB0aGlzLm1ha2VLZXkocm93LCBjb2wpO1xuICAgICAgICBpZiAodGhpcy5lbnRyaWVzLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5lbnRyaWVzLmdldChrZXkpLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3BhcnNlTWF0cml4LnByb3RvdHlwZS5nZXRBbGwgPSBmdW5jdGlvbiAob3JkZXJlZCkge1xuICAgICAgICBpZiAob3JkZXJlZCA9PT0gdm9pZCAwKSB7IG9yZGVyZWQgPSB0cnVlOyB9XG4gICAgICAgIHZhciByb3dDb2xWYWx1ZXMgPSBbXTtcbiAgICAgICAgdGhpcy5lbnRyaWVzLmZvckVhY2goZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICByb3dDb2xWYWx1ZXMucHVzaCh2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAob3JkZXJlZCkge1xuICAgICAgICAgICAgcm93Q29sVmFsdWVzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgICAgICBpZiAoYS5yb3cgPT09IGIucm93KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmNvbCAtIGIuY29sO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEucm93IC0gYi5yb3c7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJvd0NvbFZhbHVlcztcbiAgICB9O1xuICAgIFNwYXJzZU1hdHJpeC5wcm90b3R5cGUuZ2V0RGltcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLm5Sb3dzLCB0aGlzLm5Db2xzXTtcbiAgICB9O1xuICAgIFNwYXJzZU1hdHJpeC5wcm90b3R5cGUuZ2V0Um93cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5lbnRyaWVzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgIHZhciBfYiA9IF9fcmVhZChfYSwgMiksIGtleSA9IF9iWzBdLCB2YWx1ZSA9IF9iWzFdO1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnJvdztcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBTcGFyc2VNYXRyaXgucHJvdG90eXBlLmdldENvbHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZW50cmllcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICB2YXIgX2IgPSBfX3JlYWQoX2EsIDIpLCBrZXkgPSBfYlswXSwgdmFsdWUgPSBfYlsxXTtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5jb2w7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgU3BhcnNlTWF0cml4LnByb3RvdHlwZS5nZXRWYWx1ZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZW50cmllcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICB2YXIgX2IgPSBfX3JlYWQoX2EsIDIpLCBrZXkgPSBfYlswXSwgdmFsdWUgPSBfYlsxXTtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS52YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBTcGFyc2VNYXRyaXgucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbiAoZm4pIHtcbiAgICAgICAgdGhpcy5lbnRyaWVzLmZvckVhY2goZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiBmbih2YWx1ZS52YWx1ZSwgdmFsdWUucm93LCB2YWx1ZS5jb2wpOyB9KTtcbiAgICB9O1xuICAgIFNwYXJzZU1hdHJpeC5wcm90b3R5cGUubWFwID0gZnVuY3Rpb24gKGZuKSB7XG4gICAgICAgIHZhciB2YWxzID0gW107XG4gICAgICAgIHRoaXMuZW50cmllcy5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgdmFscy5wdXNoKGZuKHZhbHVlLnZhbHVlLCB2YWx1ZS5yb3csIHZhbHVlLmNvbCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGRpbXMgPSBbdGhpcy5uUm93cywgdGhpcy5uQ29sc107XG4gICAgICAgIHJldHVybiBuZXcgU3BhcnNlTWF0cml4KHRoaXMuZ2V0Um93cygpLCB0aGlzLmdldENvbHMoKSwgdmFscywgZGltcyk7XG4gICAgfTtcbiAgICBTcGFyc2VNYXRyaXgucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciByb3dzID0gdXRpbHMuZW1wdHkodGhpcy5uUm93cyk7XG4gICAgICAgIHZhciBvdXRwdXQgPSByb3dzLm1hcChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdXRpbHMuemVyb3MoX3RoaXMubkNvbHMpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5lbnRyaWVzLmZvckVhY2goZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBvdXRwdXRbdmFsdWUucm93XVt2YWx1ZS5jb2xdID0gdmFsdWUudmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgIH07XG4gICAgcmV0dXJuIFNwYXJzZU1hdHJpeDtcbn0oKSk7XG5leHBvcnRzLlNwYXJzZU1hdHJpeCA9IFNwYXJzZU1hdHJpeDtcbmZ1bmN0aW9uIHRyYW5zcG9zZShtYXRyaXgpIHtcbiAgICB2YXIgY29scyA9IFtdO1xuICAgIHZhciByb3dzID0gW107XG4gICAgdmFyIHZhbHMgPSBbXTtcbiAgICBtYXRyaXguZm9yRWFjaChmdW5jdGlvbiAodmFsdWUsIHJvdywgY29sKSB7XG4gICAgICAgIGNvbHMucHVzaChyb3cpO1xuICAgICAgICByb3dzLnB1c2goY29sKTtcbiAgICAgICAgdmFscy5wdXNoKHZhbHVlKTtcbiAgICB9KTtcbiAgICB2YXIgZGltcyA9IFttYXRyaXgubkNvbHMsIG1hdHJpeC5uUm93c107XG4gICAgcmV0dXJuIG5ldyBTcGFyc2VNYXRyaXgocm93cywgY29scywgdmFscywgZGltcyk7XG59XG5leHBvcnRzLnRyYW5zcG9zZSA9IHRyYW5zcG9zZTtcbmZ1bmN0aW9uIGlkZW50aXR5KHNpemUpIHtcbiAgICB2YXIgX2EgPSBfX3JlYWQoc2l6ZSwgMSksIHJvd3MgPSBfYVswXTtcbiAgICB2YXIgbWF0cml4ID0gbmV3IFNwYXJzZU1hdHJpeChbXSwgW10sIFtdLCBzaXplKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgICBtYXRyaXguc2V0KGksIGksIDEpO1xuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xufVxuZXhwb3J0cy5pZGVudGl0eSA9IGlkZW50aXR5O1xuZnVuY3Rpb24gcGFpcndpc2VNdWx0aXBseShhLCBiKSB7XG4gICAgcmV0dXJuIGVsZW1lbnRXaXNlKGEsIGIsIGZ1bmN0aW9uICh4LCB5KSB7IHJldHVybiB4ICogeTsgfSk7XG59XG5leHBvcnRzLnBhaXJ3aXNlTXVsdGlwbHkgPSBwYWlyd2lzZU11bHRpcGx5O1xuZnVuY3Rpb24gYWRkKGEsIGIpIHtcbiAgICByZXR1cm4gZWxlbWVudFdpc2UoYSwgYiwgZnVuY3Rpb24gKHgsIHkpIHsgcmV0dXJuIHggKyB5OyB9KTtcbn1cbmV4cG9ydHMuYWRkID0gYWRkO1xuZnVuY3Rpb24gc3VidHJhY3QoYSwgYikge1xuICAgIHJldHVybiBlbGVtZW50V2lzZShhLCBiLCBmdW5jdGlvbiAoeCwgeSkgeyByZXR1cm4geCAtIHk7IH0pO1xufVxuZXhwb3J0cy5zdWJ0cmFjdCA9IHN1YnRyYWN0O1xuZnVuY3Rpb24gbWF4aW11bShhLCBiKSB7XG4gICAgcmV0dXJuIGVsZW1lbnRXaXNlKGEsIGIsIGZ1bmN0aW9uICh4LCB5KSB7IHJldHVybiAoeCA+IHkgPyB4IDogeSk7IH0pO1xufVxuZXhwb3J0cy5tYXhpbXVtID0gbWF4aW11bTtcbmZ1bmN0aW9uIG11bHRpcGx5U2NhbGFyKGEsIHNjYWxhcikge1xuICAgIHJldHVybiBhLm1hcChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlICogc2NhbGFyO1xuICAgIH0pO1xufVxuZXhwb3J0cy5tdWx0aXBseVNjYWxhciA9IG11bHRpcGx5U2NhbGFyO1xuZnVuY3Rpb24gZWxpbWluYXRlWmVyb3MobSkge1xuICAgIHZhciB6ZXJvSW5kaWNlcyA9IG5ldyBTZXQoKTtcbiAgICB2YXIgdmFsdWVzID0gbS5nZXRWYWx1ZXMoKTtcbiAgICB2YXIgcm93cyA9IG0uZ2V0Um93cygpO1xuICAgIHZhciBjb2xzID0gbS5nZXRDb2xzKCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHZhbHVlc1tpXSA9PT0gMCkge1xuICAgICAgICAgICAgemVyb0luZGljZXMuYWRkKGkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHZhciByZW1vdmVCeVplcm9JbmRleCA9IGZ1bmN0aW9uIChfLCBpbmRleCkgeyByZXR1cm4gIXplcm9JbmRpY2VzLmhhcyhpbmRleCk7IH07XG4gICAgdmFyIG5leHRWYWx1ZXMgPSB2YWx1ZXMuZmlsdGVyKHJlbW92ZUJ5WmVyb0luZGV4KTtcbiAgICB2YXIgbmV4dFJvd3MgPSByb3dzLmZpbHRlcihyZW1vdmVCeVplcm9JbmRleCk7XG4gICAgdmFyIG5leHRDb2xzID0gY29scy5maWx0ZXIocmVtb3ZlQnlaZXJvSW5kZXgpO1xuICAgIHJldHVybiBuZXcgU3BhcnNlTWF0cml4KG5leHRSb3dzLCBuZXh0Q29scywgbmV4dFZhbHVlcywgbS5nZXREaW1zKCkpO1xufVxuZXhwb3J0cy5lbGltaW5hdGVaZXJvcyA9IGVsaW1pbmF0ZVplcm9zO1xuZnVuY3Rpb24gbm9ybWFsaXplKG0sIG5vcm1UeXBlKSB7XG4gICAgaWYgKG5vcm1UeXBlID09PSB2b2lkIDApIHsgbm9ybVR5cGUgPSBcImwyXCI7IH1cbiAgICB2YXIgZV8xLCBfYTtcbiAgICB2YXIgbm9ybUZuID0gbm9ybUZuc1tub3JtVHlwZV07XG4gICAgdmFyIGNvbHNCeVJvdyA9IG5ldyBNYXAoKTtcbiAgICBtLmZvckVhY2goZnVuY3Rpb24gKF8sIHJvdywgY29sKSB7XG4gICAgICAgIHZhciBjb2xzID0gY29sc0J5Um93LmdldChyb3cpIHx8IFtdO1xuICAgICAgICBjb2xzLnB1c2goY29sKTtcbiAgICAgICAgY29sc0J5Um93LnNldChyb3csIGNvbHMpO1xuICAgIH0pO1xuICAgIHZhciBuZXh0TWF0cml4ID0gbmV3IFNwYXJzZU1hdHJpeChbXSwgW10sIFtdLCBtLmdldERpbXMoKSk7XG4gICAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiAocm93KSB7XG4gICAgICAgIHZhciBjb2xzID0gY29sc0J5Um93LmdldChyb3cpLnNvcnQoKTtcbiAgICAgICAgdmFyIHZhbHMgPSBjb2xzLm1hcChmdW5jdGlvbiAoY29sKSB7IHJldHVybiBtLmdldChyb3csIGNvbCk7IH0pO1xuICAgICAgICB2YXIgbm9ybSA9IG5vcm1Gbih2YWxzKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub3JtLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBuZXh0TWF0cml4LnNldChyb3csIGNvbHNbaV0sIG5vcm1baV0pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKGNvbHNCeVJvdy5rZXlzKCkpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICB2YXIgcm93ID0gX2MudmFsdWU7XG4gICAgICAgICAgICBfbG9vcF8xKHJvdyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBuZXh0TWF0cml4O1xufVxuZXhwb3J0cy5ub3JtYWxpemUgPSBub3JtYWxpemU7XG52YXIgbm9ybUZucyA9IChfYSA9IHt9LFxuICAgIF9hW1wibWF4XCJdID0gZnVuY3Rpb24gKHhzKSB7XG4gICAgICAgIHZhciBtYXggPSAtSW5maW5pdHk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIG1heCA9IHhzW2ldID4gbWF4ID8geHNbaV0gOiBtYXg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHhzLm1hcChmdW5jdGlvbiAoeCkgeyByZXR1cm4geCAvIG1heDsgfSk7XG4gICAgfSxcbiAgICBfYVtcImwxXCJdID0gZnVuY3Rpb24gKHhzKSB7XG4gICAgICAgIHZhciBzdW0gPSAwO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHhzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBzdW0gKz0geHNbaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHhzLm1hcChmdW5jdGlvbiAoeCkgeyByZXR1cm4geCAvIHN1bTsgfSk7XG4gICAgfSxcbiAgICBfYVtcImwyXCJdID0gZnVuY3Rpb24gKHhzKSB7XG4gICAgICAgIHZhciBzdW0gPSAwO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHhzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBzdW0gKz0gTWF0aC5wb3coeHNbaV0sIDIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB4cy5tYXAoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIE1hdGguc3FydChNYXRoLnBvdyh4LCAyKSAvIHN1bSk7IH0pO1xuICAgIH0sXG4gICAgX2EpO1xuZnVuY3Rpb24gZWxlbWVudFdpc2UoYSwgYiwgb3ApIHtcbiAgICB2YXIgdmlzaXRlZCA9IG5ldyBTZXQoKTtcbiAgICB2YXIgcm93cyA9IFtdO1xuICAgIHZhciBjb2xzID0gW107XG4gICAgdmFyIHZhbHMgPSBbXTtcbiAgICB2YXIgb3BlcmF0ZSA9IGZ1bmN0aW9uIChyb3csIGNvbCkge1xuICAgICAgICByb3dzLnB1c2gocm93KTtcbiAgICAgICAgY29scy5wdXNoKGNvbCk7XG4gICAgICAgIHZhciBuZXh0VmFsdWUgPSBvcChhLmdldChyb3csIGNvbCksIGIuZ2V0KHJvdywgY29sKSk7XG4gICAgICAgIHZhbHMucHVzaChuZXh0VmFsdWUpO1xuICAgIH07XG4gICAgdmFyIHZhbHVlc0EgPSBhLmdldFZhbHVlcygpO1xuICAgIHZhciByb3dzQSA9IGEuZ2V0Um93cygpO1xuICAgIHZhciBjb2xzQSA9IGEuZ2V0Q29scygpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWVzQS5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgcm93ID0gcm93c0FbaV07XG4gICAgICAgIHZhciBjb2wgPSBjb2xzQVtpXTtcbiAgICAgICAgdmFyIGtleSA9IHJvdyArIFwiOlwiICsgY29sO1xuICAgICAgICB2aXNpdGVkLmFkZChrZXkpO1xuICAgICAgICBvcGVyYXRlKHJvdywgY29sKTtcbiAgICB9XG4gICAgdmFyIHZhbHVlc0IgPSBiLmdldFZhbHVlcygpO1xuICAgIHZhciByb3dzQiA9IGIuZ2V0Um93cygpO1xuICAgIHZhciBjb2xzQiA9IGIuZ2V0Q29scygpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWVzQi5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgcm93ID0gcm93c0JbaV07XG4gICAgICAgIHZhciBjb2wgPSBjb2xzQltpXTtcbiAgICAgICAgdmFyIGtleSA9IHJvdyArIFwiOlwiICsgY29sO1xuICAgICAgICBpZiAodmlzaXRlZC5oYXMoa2V5KSlcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBvcGVyYXRlKHJvdywgY29sKTtcbiAgICB9XG4gICAgdmFyIGRpbXMgPSBbYS5uUm93cywgYS5uQ29sc107XG4gICAgcmV0dXJuIG5ldyBTcGFyc2VNYXRyaXgocm93cywgY29scywgdmFscywgZGltcyk7XG59XG5mdW5jdGlvbiBnZXRDU1IoeCkge1xuICAgIHZhciBlbnRyaWVzID0gW107XG4gICAgeC5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSwgcm93LCBjb2wpIHtcbiAgICAgICAgZW50cmllcy5wdXNoKHsgdmFsdWU6IHZhbHVlLCByb3c6IHJvdywgY29sOiBjb2wgfSk7XG4gICAgfSk7XG4gICAgZW50cmllcy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgIGlmIChhLnJvdyA9PT0gYi5yb3cpIHtcbiAgICAgICAgICAgIHJldHVybiBhLmNvbCAtIGIuY29sO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGEucm93IC0gYi5yb3c7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICB2YXIgaW5kaWNlcyA9IFtdO1xuICAgIHZhciB2YWx1ZXMgPSBbXTtcbiAgICB2YXIgaW5kcHRyID0gW107XG4gICAgdmFyIGN1cnJlbnRSb3cgPSAtMTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIF9hID0gZW50cmllc1tpXSwgcm93ID0gX2Eucm93LCBjb2wgPSBfYS5jb2wsIHZhbHVlID0gX2EudmFsdWU7XG4gICAgICAgIGlmIChyb3cgIT09IGN1cnJlbnRSb3cpIHtcbiAgICAgICAgICAgIGN1cnJlbnRSb3cgPSByb3c7XG4gICAgICAgICAgICBpbmRwdHIucHVzaChpKTtcbiAgICAgICAgfVxuICAgICAgICBpbmRpY2VzLnB1c2goY29sKTtcbiAgICAgICAgdmFsdWVzLnB1c2godmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4geyBpbmRpY2VzOiBpbmRpY2VzLCB2YWx1ZXM6IHZhbHVlcywgaW5kcHRyOiBpbmRwdHIgfTtcbn1cbmV4cG9ydHMuZ2V0Q1NSID0gZ2V0Q1NSO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbiAobykge1xuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXSwgaSA9IDA7XG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG59O1xudmFyIF9faW1wb3J0U3RhciA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnRTdGFyKSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZCwgaykpIHJlc3VsdFtrXSA9IG1vZFtrXTtcbiAgICByZXN1bHRbXCJkZWZhdWx0XCJdID0gbW9kO1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGhlYXAgPSBfX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vaGVhcFwiKSk7XG52YXIgbWF0cml4ID0gX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL21hdHJpeFwiKSk7XG52YXIgdHJlZSA9IF9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi90cmVlXCIpKTtcbnZhciB1dGlscyA9IF9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi91dGlsc1wiKSk7XG5mdW5jdGlvbiBtYWtlTk5EZXNjZW50KGRpc3RhbmNlRm4sIHJhbmRvbSkge1xuICAgIHJldHVybiBmdW5jdGlvbiBuTkRlc2NlbnQoZGF0YSwgbGVhZkFycmF5LCBuTmVpZ2hib3JzLCBuSXRlcnMsIG1heENhbmRpZGF0ZXMsIGRlbHRhLCByaG8sIHJwVHJlZUluaXQpIHtcbiAgICAgICAgaWYgKG5JdGVycyA9PT0gdm9pZCAwKSB7IG5JdGVycyA9IDEwOyB9XG4gICAgICAgIGlmIChtYXhDYW5kaWRhdGVzID09PSB2b2lkIDApIHsgbWF4Q2FuZGlkYXRlcyA9IDUwOyB9XG4gICAgICAgIGlmIChkZWx0YSA9PT0gdm9pZCAwKSB7IGRlbHRhID0gMC4wMDE7IH1cbiAgICAgICAgaWYgKHJobyA9PT0gdm9pZCAwKSB7IHJobyA9IDAuNTsgfVxuICAgICAgICBpZiAocnBUcmVlSW5pdCA9PT0gdm9pZCAwKSB7IHJwVHJlZUluaXQgPSB0cnVlOyB9XG4gICAgICAgIHZhciBuVmVydGljZXMgPSBkYXRhLmxlbmd0aDtcbiAgICAgICAgdmFyIGN1cnJlbnRHcmFwaCA9IGhlYXAubWFrZUhlYXAoZGF0YS5sZW5ndGgsIG5OZWlnaGJvcnMpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBpbmRpY2VzID0gaGVhcC5yZWplY3Rpb25TYW1wbGUobk5laWdoYm9ycywgZGF0YS5sZW5ndGgsIHJhbmRvbSk7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGluZGljZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgZCA9IGRpc3RhbmNlRm4oZGF0YVtpXSwgZGF0YVtpbmRpY2VzW2pdXSk7XG4gICAgICAgICAgICAgICAgaGVhcC5oZWFwUHVzaChjdXJyZW50R3JhcGgsIGksIGQsIGluZGljZXNbal0sIDEpO1xuICAgICAgICAgICAgICAgIGhlYXAuaGVhcFB1c2goY3VycmVudEdyYXBoLCBpbmRpY2VzW2pdLCBkLCBpLCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocnBUcmVlSW5pdCkge1xuICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCBsZWFmQXJyYXkubGVuZ3RoOyBuKyspIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlYWZBcnJheVtuXS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAobGVhZkFycmF5W25dW2ldIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IGkgKyAxOyBqIDwgbGVhZkFycmF5W25dLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVhZkFycmF5W25dW2pdIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBkaXN0YW5jZUZuKGRhdGFbbGVhZkFycmF5W25dW2ldXSwgZGF0YVtsZWFmQXJyYXlbbl1bal1dKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYXAuaGVhcFB1c2goY3VycmVudEdyYXBoLCBsZWFmQXJyYXlbbl1baV0sIGQsIGxlYWZBcnJheVtuXVtqXSwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFwLmhlYXBQdXNoKGN1cnJlbnRHcmFwaCwgbGVhZkFycmF5W25dW2pdLCBkLCBsZWFmQXJyYXlbbl1baV0sIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgbkl0ZXJzOyBuKyspIHtcbiAgICAgICAgICAgIHZhciBjYW5kaWRhdGVOZWlnaGJvcnMgPSBoZWFwLmJ1aWxkQ2FuZGlkYXRlcyhjdXJyZW50R3JhcGgsIG5WZXJ0aWNlcywgbk5laWdoYm9ycywgbWF4Q2FuZGlkYXRlcywgcmFuZG9tKTtcbiAgICAgICAgICAgIHZhciBjID0gMDtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgblZlcnRpY2VzOyBpKyspIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG1heENhbmRpZGF0ZXM7IGorKykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcCA9IE1hdGguZmxvb3IoY2FuZGlkYXRlTmVpZ2hib3JzWzBdW2ldW2pdKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHAgPCAwIHx8IHV0aWxzLnRhdVJhbmQocmFuZG9tKSA8IHJobykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBtYXhDYW5kaWRhdGVzOyBrKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBxID0gTWF0aC5mbG9vcihjYW5kaWRhdGVOZWlnaGJvcnNbMF1baV1ba10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNqID0gY2FuZGlkYXRlTmVpZ2hib3JzWzJdW2ldW2pdO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNrID0gY2FuZGlkYXRlTmVpZ2hib3JzWzJdW2ldW2tdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHEgPCAwIHx8ICghY2ogJiYgIWNrKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBkaXN0YW5jZUZuKGRhdGFbcF0sIGRhdGFbcV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgYyArPSBoZWFwLmhlYXBQdXNoKGN1cnJlbnRHcmFwaCwgcCwgZCwgcSwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjICs9IGhlYXAuaGVhcFB1c2goY3VycmVudEdyYXBoLCBxLCBkLCBwLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjIDw9IGRlbHRhICogbk5laWdoYm9ycyAqIGRhdGEubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHNvcnRlZCA9IGhlYXAuZGVoZWFwU29ydChjdXJyZW50R3JhcGgpO1xuICAgICAgICByZXR1cm4gc29ydGVkO1xuICAgIH07XG59XG5leHBvcnRzLm1ha2VOTkRlc2NlbnQgPSBtYWtlTk5EZXNjZW50O1xuZnVuY3Rpb24gbWFrZUluaXRpYWxpemF0aW9ucyhkaXN0YW5jZUZuKSB7XG4gICAgZnVuY3Rpb24gaW5pdEZyb21SYW5kb20obk5laWdoYm9ycywgZGF0YSwgcXVlcnlQb2ludHMsIF9oZWFwLCByYW5kb20pIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWVyeVBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIGluZGljZXMgPSB1dGlscy5yZWplY3Rpb25TYW1wbGUobk5laWdoYm9ycywgZGF0YS5sZW5ndGgsIHJhbmRvbSk7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGluZGljZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5kaWNlc1tqXSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBkID0gZGlzdGFuY2VGbihkYXRhW2luZGljZXNbal1dLCBxdWVyeVBvaW50c1tpXSk7XG4gICAgICAgICAgICAgICAgaGVhcC5oZWFwUHVzaChfaGVhcCwgaSwgZCwgaW5kaWNlc1tqXSwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaW5pdEZyb21UcmVlKF90cmVlLCBkYXRhLCBxdWVyeVBvaW50cywgX2hlYXAsIHJhbmRvbSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHF1ZXJ5UG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgaW5kaWNlcyA9IHRyZWUuc2VhcmNoRmxhdFRyZWUocXVlcnlQb2ludHNbaV0sIF90cmVlLCByYW5kb20pO1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBpbmRpY2VzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGluZGljZXNbal0gPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIGQgPSBkaXN0YW5jZUZuKGRhdGFbaW5kaWNlc1tqXV0sIHF1ZXJ5UG9pbnRzW2ldKTtcbiAgICAgICAgICAgICAgICBoZWFwLmhlYXBQdXNoKF9oZWFwLCBpLCBkLCBpbmRpY2VzW2pdLCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybiB7IGluaXRGcm9tUmFuZG9tOiBpbml0RnJvbVJhbmRvbSwgaW5pdEZyb21UcmVlOiBpbml0RnJvbVRyZWUgfTtcbn1cbmV4cG9ydHMubWFrZUluaXRpYWxpemF0aW9ucyA9IG1ha2VJbml0aWFsaXphdGlvbnM7XG5mdW5jdGlvbiBtYWtlSW5pdGlhbGl6ZWROTlNlYXJjaChkaXN0YW5jZUZuKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIG5uU2VhcmNoRm4oZGF0YSwgZ3JhcGgsIGluaXRpYWxpemF0aW9uLCBxdWVyeVBvaW50cykge1xuICAgICAgICB2YXIgZV8xLCBfYTtcbiAgICAgICAgdmFyIF9iID0gbWF0cml4LmdldENTUihncmFwaCksIGluZGljZXMgPSBfYi5pbmRpY2VzLCBpbmRwdHIgPSBfYi5pbmRwdHI7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcXVlcnlQb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciB0cmllZCA9IG5ldyBTZXQoaW5pdGlhbGl6YXRpb25bMF1baV0pO1xuICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICB2YXIgdmVydGV4ID0gaGVhcC5zbWFsbGVzdEZsYWdnZWQoaW5pdGlhbGl6YXRpb24sIGkpO1xuICAgICAgICAgICAgICAgIGlmICh2ZXJ0ZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgY2FuZGlkYXRlcyA9IGluZGljZXMuc2xpY2UoaW5kcHRyW3ZlcnRleF0sIGluZHB0clt2ZXJ0ZXggKyAxXSk7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgY2FuZGlkYXRlc18xID0gX192YWx1ZXMoY2FuZGlkYXRlcyksIGNhbmRpZGF0ZXNfMV8xID0gY2FuZGlkYXRlc18xLm5leHQoKTsgIWNhbmRpZGF0ZXNfMV8xLmRvbmU7IGNhbmRpZGF0ZXNfMV8xID0gY2FuZGlkYXRlc18xLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZXNfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PT0gdmVydGV4IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlID09PSAtMSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWVkLmhhcyhjYW5kaWRhdGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGRpc3RhbmNlRm4oZGF0YVtjYW5kaWRhdGVdLCBxdWVyeVBvaW50c1tpXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFwLnVuY2hlY2tlZEhlYXBQdXNoKGluaXRpYWxpemF0aW9uLCBpLCBkLCBjYW5kaWRhdGUsIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJpZWQuYWRkKGNhbmRpZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYW5kaWRhdGVzXzFfMSAmJiAhY2FuZGlkYXRlc18xXzEuZG9uZSAmJiAoX2EgPSBjYW5kaWRhdGVzXzEucmV0dXJuKSkgX2EuY2FsbChjYW5kaWRhdGVzXzEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGluaXRpYWxpemF0aW9uO1xuICAgIH07XG59XG5leHBvcnRzLm1ha2VJbml0aWFsaXplZE5OU2VhcmNoID0gbWFrZUluaXRpYWxpemVkTk5TZWFyY2g7XG5mdW5jdGlvbiBpbml0aWFsaXplU2VhcmNoKGZvcmVzdCwgZGF0YSwgcXVlcnlQb2ludHMsIG5OZWlnaGJvcnMsIGluaXRGcm9tUmFuZG9tLCBpbml0RnJvbVRyZWUsIHJhbmRvbSkge1xuICAgIHZhciBlXzIsIF9hO1xuICAgIHZhciByZXN1bHRzID0gaGVhcC5tYWtlSGVhcChxdWVyeVBvaW50cy5sZW5ndGgsIG5OZWlnaGJvcnMpO1xuICAgIGluaXRGcm9tUmFuZG9tKG5OZWlnaGJvcnMsIGRhdGEsIHF1ZXJ5UG9pbnRzLCByZXN1bHRzLCByYW5kb20pO1xuICAgIGlmIChmb3Jlc3QpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIGZvcmVzdF8xID0gX192YWx1ZXMoZm9yZXN0KSwgZm9yZXN0XzFfMSA9IGZvcmVzdF8xLm5leHQoKTsgIWZvcmVzdF8xXzEuZG9uZTsgZm9yZXN0XzFfMSA9IGZvcmVzdF8xLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciB0cmVlXzEgPSBmb3Jlc3RfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgIGluaXRGcm9tVHJlZSh0cmVlXzEsIGRhdGEsIHF1ZXJ5UG9pbnRzLCByZXN1bHRzLCByYW5kb20pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzJfMSkgeyBlXzIgPSB7IGVycm9yOiBlXzJfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoZm9yZXN0XzFfMSAmJiAhZm9yZXN0XzFfMS5kb25lICYmIChfYSA9IGZvcmVzdF8xLnJldHVybikpIF9hLmNhbGwoZm9yZXN0XzEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzIpIHRocm93IGVfMi5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzO1xufVxuZXhwb3J0cy5pbml0aWFsaXplU2VhcmNoID0gaW5pdGlhbGl6ZVNlYXJjaDtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fcmVhZCA9ICh0aGlzICYmIHRoaXMuX19yZWFkKSB8fCBmdW5jdGlvbiAobywgbikge1xuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgICBpZiAoIW0pIHJldHVybiBvO1xuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xuICAgIHRyeSB7XG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxuICAgIH1cbiAgICByZXR1cm4gYXI7XG59O1xudmFyIF9fc3ByZWFkID0gKHRoaXMgJiYgdGhpcy5fX3NwcmVhZCkgfHwgZnVuY3Rpb24gKCkge1xuICAgIGZvciAodmFyIGFyID0gW10sIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSBhciA9IGFyLmNvbmNhdChfX3JlYWQoYXJndW1lbnRzW2ldKSk7XG4gICAgcmV0dXJuIGFyO1xufTtcbnZhciBfX3ZhbHVlcyA9ICh0aGlzICYmIHRoaXMuX192YWx1ZXMpIHx8IGZ1bmN0aW9uIChvKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgICB9XG4gICAgfTtcbn07XG52YXIgX19pbXBvcnRTdGFyID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydFN0YXIpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xuICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgaW4gbW9kKSBpZiAoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwobW9kLCBrKSkgcmVzdWx0W2tdID0gbW9kW2tdO1xuICAgIHJlc3VsdFtcImRlZmF1bHRcIl0gPSBtb2Q7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdXRpbHMgPSBfX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vdXRpbHNcIikpO1xudmFyIEZsYXRUcmVlID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBGbGF0VHJlZShoeXBlcnBsYW5lcywgb2Zmc2V0cywgY2hpbGRyZW4sIGluZGljZXMpIHtcbiAgICAgICAgdGhpcy5oeXBlcnBsYW5lcyA9IGh5cGVycGxhbmVzO1xuICAgICAgICB0aGlzLm9mZnNldHMgPSBvZmZzZXRzO1xuICAgICAgICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgICAgIHRoaXMuaW5kaWNlcyA9IGluZGljZXM7XG4gICAgfVxuICAgIHJldHVybiBGbGF0VHJlZTtcbn0oKSk7XG5leHBvcnRzLkZsYXRUcmVlID0gRmxhdFRyZWU7XG5mdW5jdGlvbiBtYWtlRm9yZXN0KGRhdGEsIG5OZWlnaGJvcnMsIG5UcmVlcywgcmFuZG9tKSB7XG4gICAgdmFyIGxlYWZTaXplID0gTWF0aC5tYXgoMTAsIG5OZWlnaGJvcnMpO1xuICAgIHZhciB0cmVlcyA9IHV0aWxzXG4gICAgICAgIC5yYW5nZShuVHJlZXMpXG4gICAgICAgIC5tYXAoZnVuY3Rpb24gKF8sIGkpIHsgcmV0dXJuIG1ha2VUcmVlKGRhdGEsIGxlYWZTaXplLCBpLCByYW5kb20pOyB9KTtcbiAgICB2YXIgZm9yZXN0ID0gdHJlZXMubWFwKGZ1bmN0aW9uICh0cmVlKSB7IHJldHVybiBmbGF0dGVuVHJlZSh0cmVlLCBsZWFmU2l6ZSk7IH0pO1xuICAgIHJldHVybiBmb3Jlc3Q7XG59XG5leHBvcnRzLm1ha2VGb3Jlc3QgPSBtYWtlRm9yZXN0O1xuZnVuY3Rpb24gbWFrZVRyZWUoZGF0YSwgbGVhZlNpemUsIG4sIHJhbmRvbSkge1xuICAgIGlmIChsZWFmU2l6ZSA9PT0gdm9pZCAwKSB7IGxlYWZTaXplID0gMzA7IH1cbiAgICB2YXIgaW5kaWNlcyA9IHV0aWxzLnJhbmdlKGRhdGEubGVuZ3RoKTtcbiAgICB2YXIgdHJlZSA9IG1ha2VFdWNsaWRlYW5UcmVlKGRhdGEsIGluZGljZXMsIGxlYWZTaXplLCBuLCByYW5kb20pO1xuICAgIHJldHVybiB0cmVlO1xufVxuZnVuY3Rpb24gbWFrZUV1Y2xpZGVhblRyZWUoZGF0YSwgaW5kaWNlcywgbGVhZlNpemUsIHEsIHJhbmRvbSkge1xuICAgIGlmIChsZWFmU2l6ZSA9PT0gdm9pZCAwKSB7IGxlYWZTaXplID0gMzA7IH1cbiAgICBpZiAoaW5kaWNlcy5sZW5ndGggPiBsZWFmU2l6ZSkge1xuICAgICAgICB2YXIgc3BsaXRSZXN1bHRzID0gZXVjbGlkZWFuUmFuZG9tUHJvamVjdGlvblNwbGl0KGRhdGEsIGluZGljZXMsIHJhbmRvbSk7XG4gICAgICAgIHZhciBpbmRpY2VzTGVmdCA9IHNwbGl0UmVzdWx0cy5pbmRpY2VzTGVmdCwgaW5kaWNlc1JpZ2h0ID0gc3BsaXRSZXN1bHRzLmluZGljZXNSaWdodCwgaHlwZXJwbGFuZSA9IHNwbGl0UmVzdWx0cy5oeXBlcnBsYW5lLCBvZmZzZXQgPSBzcGxpdFJlc3VsdHMub2Zmc2V0O1xuICAgICAgICB2YXIgbGVmdENoaWxkID0gbWFrZUV1Y2xpZGVhblRyZWUoZGF0YSwgaW5kaWNlc0xlZnQsIGxlYWZTaXplLCBxICsgMSwgcmFuZG9tKTtcbiAgICAgICAgdmFyIHJpZ2h0Q2hpbGQgPSBtYWtlRXVjbGlkZWFuVHJlZShkYXRhLCBpbmRpY2VzUmlnaHQsIGxlYWZTaXplLCBxICsgMSwgcmFuZG9tKTtcbiAgICAgICAgdmFyIG5vZGUgPSB7IGxlZnRDaGlsZDogbGVmdENoaWxkLCByaWdodENoaWxkOiByaWdodENoaWxkLCBpc0xlYWY6IGZhbHNlLCBoeXBlcnBsYW5lOiBoeXBlcnBsYW5lLCBvZmZzZXQ6IG9mZnNldCB9O1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHZhciBub2RlID0geyBpbmRpY2VzOiBpbmRpY2VzLCBpc0xlYWY6IHRydWUgfTtcbiAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxufVxuZnVuY3Rpb24gZXVjbGlkZWFuUmFuZG9tUHJvamVjdGlvblNwbGl0KGRhdGEsIGluZGljZXMsIHJhbmRvbSkge1xuICAgIHZhciBkaW0gPSBkYXRhWzBdLmxlbmd0aDtcbiAgICB2YXIgbGVmdEluZGV4ID0gdXRpbHMudGF1UmFuZEludChpbmRpY2VzLmxlbmd0aCwgcmFuZG9tKTtcbiAgICB2YXIgcmlnaHRJbmRleCA9IHV0aWxzLnRhdVJhbmRJbnQoaW5kaWNlcy5sZW5ndGgsIHJhbmRvbSk7XG4gICAgcmlnaHRJbmRleCArPSBsZWZ0SW5kZXggPT09IHJpZ2h0SW5kZXggPyAxIDogMDtcbiAgICByaWdodEluZGV4ID0gcmlnaHRJbmRleCAlIGluZGljZXMubGVuZ3RoO1xuICAgIHZhciBsZWZ0ID0gaW5kaWNlc1tsZWZ0SW5kZXhdO1xuICAgIHZhciByaWdodCA9IGluZGljZXNbcmlnaHRJbmRleF07XG4gICAgdmFyIGh5cGVycGxhbmVPZmZzZXQgPSAwO1xuICAgIHZhciBoeXBlcnBsYW5lVmVjdG9yID0gdXRpbHMuemVyb3MoZGltKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGh5cGVycGxhbmVWZWN0b3IubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaHlwZXJwbGFuZVZlY3RvcltpXSA9IGRhdGFbbGVmdF1baV0gLSBkYXRhW3JpZ2h0XVtpXTtcbiAgICAgICAgaHlwZXJwbGFuZU9mZnNldCAtPVxuICAgICAgICAgICAgKGh5cGVycGxhbmVWZWN0b3JbaV0gKiAoZGF0YVtsZWZ0XVtpXSArIGRhdGFbcmlnaHRdW2ldKSkgLyAyLjA7XG4gICAgfVxuICAgIHZhciBuTGVmdCA9IDA7XG4gICAgdmFyIG5SaWdodCA9IDA7XG4gICAgdmFyIHNpZGUgPSB1dGlscy56ZXJvcyhpbmRpY2VzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbmRpY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBtYXJnaW4gPSBoeXBlcnBsYW5lT2Zmc2V0O1xuICAgICAgICBmb3IgKHZhciBkID0gMDsgZCA8IGRpbTsgZCsrKSB7XG4gICAgICAgICAgICBtYXJnaW4gKz0gaHlwZXJwbGFuZVZlY3RvcltkXSAqIGRhdGFbaW5kaWNlc1tpXV1bZF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1hcmdpbiA9PT0gMCkge1xuICAgICAgICAgICAgc2lkZVtpXSA9IHV0aWxzLnRhdVJhbmRJbnQoMiwgcmFuZG9tKTtcbiAgICAgICAgICAgIGlmIChzaWRlW2ldID09PSAwKSB7XG4gICAgICAgICAgICAgICAgbkxlZnQgKz0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIG5SaWdodCArPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG1hcmdpbiA+IDApIHtcbiAgICAgICAgICAgIHNpZGVbaV0gPSAwO1xuICAgICAgICAgICAgbkxlZnQgKz0gMTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHNpZGVbaV0gPSAxO1xuICAgICAgICAgICAgblJpZ2h0ICs9IDE7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIGluZGljZXNMZWZ0ID0gdXRpbHMuemVyb3MobkxlZnQpO1xuICAgIHZhciBpbmRpY2VzUmlnaHQgPSB1dGlscy56ZXJvcyhuUmlnaHQpO1xuICAgIG5MZWZ0ID0gMDtcbiAgICBuUmlnaHQgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2lkZS5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoc2lkZVtpXSA9PT0gMCkge1xuICAgICAgICAgICAgaW5kaWNlc0xlZnRbbkxlZnRdID0gaW5kaWNlc1tpXTtcbiAgICAgICAgICAgIG5MZWZ0ICs9IDE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpbmRpY2VzUmlnaHRbblJpZ2h0XSA9IGluZGljZXNbaV07XG4gICAgICAgICAgICBuUmlnaHQgKz0gMTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBpbmRpY2VzTGVmdDogaW5kaWNlc0xlZnQsXG4gICAgICAgIGluZGljZXNSaWdodDogaW5kaWNlc1JpZ2h0LFxuICAgICAgICBoeXBlcnBsYW5lOiBoeXBlcnBsYW5lVmVjdG9yLFxuICAgICAgICBvZmZzZXQ6IGh5cGVycGxhbmVPZmZzZXQsXG4gICAgfTtcbn1cbmZ1bmN0aW9uIGZsYXR0ZW5UcmVlKHRyZWUsIGxlYWZTaXplKSB7XG4gICAgdmFyIG5Ob2RlcyA9IG51bU5vZGVzKHRyZWUpO1xuICAgIHZhciBuTGVhdmVzID0gbnVtTGVhdmVzKHRyZWUpO1xuICAgIHZhciBoeXBlcnBsYW5lcyA9IHV0aWxzXG4gICAgICAgIC5yYW5nZShuTm9kZXMpXG4gICAgICAgIC5tYXAoZnVuY3Rpb24gKCkgeyByZXR1cm4gdXRpbHMuemVyb3ModHJlZS5oeXBlcnBsYW5lID8gdHJlZS5oeXBlcnBsYW5lLmxlbmd0aCA6IDApOyB9KTtcbiAgICB2YXIgb2Zmc2V0cyA9IHV0aWxzLnplcm9zKG5Ob2Rlcyk7XG4gICAgdmFyIGNoaWxkcmVuID0gdXRpbHMucmFuZ2Uobk5vZGVzKS5tYXAoZnVuY3Rpb24gKCkgeyByZXR1cm4gWy0xLCAtMV07IH0pO1xuICAgIHZhciBpbmRpY2VzID0gdXRpbHNcbiAgICAgICAgLnJhbmdlKG5MZWF2ZXMpXG4gICAgICAgIC5tYXAoZnVuY3Rpb24gKCkgeyByZXR1cm4gdXRpbHMucmFuZ2UobGVhZlNpemUpLm1hcChmdW5jdGlvbiAoKSB7IHJldHVybiAtMTsgfSk7IH0pO1xuICAgIHJlY3Vyc2l2ZUZsYXR0ZW4odHJlZSwgaHlwZXJwbGFuZXMsIG9mZnNldHMsIGNoaWxkcmVuLCBpbmRpY2VzLCAwLCAwKTtcbiAgICByZXR1cm4gbmV3IEZsYXRUcmVlKGh5cGVycGxhbmVzLCBvZmZzZXRzLCBjaGlsZHJlbiwgaW5kaWNlcyk7XG59XG5mdW5jdGlvbiByZWN1cnNpdmVGbGF0dGVuKHRyZWUsIGh5cGVycGxhbmVzLCBvZmZzZXRzLCBjaGlsZHJlbiwgaW5kaWNlcywgbm9kZU51bSwgbGVhZk51bSkge1xuICAgIHZhciBfYTtcbiAgICBpZiAodHJlZS5pc0xlYWYpIHtcbiAgICAgICAgY2hpbGRyZW5bbm9kZU51bV1bMF0gPSAtbGVhZk51bTtcbiAgICAgICAgKF9hID0gaW5kaWNlc1tsZWFmTnVtXSkuc3BsaWNlLmFwcGx5KF9hLCBfX3NwcmVhZChbMCwgdHJlZS5pbmRpY2VzLmxlbmd0aF0sIHRyZWUuaW5kaWNlcykpO1xuICAgICAgICBsZWFmTnVtICs9IDE7XG4gICAgICAgIHJldHVybiB7IG5vZGVOdW06IG5vZGVOdW0sIGxlYWZOdW06IGxlYWZOdW0gfTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGh5cGVycGxhbmVzW25vZGVOdW1dID0gdHJlZS5oeXBlcnBsYW5lO1xuICAgICAgICBvZmZzZXRzW25vZGVOdW1dID0gdHJlZS5vZmZzZXQ7XG4gICAgICAgIGNoaWxkcmVuW25vZGVOdW1dWzBdID0gbm9kZU51bSArIDE7XG4gICAgICAgIHZhciBvbGROb2RlTnVtID0gbm9kZU51bTtcbiAgICAgICAgdmFyIHJlcyA9IHJlY3Vyc2l2ZUZsYXR0ZW4odHJlZS5sZWZ0Q2hpbGQsIGh5cGVycGxhbmVzLCBvZmZzZXRzLCBjaGlsZHJlbiwgaW5kaWNlcywgbm9kZU51bSArIDEsIGxlYWZOdW0pO1xuICAgICAgICBub2RlTnVtID0gcmVzLm5vZGVOdW07XG4gICAgICAgIGxlYWZOdW0gPSByZXMubGVhZk51bTtcbiAgICAgICAgY2hpbGRyZW5bb2xkTm9kZU51bV1bMV0gPSBub2RlTnVtICsgMTtcbiAgICAgICAgcmVzID0gcmVjdXJzaXZlRmxhdHRlbih0cmVlLnJpZ2h0Q2hpbGQsIGh5cGVycGxhbmVzLCBvZmZzZXRzLCBjaGlsZHJlbiwgaW5kaWNlcywgbm9kZU51bSArIDEsIGxlYWZOdW0pO1xuICAgICAgICByZXR1cm4geyBub2RlTnVtOiByZXMubm9kZU51bSwgbGVhZk51bTogcmVzLmxlYWZOdW0gfTtcbiAgICB9XG59XG5mdW5jdGlvbiBudW1Ob2Rlcyh0cmVlKSB7XG4gICAgaWYgKHRyZWUuaXNMZWFmKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDEgKyBudW1Ob2Rlcyh0cmVlLmxlZnRDaGlsZCkgKyBudW1Ob2Rlcyh0cmVlLnJpZ2h0Q2hpbGQpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIG51bUxlYXZlcyh0cmVlKSB7XG4gICAgaWYgKHRyZWUuaXNMZWFmKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bUxlYXZlcyh0cmVlLmxlZnRDaGlsZCkgKyBudW1MZWF2ZXModHJlZS5yaWdodENoaWxkKTtcbiAgICB9XG59XG5mdW5jdGlvbiBtYWtlTGVhZkFycmF5KHJwRm9yZXN0KSB7XG4gICAgdmFyIGVfMSwgX2E7XG4gICAgaWYgKHJwRm9yZXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgdmFyIG91dHB1dCA9IFtdO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgcnBGb3Jlc3RfMSA9IF9fdmFsdWVzKHJwRm9yZXN0KSwgcnBGb3Jlc3RfMV8xID0gcnBGb3Jlc3RfMS5uZXh0KCk7ICFycEZvcmVzdF8xXzEuZG9uZTsgcnBGb3Jlc3RfMV8xID0gcnBGb3Jlc3RfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgdHJlZSA9IHJwRm9yZXN0XzFfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICBvdXRwdXQucHVzaC5hcHBseShvdXRwdXQsIF9fc3ByZWFkKHRyZWUuaW5kaWNlcykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAocnBGb3Jlc3RfMV8xICYmICFycEZvcmVzdF8xXzEuZG9uZSAmJiAoX2EgPSBycEZvcmVzdF8xLnJldHVybikpIF9hLmNhbGwocnBGb3Jlc3RfMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBbWy0xXV07XG4gICAgfVxufVxuZXhwb3J0cy5tYWtlTGVhZkFycmF5ID0gbWFrZUxlYWZBcnJheTtcbmZ1bmN0aW9uIHNlbGVjdFNpZGUoaHlwZXJwbGFuZSwgb2Zmc2V0LCBwb2ludCwgcmFuZG9tKSB7XG4gICAgdmFyIG1hcmdpbiA9IG9mZnNldDtcbiAgICBmb3IgKHZhciBkID0gMDsgZCA8IHBvaW50Lmxlbmd0aDsgZCsrKSB7XG4gICAgICAgIG1hcmdpbiArPSBoeXBlcnBsYW5lW2RdICogcG9pbnRbZF07XG4gICAgfVxuICAgIGlmIChtYXJnaW4gPT09IDApIHtcbiAgICAgICAgdmFyIHNpZGUgPSB1dGlscy50YXVSYW5kSW50KDIsIHJhbmRvbSk7XG4gICAgICAgIHJldHVybiBzaWRlO1xuICAgIH1cbiAgICBlbHNlIGlmIChtYXJnaW4gPiAwKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxufVxuZnVuY3Rpb24gc2VhcmNoRmxhdFRyZWUocG9pbnQsIHRyZWUsIHJhbmRvbSkge1xuICAgIHZhciBub2RlID0gMDtcbiAgICB3aGlsZSAodHJlZS5jaGlsZHJlbltub2RlXVswXSA+IDApIHtcbiAgICAgICAgdmFyIHNpZGUgPSBzZWxlY3RTaWRlKHRyZWUuaHlwZXJwbGFuZXNbbm9kZV0sIHRyZWUub2Zmc2V0c1tub2RlXSwgcG9pbnQsIHJhbmRvbSk7XG4gICAgICAgIGlmIChzaWRlID09PSAwKSB7XG4gICAgICAgICAgICBub2RlID0gdHJlZS5jaGlsZHJlbltub2RlXVswXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG5vZGUgPSB0cmVlLmNoaWxkcmVuW25vZGVdWzFdO1xuICAgICAgICB9XG4gICAgfVxuICAgIHZhciBpbmRleCA9IC0xICogdHJlZS5jaGlsZHJlbltub2RlXVswXTtcbiAgICByZXR1cm4gdHJlZS5pbmRpY2VzW2luZGV4XTtcbn1cbmV4cG9ydHMuc2VhcmNoRmxhdFRyZWUgPSBzZWFyY2hGbGF0VHJlZTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZShyZXN1bHQudmFsdWUpOyB9KS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX3JlYWQgPSAodGhpcyAmJiB0aGlzLl9fcmVhZCkgfHwgZnVuY3Rpb24gKG8sIG4pIHtcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XG4gICAgaWYgKCFtKSByZXR1cm4gbztcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcbiAgICB0cnkge1xuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XG4gICAgZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cbiAgICB9XG4gICAgcmV0dXJuIGFyO1xufTtcbnZhciBfX3NwcmVhZCA9ICh0aGlzICYmIHRoaXMuX19zcHJlYWQpIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBmb3IgKHZhciBhciA9IFtdLCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xuICAgIHJldHVybiBhcjtcbn07XG52YXIgX19pbXBvcnRTdGFyID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydFN0YXIpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xuICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgaW4gbW9kKSBpZiAoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwobW9kLCBrKSkgcmVzdWx0W2tdID0gbW9kW2tdO1xuICAgIHJlc3VsdFtcImRlZmF1bHRcIl0gPSBtb2Q7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgaGVhcCA9IF9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9oZWFwXCIpKTtcbnZhciBtYXRyaXggPSBfX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vbWF0cml4XCIpKTtcbnZhciBubkRlc2NlbnQgPSBfX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vbm5fZGVzY2VudFwiKSk7XG52YXIgdHJlZSA9IF9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi90cmVlXCIpKTtcbnZhciB1dGlscyA9IF9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi91dGlsc1wiKSk7XG52YXIgbWxfbGV2ZW5iZXJnX21hcnF1YXJkdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtbC1sZXZlbmJlcmctbWFycXVhcmR0XCIpKTtcbnZhciBTTU9PVEhfS19UT0xFUkFOQ0UgPSAxZS01O1xudmFyIE1JTl9LX0RJU1RfU0NBTEUgPSAxZS0zO1xudmFyIFVNQVAgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFVNQVAocGFyYW1zKSB7XG4gICAgICAgIGlmIChwYXJhbXMgPT09IHZvaWQgMCkgeyBwYXJhbXMgPSB7fTsgfVxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB0aGlzLmxlYXJuaW5nUmF0ZSA9IDEuMDtcbiAgICAgICAgdGhpcy5sb2NhbENvbm5lY3Rpdml0eSA9IDEuMDtcbiAgICAgICAgdGhpcy5taW5EaXN0ID0gMC4xO1xuICAgICAgICB0aGlzLm5Db21wb25lbnRzID0gMjtcbiAgICAgICAgdGhpcy5uRXBvY2hzID0gMDtcbiAgICAgICAgdGhpcy5uTmVpZ2hib3JzID0gMTU7XG4gICAgICAgIHRoaXMubmVnYXRpdmVTYW1wbGVSYXRlID0gNTtcbiAgICAgICAgdGhpcy5yYW5kb20gPSBNYXRoLnJhbmRvbTtcbiAgICAgICAgdGhpcy5yZXB1bHNpb25TdHJlbmd0aCA9IDEuMDtcbiAgICAgICAgdGhpcy5zZXRPcE1peFJhdGlvID0gMS4wO1xuICAgICAgICB0aGlzLnNwcmVhZCA9IDEuMDtcbiAgICAgICAgdGhpcy50cmFuc2Zvcm1RdWV1ZVNpemUgPSA0LjA7XG4gICAgICAgIHRoaXMudGFyZ2V0TWV0cmljID0gXCJjYXRlZ29yaWNhbFwiO1xuICAgICAgICB0aGlzLnRhcmdldFdlaWdodCA9IDAuNTtcbiAgICAgICAgdGhpcy50YXJnZXROTmVpZ2hib3JzID0gdGhpcy5uTmVpZ2hib3JzO1xuICAgICAgICB0aGlzLmRpc3RhbmNlRm4gPSBldWNsaWRlYW47XG4gICAgICAgIHRoaXMuaXNJbml0aWFsaXplZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJwRm9yZXN0ID0gW107XG4gICAgICAgIHRoaXMuZW1iZWRkaW5nID0gW107XG4gICAgICAgIHRoaXMub3B0aW1pemF0aW9uU3RhdGUgPSBuZXcgT3B0aW1pemF0aW9uU3RhdGUoKTtcbiAgICAgICAgdmFyIHNldFBhcmFtID0gZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgaWYgKHBhcmFtc1trZXldICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgX3RoaXNba2V5XSA9IHBhcmFtc1trZXldO1xuICAgICAgICB9O1xuICAgICAgICBzZXRQYXJhbSgnZGlzdGFuY2VGbicpO1xuICAgICAgICBzZXRQYXJhbSgnbGVhcm5pbmdSYXRlJyk7XG4gICAgICAgIHNldFBhcmFtKCdsb2NhbENvbm5lY3Rpdml0eScpO1xuICAgICAgICBzZXRQYXJhbSgnbWluRGlzdCcpO1xuICAgICAgICBzZXRQYXJhbSgnbkNvbXBvbmVudHMnKTtcbiAgICAgICAgc2V0UGFyYW0oJ25FcG9jaHMnKTtcbiAgICAgICAgc2V0UGFyYW0oJ25OZWlnaGJvcnMnKTtcbiAgICAgICAgc2V0UGFyYW0oJ25lZ2F0aXZlU2FtcGxlUmF0ZScpO1xuICAgICAgICBzZXRQYXJhbSgncmFuZG9tJyk7XG4gICAgICAgIHNldFBhcmFtKCdyZXB1bHNpb25TdHJlbmd0aCcpO1xuICAgICAgICBzZXRQYXJhbSgnc2V0T3BNaXhSYXRpbycpO1xuICAgICAgICBzZXRQYXJhbSgnc3ByZWFkJyk7XG4gICAgICAgIHNldFBhcmFtKCd0cmFuc2Zvcm1RdWV1ZVNpemUnKTtcbiAgICB9XG4gICAgVU1BUC5wcm90b3R5cGUuZml0ID0gZnVuY3Rpb24gKFgpIHtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplRml0KFgpO1xuICAgICAgICB0aGlzLm9wdGltaXplTGF5b3V0KCk7XG4gICAgICAgIHJldHVybiB0aGlzLmVtYmVkZGluZztcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLmZpdEFzeW5jID0gZnVuY3Rpb24gKFgsIGNhbGxiYWNrKSB7XG4gICAgICAgIGlmIChjYWxsYmFjayA9PT0gdm9pZCAwKSB7IGNhbGxiYWNrID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdHJ1ZTsgfTsgfVxuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVGaXQoWCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQsIHRoaXMub3B0aW1pemVMYXlvdXRBc3luYyhjYWxsYmFjayldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIsIHRoaXMuZW1iZWRkaW5nXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5zZXRTdXBlcnZpc2VkUHJvamVjdGlvbiA9IGZ1bmN0aW9uIChZLCBwYXJhbXMpIHtcbiAgICAgICAgaWYgKHBhcmFtcyA9PT0gdm9pZCAwKSB7IHBhcmFtcyA9IHt9OyB9XG4gICAgICAgIHRoaXMuWSA9IFk7XG4gICAgICAgIHRoaXMudGFyZ2V0TWV0cmljID0gcGFyYW1zLnRhcmdldE1ldHJpYyB8fCB0aGlzLnRhcmdldE1ldHJpYztcbiAgICAgICAgdGhpcy50YXJnZXRXZWlnaHQgPSBwYXJhbXMudGFyZ2V0V2VpZ2h0IHx8IHRoaXMudGFyZ2V0V2VpZ2h0O1xuICAgICAgICB0aGlzLnRhcmdldE5OZWlnaGJvcnMgPSBwYXJhbXMudGFyZ2V0Tk5laWdoYm9ycyB8fCB0aGlzLnRhcmdldE5OZWlnaGJvcnM7XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5zZXRQcmVjb21wdXRlZEtOTiA9IGZ1bmN0aW9uIChrbm5JbmRpY2VzLCBrbm5EaXN0YW5jZXMpIHtcbiAgICAgICAgdGhpcy5rbm5JbmRpY2VzID0ga25uSW5kaWNlcztcbiAgICAgICAgdGhpcy5rbm5EaXN0YW5jZXMgPSBrbm5EaXN0YW5jZXM7XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5pbml0aWFsaXplRml0ID0gZnVuY3Rpb24gKFgpIHtcbiAgICAgICAgaWYgKFgubGVuZ3RoIDw9IHRoaXMubk5laWdoYm9ycykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm90IGVub3VnaCBkYXRhIHBvaW50cyAoXCIgKyBYLmxlbmd0aCArIFwiKSB0byBjcmVhdGUgbk5laWdoYm9yczogXCIgKyB0aGlzLm5OZWlnaGJvcnMgKyBcIi4gIEFkZCBtb3JlIGRhdGEgcG9pbnRzIG9yIGFkanVzdCB0aGUgY29uZmlndXJhdGlvbi5cIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuWCA9PT0gWCAmJiB0aGlzLmlzSW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE5FcG9jaHMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLlggPSBYO1xuICAgICAgICBpZiAoIXRoaXMua25uSW5kaWNlcyAmJiAhdGhpcy5rbm5EaXN0YW5jZXMpIHtcbiAgICAgICAgICAgIHZhciBrbm5SZXN1bHRzID0gdGhpcy5uZWFyZXN0TmVpZ2hib3JzKFgpO1xuICAgICAgICAgICAgdGhpcy5rbm5JbmRpY2VzID0ga25uUmVzdWx0cy5rbm5JbmRpY2VzO1xuICAgICAgICAgICAgdGhpcy5rbm5EaXN0YW5jZXMgPSBrbm5SZXN1bHRzLmtubkRpc3RhbmNlcztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdyYXBoID0gdGhpcy5mdXp6eVNpbXBsaWNpYWxTZXQoWCwgdGhpcy5uTmVpZ2hib3JzLCB0aGlzLnNldE9wTWl4UmF0aW8pO1xuICAgICAgICB0aGlzLm1ha2VTZWFyY2hGbnMoKTtcbiAgICAgICAgdGhpcy5zZWFyY2hHcmFwaCA9IHRoaXMubWFrZVNlYXJjaEdyYXBoKFgpO1xuICAgICAgICB0aGlzLnByb2Nlc3NHcmFwaEZvclN1cGVydmlzZWRQcm9qZWN0aW9uKCk7XG4gICAgICAgIHZhciBfYSA9IHRoaXMuaW5pdGlhbGl6ZVNpbXBsaWNpYWxTZXRFbWJlZGRpbmcoKSwgaGVhZCA9IF9hLmhlYWQsIHRhaWwgPSBfYS50YWlsLCBlcG9jaHNQZXJTYW1wbGUgPSBfYS5lcG9jaHNQZXJTYW1wbGU7XG4gICAgICAgIHRoaXMub3B0aW1pemF0aW9uU3RhdGUuaGVhZCA9IGhlYWQ7XG4gICAgICAgIHRoaXMub3B0aW1pemF0aW9uU3RhdGUudGFpbCA9IHRhaWw7XG4gICAgICAgIHRoaXMub3B0aW1pemF0aW9uU3RhdGUuZXBvY2hzUGVyU2FtcGxlID0gZXBvY2hzUGVyU2FtcGxlO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVPcHRpbWl6YXRpb24oKTtcbiAgICAgICAgdGhpcy5wcmVwYXJlRm9yT3B0aW1pemF0aW9uTG9vcCgpO1xuICAgICAgICB0aGlzLmlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRORXBvY2hzKCk7XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5tYWtlU2VhcmNoRm5zID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2EgPSBubkRlc2NlbnQubWFrZUluaXRpYWxpemF0aW9ucyh0aGlzLmRpc3RhbmNlRm4pLCBpbml0RnJvbVRyZWUgPSBfYS5pbml0RnJvbVRyZWUsIGluaXRGcm9tUmFuZG9tID0gX2EuaW5pdEZyb21SYW5kb207XG4gICAgICAgIHRoaXMuaW5pdEZyb21UcmVlID0gaW5pdEZyb21UcmVlO1xuICAgICAgICB0aGlzLmluaXRGcm9tUmFuZG9tID0gaW5pdEZyb21SYW5kb207XG4gICAgICAgIHRoaXMuc2VhcmNoID0gbm5EZXNjZW50Lm1ha2VJbml0aWFsaXplZE5OU2VhcmNoKHRoaXMuZGlzdGFuY2VGbik7XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5tYWtlU2VhcmNoR3JhcGggPSBmdW5jdGlvbiAoWCkge1xuICAgICAgICB2YXIga25uSW5kaWNlcyA9IHRoaXMua25uSW5kaWNlcztcbiAgICAgICAgdmFyIGtubkRpc3RhbmNlcyA9IHRoaXMua25uRGlzdGFuY2VzO1xuICAgICAgICB2YXIgZGltcyA9IFtYLmxlbmd0aCwgWC5sZW5ndGhdO1xuICAgICAgICB2YXIgc2VhcmNoR3JhcGggPSBuZXcgbWF0cml4LlNwYXJzZU1hdHJpeChbXSwgW10sIFtdLCBkaW1zKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrbm5JbmRpY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIga25uID0ga25uSW5kaWNlc1tpXTtcbiAgICAgICAgICAgIHZhciBkaXN0YW5jZXMgPSBrbm5EaXN0YW5jZXNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGtubi5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIHZhciBuZWlnaGJvciA9IGtubltqXTtcbiAgICAgICAgICAgICAgICB2YXIgZGlzdGFuY2UgPSBkaXN0YW5jZXNbal07XG4gICAgICAgICAgICAgICAgaWYgKGRpc3RhbmNlID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBzZWFyY2hHcmFwaC5zZXQoaSwgbmVpZ2hib3IsIGRpc3RhbmNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRyYW5zcG9zZSA9IG1hdHJpeC50cmFuc3Bvc2Uoc2VhcmNoR3JhcGgpO1xuICAgICAgICByZXR1cm4gbWF0cml4Lm1heGltdW0oc2VhcmNoR3JhcGgsIHRyYW5zcG9zZSk7XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS50cmFuc2Zvcm0gPSBmdW5jdGlvbiAodG9UcmFuc2Zvcm0pIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIHJhd0RhdGEgPSB0aGlzLlg7XG4gICAgICAgIGlmIChyYXdEYXRhID09PSB1bmRlZmluZWQgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gZGF0YSBoYXMgYmVlbiBmaXQuJyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG5OZWlnaGJvcnMgPSBNYXRoLmZsb29yKHRoaXMubk5laWdoYm9ycyAqIHRoaXMudHJhbnNmb3JtUXVldWVTaXplKTtcbiAgICAgICAgbk5laWdoYm9ycyA9IE1hdGgubWluKHJhd0RhdGEubGVuZ3RoLCBuTmVpZ2hib3JzKTtcbiAgICAgICAgdmFyIGluaXQgPSBubkRlc2NlbnQuaW5pdGlhbGl6ZVNlYXJjaCh0aGlzLnJwRm9yZXN0LCByYXdEYXRhLCB0b1RyYW5zZm9ybSwgbk5laWdoYm9ycywgdGhpcy5pbml0RnJvbVJhbmRvbSwgdGhpcy5pbml0RnJvbVRyZWUsIHRoaXMucmFuZG9tKTtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuc2VhcmNoKHJhd0RhdGEsIHRoaXMuc2VhcmNoR3JhcGgsIGluaXQsIHRvVHJhbnNmb3JtKTtcbiAgICAgICAgdmFyIF9hID0gaGVhcC5kZWhlYXBTb3J0KHJlc3VsdCksIGluZGljZXMgPSBfYS5pbmRpY2VzLCBkaXN0YW5jZXMgPSBfYS53ZWlnaHRzO1xuICAgICAgICBpbmRpY2VzID0gaW5kaWNlcy5tYXAoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHguc2xpY2UoMCwgX3RoaXMubk5laWdoYm9ycyk7IH0pO1xuICAgICAgICBkaXN0YW5jZXMgPSBkaXN0YW5jZXMubWFwKGZ1bmN0aW9uICh4KSB7IHJldHVybiB4LnNsaWNlKDAsIF90aGlzLm5OZWlnaGJvcnMpOyB9KTtcbiAgICAgICAgdmFyIGFkanVzdGVkTG9jYWxDb25uZWN0aXZpdHkgPSBNYXRoLm1heCgwLCB0aGlzLmxvY2FsQ29ubmVjdGl2aXR5IC0gMSk7XG4gICAgICAgIHZhciBfYiA9IHRoaXMuc21vb3RoS05ORGlzdGFuY2UoZGlzdGFuY2VzLCB0aGlzLm5OZWlnaGJvcnMsIGFkanVzdGVkTG9jYWxDb25uZWN0aXZpdHkpLCBzaWdtYXMgPSBfYi5zaWdtYXMsIHJob3MgPSBfYi5yaG9zO1xuICAgICAgICB2YXIgX2MgPSB0aGlzLmNvbXB1dGVNZW1iZXJzaGlwU3RyZW5ndGhzKGluZGljZXMsIGRpc3RhbmNlcywgc2lnbWFzLCByaG9zKSwgcm93cyA9IF9jLnJvd3MsIGNvbHMgPSBfYy5jb2xzLCB2YWxzID0gX2MudmFscztcbiAgICAgICAgdmFyIHNpemUgPSBbdG9UcmFuc2Zvcm0ubGVuZ3RoLCByYXdEYXRhLmxlbmd0aF07XG4gICAgICAgIHZhciBncmFwaCA9IG5ldyBtYXRyaXguU3BhcnNlTWF0cml4KHJvd3MsIGNvbHMsIHZhbHMsIHNpemUpO1xuICAgICAgICB2YXIgbm9ybWVkID0gbWF0cml4Lm5vcm1hbGl6ZShncmFwaCwgXCJsMVwiKTtcbiAgICAgICAgdmFyIGNzck1hdHJpeCA9IG1hdHJpeC5nZXRDU1Iobm9ybWVkKTtcbiAgICAgICAgdmFyIG5Qb2ludHMgPSB0b1RyYW5zZm9ybS5sZW5ndGg7XG4gICAgICAgIHZhciBlSW5kaWNlcyA9IHV0aWxzLnJlc2hhcGUyZChjc3JNYXRyaXguaW5kaWNlcywgblBvaW50cywgdGhpcy5uTmVpZ2hib3JzKTtcbiAgICAgICAgdmFyIGVXZWlnaHRzID0gdXRpbHMucmVzaGFwZTJkKGNzck1hdHJpeC52YWx1ZXMsIG5Qb2ludHMsIHRoaXMubk5laWdoYm9ycyk7XG4gICAgICAgIHZhciBlbWJlZGRpbmcgPSBpbml0VHJhbnNmb3JtKGVJbmRpY2VzLCBlV2VpZ2h0cywgdGhpcy5lbWJlZGRpbmcpO1xuICAgICAgICB2YXIgbkVwb2NocyA9IHRoaXMubkVwb2Noc1xuICAgICAgICAgICAgPyB0aGlzLm5FcG9jaHMgLyAzXG4gICAgICAgICAgICA6IGdyYXBoLm5Sb3dzIDw9IDEwMDAwXG4gICAgICAgICAgICAgICAgPyAxMDBcbiAgICAgICAgICAgICAgICA6IDMwO1xuICAgICAgICB2YXIgZ3JhcGhNYXggPSBncmFwaFxuICAgICAgICAgICAgLmdldFZhbHVlcygpXG4gICAgICAgICAgICAucmVkdWNlKGZ1bmN0aW9uIChtYXgsIHZhbCkgeyByZXR1cm4gKHZhbCA+IG1heCA/IHZhbCA6IG1heCk7IH0sIDApO1xuICAgICAgICBncmFwaCA9IGdyYXBoLm1hcChmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuICh2YWx1ZSA8IGdyYXBoTWF4IC8gbkVwb2NocyA/IDAgOiB2YWx1ZSk7IH0pO1xuICAgICAgICBncmFwaCA9IG1hdHJpeC5lbGltaW5hdGVaZXJvcyhncmFwaCk7XG4gICAgICAgIHZhciBlcG9jaHNQZXJTYW1wbGUgPSB0aGlzLm1ha2VFcG9jaHNQZXJTYW1wbGUoZ3JhcGguZ2V0VmFsdWVzKCksIG5FcG9jaHMpO1xuICAgICAgICB2YXIgaGVhZCA9IGdyYXBoLmdldFJvd3MoKTtcbiAgICAgICAgdmFyIHRhaWwgPSBncmFwaC5nZXRDb2xzKCk7XG4gICAgICAgIHRoaXMuYXNzaWduT3B0aW1pemF0aW9uU3RhdGVQYXJhbWV0ZXJzKHtcbiAgICAgICAgICAgIGhlYWRFbWJlZGRpbmc6IGVtYmVkZGluZyxcbiAgICAgICAgICAgIHRhaWxFbWJlZGRpbmc6IHRoaXMuZW1iZWRkaW5nLFxuICAgICAgICAgICAgaGVhZDogaGVhZCxcbiAgICAgICAgICAgIHRhaWw6IHRhaWwsXG4gICAgICAgICAgICBjdXJyZW50RXBvY2g6IDAsXG4gICAgICAgICAgICBuRXBvY2hzOiBuRXBvY2hzLFxuICAgICAgICAgICAgblZlcnRpY2VzOiBncmFwaC5nZXREaW1zKClbMV0sXG4gICAgICAgICAgICBlcG9jaHNQZXJTYW1wbGU6IGVwb2Noc1BlclNhbXBsZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucHJlcGFyZUZvck9wdGltaXphdGlvbkxvb3AoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW1pemVMYXlvdXQoKTtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLnByb2Nlc3NHcmFwaEZvclN1cGVydmlzZWRQcm9qZWN0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCBZID0gX2EuWSwgWCA9IF9hLlg7XG4gICAgICAgIGlmIChZKSB7XG4gICAgICAgICAgICBpZiAoWS5sZW5ndGggIT09IFgubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdMZW5ndGggb2YgWCBhbmQgeSBtdXN0IGJlIGVxdWFsJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy50YXJnZXRNZXRyaWMgPT09IFwiY2F0ZWdvcmljYWxcIikge1xuICAgICAgICAgICAgICAgIHZhciBsdCA9IHRoaXMudGFyZ2V0V2VpZ2h0IDwgMS4wO1xuICAgICAgICAgICAgICAgIHZhciBmYXJEaXN0ID0gbHQgPyAyLjUgKiAoMS4wIC8gKDEuMCAtIHRoaXMudGFyZ2V0V2VpZ2h0KSkgOiAxLjBlMTI7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmFwaCA9IHRoaXMuY2F0ZWdvcmljYWxTaW1wbGljaWFsU2V0SW50ZXJzZWN0aW9uKHRoaXMuZ3JhcGgsIFksIGZhckRpc3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5zdGVwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgY3VycmVudEVwb2NoID0gdGhpcy5vcHRpbWl6YXRpb25TdGF0ZS5jdXJyZW50RXBvY2g7XG4gICAgICAgIGlmIChjdXJyZW50RXBvY2ggPCB0aGlzLmdldE5FcG9jaHMoKSkge1xuICAgICAgICAgICAgdGhpcy5vcHRpbWl6ZUxheW91dFN0ZXAoY3VycmVudEVwb2NoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5vcHRpbWl6YXRpb25TdGF0ZS5jdXJyZW50RXBvY2g7XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5nZXRFbWJlZGRpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVtYmVkZGluZztcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLm5lYXJlc3ROZWlnaGJvcnMgPSBmdW5jdGlvbiAoWCkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCBkaXN0YW5jZUZuID0gX2EuZGlzdGFuY2VGbiwgbk5laWdoYm9ycyA9IF9hLm5OZWlnaGJvcnM7XG4gICAgICAgIHZhciBsb2cyID0gZnVuY3Rpb24gKG4pIHsgcmV0dXJuIE1hdGgubG9nKG4pIC8gTWF0aC5sb2coMik7IH07XG4gICAgICAgIHZhciBtZXRyaWNOTkRlc2NlbnQgPSBubkRlc2NlbnQubWFrZU5ORGVzY2VudChkaXN0YW5jZUZuLCB0aGlzLnJhbmRvbSk7XG4gICAgICAgIHZhciByb3VuZCA9IGZ1bmN0aW9uIChuKSB7XG4gICAgICAgICAgICByZXR1cm4gbiA9PT0gMC41ID8gMCA6IE1hdGgucm91bmQobik7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBuVHJlZXMgPSA1ICsgTWF0aC5mbG9vcihyb3VuZChNYXRoLnBvdyhYLmxlbmd0aCwgMC41KSAvIDIwLjApKTtcbiAgICAgICAgdmFyIG5JdGVycyA9IE1hdGgubWF4KDUsIE1hdGguZmxvb3IoTWF0aC5yb3VuZChsb2cyKFgubGVuZ3RoKSkpKTtcbiAgICAgICAgdGhpcy5ycEZvcmVzdCA9IHRyZWUubWFrZUZvcmVzdChYLCBuTmVpZ2hib3JzLCBuVHJlZXMsIHRoaXMucmFuZG9tKTtcbiAgICAgICAgdmFyIGxlYWZBcnJheSA9IHRyZWUubWFrZUxlYWZBcnJheSh0aGlzLnJwRm9yZXN0KTtcbiAgICAgICAgdmFyIF9iID0gbWV0cmljTk5EZXNjZW50KFgsIGxlYWZBcnJheSwgbk5laWdoYm9ycywgbkl0ZXJzKSwgaW5kaWNlcyA9IF9iLmluZGljZXMsIHdlaWdodHMgPSBfYi53ZWlnaHRzO1xuICAgICAgICByZXR1cm4geyBrbm5JbmRpY2VzOiBpbmRpY2VzLCBrbm5EaXN0YW5jZXM6IHdlaWdodHMgfTtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLmZ1enp5U2ltcGxpY2lhbFNldCA9IGZ1bmN0aW9uIChYLCBuTmVpZ2hib3JzLCBzZXRPcE1peFJhdGlvKSB7XG4gICAgICAgIGlmIChzZXRPcE1peFJhdGlvID09PSB2b2lkIDApIHsgc2V0T3BNaXhSYXRpbyA9IDEuMDsgfVxuICAgICAgICB2YXIgX2EgPSB0aGlzLCBfYiA9IF9hLmtubkluZGljZXMsIGtubkluZGljZXMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYiwgX2MgPSBfYS5rbm5EaXN0YW5jZXMsIGtubkRpc3RhbmNlcyA9IF9jID09PSB2b2lkIDAgPyBbXSA6IF9jLCBsb2NhbENvbm5lY3Rpdml0eSA9IF9hLmxvY2FsQ29ubmVjdGl2aXR5O1xuICAgICAgICB2YXIgX2QgPSB0aGlzLnNtb290aEtOTkRpc3RhbmNlKGtubkRpc3RhbmNlcywgbk5laWdoYm9ycywgbG9jYWxDb25uZWN0aXZpdHkpLCBzaWdtYXMgPSBfZC5zaWdtYXMsIHJob3MgPSBfZC5yaG9zO1xuICAgICAgICB2YXIgX2UgPSB0aGlzLmNvbXB1dGVNZW1iZXJzaGlwU3RyZW5ndGhzKGtubkluZGljZXMsIGtubkRpc3RhbmNlcywgc2lnbWFzLCByaG9zKSwgcm93cyA9IF9lLnJvd3MsIGNvbHMgPSBfZS5jb2xzLCB2YWxzID0gX2UudmFscztcbiAgICAgICAgdmFyIHNpemUgPSBbWC5sZW5ndGgsIFgubGVuZ3RoXTtcbiAgICAgICAgdmFyIHNwYXJzZU1hdHJpeCA9IG5ldyBtYXRyaXguU3BhcnNlTWF0cml4KHJvd3MsIGNvbHMsIHZhbHMsIHNpemUpO1xuICAgICAgICB2YXIgdHJhbnNwb3NlID0gbWF0cml4LnRyYW5zcG9zZShzcGFyc2VNYXRyaXgpO1xuICAgICAgICB2YXIgcHJvZE1hdHJpeCA9IG1hdHJpeC5wYWlyd2lzZU11bHRpcGx5KHNwYXJzZU1hdHJpeCwgdHJhbnNwb3NlKTtcbiAgICAgICAgdmFyIGEgPSBtYXRyaXguc3VidHJhY3QobWF0cml4LmFkZChzcGFyc2VNYXRyaXgsIHRyYW5zcG9zZSksIHByb2RNYXRyaXgpO1xuICAgICAgICB2YXIgYiA9IG1hdHJpeC5tdWx0aXBseVNjYWxhcihhLCBzZXRPcE1peFJhdGlvKTtcbiAgICAgICAgdmFyIGMgPSBtYXRyaXgubXVsdGlwbHlTY2FsYXIocHJvZE1hdHJpeCwgMS4wIC0gc2V0T3BNaXhSYXRpbyk7XG4gICAgICAgIHZhciByZXN1bHQgPSBtYXRyaXguYWRkKGIsIGMpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgVU1BUC5wcm90b3R5cGUuY2F0ZWdvcmljYWxTaW1wbGljaWFsU2V0SW50ZXJzZWN0aW9uID0gZnVuY3Rpb24gKHNpbXBsaWNpYWxTZXQsIHRhcmdldCwgZmFyRGlzdCwgdW5rbm93bkRpc3QpIHtcbiAgICAgICAgaWYgKHVua25vd25EaXN0ID09PSB2b2lkIDApIHsgdW5rbm93bkRpc3QgPSAxLjA7IH1cbiAgICAgICAgdmFyIGludGVyc2VjdGlvbiA9IGZhc3RJbnRlcnNlY3Rpb24oc2ltcGxpY2lhbFNldCwgdGFyZ2V0LCB1bmtub3duRGlzdCwgZmFyRGlzdCk7XG4gICAgICAgIGludGVyc2VjdGlvbiA9IG1hdHJpeC5lbGltaW5hdGVaZXJvcyhpbnRlcnNlY3Rpb24pO1xuICAgICAgICByZXR1cm4gcmVzZXRMb2NhbENvbm5lY3Rpdml0eShpbnRlcnNlY3Rpb24pO1xuICAgIH07XG4gICAgVU1BUC5wcm90b3R5cGUuc21vb3RoS05ORGlzdGFuY2UgPSBmdW5jdGlvbiAoZGlzdGFuY2VzLCBrLCBsb2NhbENvbm5lY3Rpdml0eSwgbkl0ZXIsIGJhbmR3aWR0aCkge1xuICAgICAgICBpZiAobG9jYWxDb25uZWN0aXZpdHkgPT09IHZvaWQgMCkgeyBsb2NhbENvbm5lY3Rpdml0eSA9IDEuMDsgfVxuICAgICAgICBpZiAobkl0ZXIgPT09IHZvaWQgMCkgeyBuSXRlciA9IDY0OyB9XG4gICAgICAgIGlmIChiYW5kd2lkdGggPT09IHZvaWQgMCkgeyBiYW5kd2lkdGggPSAxLjA7IH1cbiAgICAgICAgdmFyIHRhcmdldCA9IChNYXRoLmxvZyhrKSAvIE1hdGgubG9nKDIpKSAqIGJhbmR3aWR0aDtcbiAgICAgICAgdmFyIHJobyA9IHV0aWxzLnplcm9zKGRpc3RhbmNlcy5sZW5ndGgpO1xuICAgICAgICB2YXIgcmVzdWx0ID0gdXRpbHMuemVyb3MoZGlzdGFuY2VzLmxlbmd0aCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlzdGFuY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgbG8gPSAwLjA7XG4gICAgICAgICAgICB2YXIgaGkgPSBJbmZpbml0eTtcbiAgICAgICAgICAgIHZhciBtaWQgPSAxLjA7XG4gICAgICAgICAgICB2YXIgaXRoRGlzdGFuY2VzID0gZGlzdGFuY2VzW2ldO1xuICAgICAgICAgICAgdmFyIG5vblplcm9EaXN0cyA9IGl0aERpc3RhbmNlcy5maWx0ZXIoZnVuY3Rpb24gKGQpIHsgcmV0dXJuIGQgPiAwLjA7IH0pO1xuICAgICAgICAgICAgaWYgKG5vblplcm9EaXN0cy5sZW5ndGggPj0gbG9jYWxDb25uZWN0aXZpdHkpIHtcbiAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBNYXRoLmZsb29yKGxvY2FsQ29ubmVjdGl2aXR5KTtcbiAgICAgICAgICAgICAgICB2YXIgaW50ZXJwb2xhdGlvbiA9IGxvY2FsQ29ubmVjdGl2aXR5IC0gaW5kZXg7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICByaG9baV0gPSBub25aZXJvRGlzdHNbaW5kZXggLSAxXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGludGVycG9sYXRpb24gPiBTTU9PVEhfS19UT0xFUkFOQ0UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJob1tpXSArPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycG9sYXRpb24gKiAobm9uWmVyb0Rpc3RzW2luZGV4XSAtIG5vblplcm9EaXN0c1tpbmRleCAtIDFdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmhvW2ldID0gaW50ZXJwb2xhdGlvbiAqIG5vblplcm9EaXN0c1swXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChub25aZXJvRGlzdHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJob1tpXSA9IHV0aWxzLm1heChub25aZXJvRGlzdHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCBuSXRlcjsgbisrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHBzdW0gPSAwLjA7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDE7IGogPCBkaXN0YW5jZXNbaV0ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBkaXN0YW5jZXNbaV1bal0gLSByaG9baV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChkID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHN1bSArPSBNYXRoLmV4cCgtKGQgLyBtaWQpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBzdW0gKz0gMS4wO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhwc3VtIC0gdGFyZ2V0KSA8IFNNT09USF9LX1RPTEVSQU5DRSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHBzdW0gPiB0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgaGkgPSBtaWQ7XG4gICAgICAgICAgICAgICAgICAgIG1pZCA9IChsbyArIGhpKSAvIDIuMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxvID0gbWlkO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaGkgPT09IEluZmluaXR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtaWQgKj0gMjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pZCA9IChsbyArIGhpKSAvIDIuMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdFtpXSA9IG1pZDtcbiAgICAgICAgICAgIGlmIChyaG9baV0gPiAwLjApIHtcbiAgICAgICAgICAgICAgICB2YXIgbWVhbkl0aERpc3RhbmNlcyA9IHV0aWxzLm1lYW4oaXRoRGlzdGFuY2VzKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0W2ldIDwgTUlOX0tfRElTVF9TQ0FMRSAqIG1lYW5JdGhEaXN0YW5jZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2ldID0gTUlOX0tfRElTVF9TQ0FMRSAqIG1lYW5JdGhEaXN0YW5jZXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyIG1lYW5EaXN0YW5jZXMgPSB1dGlscy5tZWFuKGRpc3RhbmNlcy5tYXAodXRpbHMubWVhbikpO1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHRbaV0gPCBNSU5fS19ESVNUX1NDQUxFICogbWVhbkRpc3RhbmNlcykge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRbaV0gPSBNSU5fS19ESVNUX1NDQUxFICogbWVhbkRpc3RhbmNlcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgc2lnbWFzOiByZXN1bHQsIHJob3M6IHJobyB9O1xuICAgIH07XG4gICAgVU1BUC5wcm90b3R5cGUuY29tcHV0ZU1lbWJlcnNoaXBTdHJlbmd0aHMgPSBmdW5jdGlvbiAoa25uSW5kaWNlcywga25uRGlzdGFuY2VzLCBzaWdtYXMsIHJob3MpIHtcbiAgICAgICAgdmFyIG5TYW1wbGVzID0ga25uSW5kaWNlcy5sZW5ndGg7XG4gICAgICAgIHZhciBuTmVpZ2hib3JzID0ga25uSW5kaWNlc1swXS5sZW5ndGg7XG4gICAgICAgIHZhciByb3dzID0gdXRpbHMuemVyb3MoblNhbXBsZXMgKiBuTmVpZ2hib3JzKTtcbiAgICAgICAgdmFyIGNvbHMgPSB1dGlscy56ZXJvcyhuU2FtcGxlcyAqIG5OZWlnaGJvcnMpO1xuICAgICAgICB2YXIgdmFscyA9IHV0aWxzLnplcm9zKG5TYW1wbGVzICogbk5laWdoYm9ycyk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgblNhbXBsZXM7IGkrKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBuTmVpZ2hib3JzOyBqKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgdmFsID0gMDtcbiAgICAgICAgICAgICAgICBpZiAoa25uSW5kaWNlc1tpXVtqXSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChrbm5JbmRpY2VzW2ldW2pdID09PSBpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbCA9IDAuMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoa25uRGlzdGFuY2VzW2ldW2pdIC0gcmhvc1tpXSA8PSAwLjApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsID0gMS4wO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsID0gTWF0aC5leHAoLSgoa25uRGlzdGFuY2VzW2ldW2pdIC0gcmhvc1tpXSkgLyBzaWdtYXNbaV0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcm93c1tpICogbk5laWdoYm9ycyArIGpdID0gaTtcbiAgICAgICAgICAgICAgICBjb2xzW2kgKiBuTmVpZ2hib3JzICsgal0gPSBrbm5JbmRpY2VzW2ldW2pdO1xuICAgICAgICAgICAgICAgIHZhbHNbaSAqIG5OZWlnaGJvcnMgKyBqXSA9IHZhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyByb3dzOiByb3dzLCBjb2xzOiBjb2xzLCB2YWxzOiB2YWxzIH07XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5pbml0aWFsaXplU2ltcGxpY2lhbFNldEVtYmVkZGluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIG5FcG9jaHMgPSB0aGlzLmdldE5FcG9jaHMoKTtcbiAgICAgICAgdmFyIG5Db21wb25lbnRzID0gdGhpcy5uQ29tcG9uZW50cztcbiAgICAgICAgdmFyIGdyYXBoVmFsdWVzID0gdGhpcy5ncmFwaC5nZXRWYWx1ZXMoKTtcbiAgICAgICAgdmFyIGdyYXBoTWF4ID0gMDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBncmFwaFZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIHZhbHVlID0gZ3JhcGhWYWx1ZXNbaV07XG4gICAgICAgICAgICBpZiAoZ3JhcGhNYXggPCBncmFwaFZhbHVlc1tpXSkge1xuICAgICAgICAgICAgICAgIGdyYXBoTWF4ID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaC5tYXAoZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUgPCBncmFwaE1heCAvIG5FcG9jaHMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZW1iZWRkaW5nID0gdXRpbHMuemVyb3MoZ3JhcGgublJvd3MpLm1hcChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdXRpbHMuemVyb3MobkNvbXBvbmVudHMpLm1hcChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHV0aWxzLnRhdVJhbmQoX3RoaXMucmFuZG9tKSAqIDIwICsgLTEwO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgd2VpZ2h0cyA9IFtdO1xuICAgICAgICB2YXIgaGVhZCA9IFtdO1xuICAgICAgICB2YXIgdGFpbCA9IFtdO1xuICAgICAgICB2YXIgcm93Q29sVmFsdWVzID0gZ3JhcGguZ2V0QWxsKCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcm93Q29sVmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgZW50cnkgPSByb3dDb2xWYWx1ZXNbaV07XG4gICAgICAgICAgICBpZiAoZW50cnkudmFsdWUpIHtcbiAgICAgICAgICAgICAgICB3ZWlnaHRzLnB1c2goZW50cnkudmFsdWUpO1xuICAgICAgICAgICAgICAgIHRhaWwucHVzaChlbnRyeS5yb3cpO1xuICAgICAgICAgICAgICAgIGhlYWQucHVzaChlbnRyeS5jb2wpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciBlcG9jaHNQZXJTYW1wbGUgPSB0aGlzLm1ha2VFcG9jaHNQZXJTYW1wbGUod2VpZ2h0cywgbkVwb2Nocyk7XG4gICAgICAgIHJldHVybiB7IGhlYWQ6IGhlYWQsIHRhaWw6IHRhaWwsIGVwb2Noc1BlclNhbXBsZTogZXBvY2hzUGVyU2FtcGxlIH07XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5tYWtlRXBvY2hzUGVyU2FtcGxlID0gZnVuY3Rpb24gKHdlaWdodHMsIG5FcG9jaHMpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHV0aWxzLmZpbGxlZCh3ZWlnaHRzLmxlbmd0aCwgLTEuMCk7XG4gICAgICAgIHZhciBtYXggPSB1dGlscy5tYXgod2VpZ2h0cyk7XG4gICAgICAgIHZhciBuU2FtcGxlcyA9IHdlaWdodHMubWFwKGZ1bmN0aW9uICh3KSB7IHJldHVybiAodyAvIG1heCkgKiBuRXBvY2hzOyB9KTtcbiAgICAgICAgblNhbXBsZXMuZm9yRWFjaChmdW5jdGlvbiAobiwgaSkge1xuICAgICAgICAgICAgaWYgKG4gPiAwKVxuICAgICAgICAgICAgICAgIHJlc3VsdFtpXSA9IG5FcG9jaHMgLyBuU2FtcGxlc1tpXTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5hc3NpZ25PcHRpbWl6YXRpb25TdGF0ZVBhcmFtZXRlcnMgPSBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm9wdGltaXphdGlvblN0YXRlLCBzdGF0ZSk7XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5wcmVwYXJlRm9yT3B0aW1pemF0aW9uTG9vcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcywgcmVwdWxzaW9uU3RyZW5ndGggPSBfYS5yZXB1bHNpb25TdHJlbmd0aCwgbGVhcm5pbmdSYXRlID0gX2EubGVhcm5pbmdSYXRlLCBuZWdhdGl2ZVNhbXBsZVJhdGUgPSBfYS5uZWdhdGl2ZVNhbXBsZVJhdGU7XG4gICAgICAgIHZhciBfYiA9IHRoaXMub3B0aW1pemF0aW9uU3RhdGUsIGVwb2Noc1BlclNhbXBsZSA9IF9iLmVwb2Noc1BlclNhbXBsZSwgaGVhZEVtYmVkZGluZyA9IF9iLmhlYWRFbWJlZGRpbmcsIHRhaWxFbWJlZGRpbmcgPSBfYi50YWlsRW1iZWRkaW5nO1xuICAgICAgICB2YXIgZGltID0gaGVhZEVtYmVkZGluZ1swXS5sZW5ndGg7XG4gICAgICAgIHZhciBtb3ZlT3RoZXIgPSBoZWFkRW1iZWRkaW5nLmxlbmd0aCA9PT0gdGFpbEVtYmVkZGluZy5sZW5ndGg7XG4gICAgICAgIHZhciBlcG9jaHNQZXJOZWdhdGl2ZVNhbXBsZSA9IGVwb2Noc1BlclNhbXBsZS5tYXAoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUgLyBuZWdhdGl2ZVNhbXBsZVJhdGU7IH0pO1xuICAgICAgICB2YXIgZXBvY2hPZk5leHROZWdhdGl2ZVNhbXBsZSA9IF9fc3ByZWFkKGVwb2Noc1Blck5lZ2F0aXZlU2FtcGxlKTtcbiAgICAgICAgdmFyIGVwb2NoT2ZOZXh0U2FtcGxlID0gX19zcHJlYWQoZXBvY2hzUGVyU2FtcGxlKTtcbiAgICAgICAgdGhpcy5hc3NpZ25PcHRpbWl6YXRpb25TdGF0ZVBhcmFtZXRlcnMoe1xuICAgICAgICAgICAgZXBvY2hPZk5leHRTYW1wbGU6IGVwb2NoT2ZOZXh0U2FtcGxlLFxuICAgICAgICAgICAgZXBvY2hPZk5leHROZWdhdGl2ZVNhbXBsZTogZXBvY2hPZk5leHROZWdhdGl2ZVNhbXBsZSxcbiAgICAgICAgICAgIGVwb2Noc1Blck5lZ2F0aXZlU2FtcGxlOiBlcG9jaHNQZXJOZWdhdGl2ZVNhbXBsZSxcbiAgICAgICAgICAgIG1vdmVPdGhlcjogbW92ZU90aGVyLFxuICAgICAgICAgICAgaW5pdGlhbEFscGhhOiBsZWFybmluZ1JhdGUsXG4gICAgICAgICAgICBhbHBoYTogbGVhcm5pbmdSYXRlLFxuICAgICAgICAgICAgZ2FtbWE6IHJlcHVsc2lvblN0cmVuZ3RoLFxuICAgICAgICAgICAgZGltOiBkaW0sXG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgVU1BUC5wcm90b3R5cGUuaW5pdGlhbGl6ZU9wdGltaXphdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGhlYWRFbWJlZGRpbmcgPSB0aGlzLmVtYmVkZGluZztcbiAgICAgICAgdmFyIHRhaWxFbWJlZGRpbmcgPSB0aGlzLmVtYmVkZGluZztcbiAgICAgICAgdmFyIF9hID0gdGhpcy5vcHRpbWl6YXRpb25TdGF0ZSwgaGVhZCA9IF9hLmhlYWQsIHRhaWwgPSBfYS50YWlsLCBlcG9jaHNQZXJTYW1wbGUgPSBfYS5lcG9jaHNQZXJTYW1wbGU7XG4gICAgICAgIHZhciBuRXBvY2hzID0gdGhpcy5nZXRORXBvY2hzKCk7XG4gICAgICAgIHZhciBuVmVydGljZXMgPSB0aGlzLmdyYXBoLm5Db2xzO1xuICAgICAgICB2YXIgX2IgPSBmaW5kQUJQYXJhbXModGhpcy5zcHJlYWQsIHRoaXMubWluRGlzdCksIGEgPSBfYi5hLCBiID0gX2IuYjtcbiAgICAgICAgdGhpcy5hc3NpZ25PcHRpbWl6YXRpb25TdGF0ZVBhcmFtZXRlcnMoe1xuICAgICAgICAgICAgaGVhZEVtYmVkZGluZzogaGVhZEVtYmVkZGluZyxcbiAgICAgICAgICAgIHRhaWxFbWJlZGRpbmc6IHRhaWxFbWJlZGRpbmcsXG4gICAgICAgICAgICBoZWFkOiBoZWFkLFxuICAgICAgICAgICAgdGFpbDogdGFpbCxcbiAgICAgICAgICAgIGVwb2Noc1BlclNhbXBsZTogZXBvY2hzUGVyU2FtcGxlLFxuICAgICAgICAgICAgYTogYSxcbiAgICAgICAgICAgIGI6IGIsXG4gICAgICAgICAgICBuRXBvY2hzOiBuRXBvY2hzLFxuICAgICAgICAgICAgblZlcnRpY2VzOiBuVmVydGljZXMsXG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgVU1BUC5wcm90b3R5cGUub3B0aW1pemVMYXlvdXRTdGVwID0gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgdmFyIG9wdGltaXphdGlvblN0YXRlID0gdGhpcy5vcHRpbWl6YXRpb25TdGF0ZTtcbiAgICAgICAgdmFyIGhlYWQgPSBvcHRpbWl6YXRpb25TdGF0ZS5oZWFkLCB0YWlsID0gb3B0aW1pemF0aW9uU3RhdGUudGFpbCwgaGVhZEVtYmVkZGluZyA9IG9wdGltaXphdGlvblN0YXRlLmhlYWRFbWJlZGRpbmcsIHRhaWxFbWJlZGRpbmcgPSBvcHRpbWl6YXRpb25TdGF0ZS50YWlsRW1iZWRkaW5nLCBlcG9jaHNQZXJTYW1wbGUgPSBvcHRpbWl6YXRpb25TdGF0ZS5lcG9jaHNQZXJTYW1wbGUsIGVwb2NoT2ZOZXh0U2FtcGxlID0gb3B0aW1pemF0aW9uU3RhdGUuZXBvY2hPZk5leHRTYW1wbGUsIGVwb2NoT2ZOZXh0TmVnYXRpdmVTYW1wbGUgPSBvcHRpbWl6YXRpb25TdGF0ZS5lcG9jaE9mTmV4dE5lZ2F0aXZlU2FtcGxlLCBlcG9jaHNQZXJOZWdhdGl2ZVNhbXBsZSA9IG9wdGltaXphdGlvblN0YXRlLmVwb2Noc1Blck5lZ2F0aXZlU2FtcGxlLCBtb3ZlT3RoZXIgPSBvcHRpbWl6YXRpb25TdGF0ZS5tb3ZlT3RoZXIsIGluaXRpYWxBbHBoYSA9IG9wdGltaXphdGlvblN0YXRlLmluaXRpYWxBbHBoYSwgYWxwaGEgPSBvcHRpbWl6YXRpb25TdGF0ZS5hbHBoYSwgZ2FtbWEgPSBvcHRpbWl6YXRpb25TdGF0ZS5nYW1tYSwgYSA9IG9wdGltaXphdGlvblN0YXRlLmEsIGIgPSBvcHRpbWl6YXRpb25TdGF0ZS5iLCBkaW0gPSBvcHRpbWl6YXRpb25TdGF0ZS5kaW0sIG5FcG9jaHMgPSBvcHRpbWl6YXRpb25TdGF0ZS5uRXBvY2hzLCBuVmVydGljZXMgPSBvcHRpbWl6YXRpb25TdGF0ZS5uVmVydGljZXM7XG4gICAgICAgIHZhciBjbGlwVmFsdWUgPSA0LjA7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXBvY2hzUGVyU2FtcGxlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZXBvY2hPZk5leHRTYW1wbGVbaV0gPiBuKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgaiA9IGhlYWRbaV07XG4gICAgICAgICAgICB2YXIgayA9IHRhaWxbaV07XG4gICAgICAgICAgICB2YXIgY3VycmVudCA9IGhlYWRFbWJlZGRpbmdbal07XG4gICAgICAgICAgICB2YXIgb3RoZXIgPSB0YWlsRW1iZWRkaW5nW2tdO1xuICAgICAgICAgICAgdmFyIGRpc3RTcXVhcmVkID0gckRpc3QoY3VycmVudCwgb3RoZXIpO1xuICAgICAgICAgICAgdmFyIGdyYWRDb2VmZiA9IDA7XG4gICAgICAgICAgICBpZiAoZGlzdFNxdWFyZWQgPiAwKSB7XG4gICAgICAgICAgICAgICAgZ3JhZENvZWZmID0gLTIuMCAqIGEgKiBiICogTWF0aC5wb3coZGlzdFNxdWFyZWQsIGIgLSAxLjApO1xuICAgICAgICAgICAgICAgIGdyYWRDb2VmZiAvPSBhICogTWF0aC5wb3coZGlzdFNxdWFyZWQsIGIpICsgMS4wO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yICh2YXIgZCA9IDA7IGQgPCBkaW07IGQrKykge1xuICAgICAgICAgICAgICAgIHZhciBncmFkRCA9IGNsaXAoZ3JhZENvZWZmICogKGN1cnJlbnRbZF0gLSBvdGhlcltkXSksIGNsaXBWYWx1ZSk7XG4gICAgICAgICAgICAgICAgY3VycmVudFtkXSArPSBncmFkRCAqIGFscGhhO1xuICAgICAgICAgICAgICAgIGlmIChtb3ZlT3RoZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgb3RoZXJbZF0gKz0gLWdyYWREICogYWxwaGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXBvY2hPZk5leHRTYW1wbGVbaV0gKz0gZXBvY2hzUGVyU2FtcGxlW2ldO1xuICAgICAgICAgICAgdmFyIG5OZWdTYW1wbGVzID0gTWF0aC5mbG9vcigobiAtIGVwb2NoT2ZOZXh0TmVnYXRpdmVTYW1wbGVbaV0pIC8gZXBvY2hzUGVyTmVnYXRpdmVTYW1wbGVbaV0pO1xuICAgICAgICAgICAgZm9yICh2YXIgcCA9IDA7IHAgPCBuTmVnU2FtcGxlczsgcCsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGtfMSA9IHV0aWxzLnRhdVJhbmRJbnQoblZlcnRpY2VzLCB0aGlzLnJhbmRvbSk7XG4gICAgICAgICAgICAgICAgdmFyIG90aGVyXzEgPSB0YWlsRW1iZWRkaW5nW2tfMV07XG4gICAgICAgICAgICAgICAgdmFyIGRpc3RTcXVhcmVkXzEgPSByRGlzdChjdXJyZW50LCBvdGhlcl8xKTtcbiAgICAgICAgICAgICAgICB2YXIgZ3JhZENvZWZmXzEgPSAwLjA7XG4gICAgICAgICAgICAgICAgaWYgKGRpc3RTcXVhcmVkXzEgPiAwLjApIHtcbiAgICAgICAgICAgICAgICAgICAgZ3JhZENvZWZmXzEgPSAyLjAgKiBnYW1tYSAqIGI7XG4gICAgICAgICAgICAgICAgICAgIGdyYWRDb2VmZl8xIC89XG4gICAgICAgICAgICAgICAgICAgICAgICAoMC4wMDEgKyBkaXN0U3F1YXJlZF8xKSAqIChhICogTWF0aC5wb3coZGlzdFNxdWFyZWRfMSwgYikgKyAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaiA9PT0ga18xKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKHZhciBkID0gMDsgZCA8IGRpbTsgZCsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBncmFkRCA9IDQuMDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdyYWRDb2VmZl8xID4gMC4wKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBncmFkRCA9IGNsaXAoZ3JhZENvZWZmXzEgKiAoY3VycmVudFtkXSAtIG90aGVyXzFbZF0pLCBjbGlwVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRbZF0gKz0gZ3JhZEQgKiBhbHBoYTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlcG9jaE9mTmV4dE5lZ2F0aXZlU2FtcGxlW2ldICs9IG5OZWdTYW1wbGVzICogZXBvY2hzUGVyTmVnYXRpdmVTYW1wbGVbaV07XG4gICAgICAgIH1cbiAgICAgICAgb3B0aW1pemF0aW9uU3RhdGUuYWxwaGEgPSBpbml0aWFsQWxwaGEgKiAoMS4wIC0gbiAvIG5FcG9jaHMpO1xuICAgICAgICBvcHRpbWl6YXRpb25TdGF0ZS5jdXJyZW50RXBvY2ggKz0gMTtcbiAgICAgICAgcmV0dXJuIGhlYWRFbWJlZGRpbmc7XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5vcHRpbWl6ZUxheW91dEFzeW5jID0gZnVuY3Rpb24gKGVwb2NoQ2FsbGJhY2spIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKGVwb2NoQ2FsbGJhY2sgPT09IHZvaWQgMCkgeyBlcG9jaENhbGxiYWNrID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdHJ1ZTsgfTsgfVxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgdmFyIHN0ZXAgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hLCBuRXBvY2hzLCBjdXJyZW50RXBvY2gsIGVwb2NoQ29tcGxldGVkLCBzaG91bGRTdG9wLCBpc0ZpbmlzaGVkO1xuICAgICAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2IpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hID0gdGhpcy5vcHRpbWl6YXRpb25TdGF0ZSwgbkVwb2NocyA9IF9hLm5FcG9jaHMsIGN1cnJlbnRFcG9jaCA9IF9hLmN1cnJlbnRFcG9jaDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZW1iZWRkaW5nID0gdGhpcy5vcHRpbWl6ZUxheW91dFN0ZXAoY3VycmVudEVwb2NoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVwb2NoQ29tcGxldGVkID0gdGhpcy5vcHRpbWl6YXRpb25TdGF0ZS5jdXJyZW50RXBvY2g7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRTdG9wID0gZXBvY2hDYWxsYmFjayhlcG9jaENvbXBsZXRlZCkgPT09IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNGaW5pc2hlZCA9IGVwb2NoQ29tcGxldGVkID09PSBuRXBvY2hzO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRTdG9wICYmICFpc0ZpbmlzaGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiBzdGVwKCk7IH0sIDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyLCByZXNvbHZlKGlzRmluaXNoZWQpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzJdO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7IH07XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0ZXAoKTsgfSwgMCk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgVU1BUC5wcm90b3R5cGUub3B0aW1pemVMYXlvdXQgPSBmdW5jdGlvbiAoZXBvY2hDYWxsYmFjaykge1xuICAgICAgICBpZiAoZXBvY2hDYWxsYmFjayA9PT0gdm9pZCAwKSB7IGVwb2NoQ2FsbGJhY2sgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0cnVlOyB9OyB9XG4gICAgICAgIHZhciBpc0ZpbmlzaGVkID0gZmFsc2U7XG4gICAgICAgIHZhciBlbWJlZGRpbmcgPSBbXTtcbiAgICAgICAgd2hpbGUgKCFpc0ZpbmlzaGVkKSB7XG4gICAgICAgICAgICB2YXIgX2EgPSB0aGlzLm9wdGltaXphdGlvblN0YXRlLCBuRXBvY2hzID0gX2EubkVwb2NocywgY3VycmVudEVwb2NoID0gX2EuY3VycmVudEVwb2NoO1xuICAgICAgICAgICAgZW1iZWRkaW5nID0gdGhpcy5vcHRpbWl6ZUxheW91dFN0ZXAoY3VycmVudEVwb2NoKTtcbiAgICAgICAgICAgIHZhciBlcG9jaENvbXBsZXRlZCA9IHRoaXMub3B0aW1pemF0aW9uU3RhdGUuY3VycmVudEVwb2NoO1xuICAgICAgICAgICAgdmFyIHNob3VsZFN0b3AgPSBlcG9jaENhbGxiYWNrKGVwb2NoQ29tcGxldGVkKSA9PT0gZmFsc2U7XG4gICAgICAgICAgICBpc0ZpbmlzaGVkID0gZXBvY2hDb21wbGV0ZWQgPT09IG5FcG9jaHMgfHwgc2hvdWxkU3RvcDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZW1iZWRkaW5nO1xuICAgIH07XG4gICAgVU1BUC5wcm90b3R5cGUuZ2V0TkVwb2NocyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcbiAgICAgICAgaWYgKHRoaXMubkVwb2NocyA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5FcG9jaHM7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGxlbmd0aCA9IGdyYXBoLm5Sb3dzO1xuICAgICAgICBpZiAobGVuZ3RoIDw9IDI1MDApIHtcbiAgICAgICAgICAgIHJldHVybiA1MDA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobGVuZ3RoIDw9IDUwMDApIHtcbiAgICAgICAgICAgIHJldHVybiA0MDA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobGVuZ3RoIDw9IDc1MDApIHtcbiAgICAgICAgICAgIHJldHVybiAzMDA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gMjAwO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gVU1BUDtcbn0oKSk7XG5leHBvcnRzLlVNQVAgPSBVTUFQO1xuZnVuY3Rpb24gZXVjbGlkZWFuKHgsIHkpIHtcbiAgICB2YXIgcmVzdWx0ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzdWx0ICs9IE1hdGgucG93KCh4W2ldIC0geVtpXSksIDIpO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5zcXJ0KHJlc3VsdCk7XG59XG5leHBvcnRzLmV1Y2xpZGVhbiA9IGV1Y2xpZGVhbjtcbmZ1bmN0aW9uIGNvc2luZSh4LCB5KSB7XG4gICAgdmFyIHJlc3VsdCA9IDAuMDtcbiAgICB2YXIgbm9ybVggPSAwLjA7XG4gICAgdmFyIG5vcm1ZID0gMC4wO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeC5sZW5ndGg7IGkrKykge1xuICAgICAgICByZXN1bHQgKz0geFtpXSAqIHlbaV07XG4gICAgICAgIG5vcm1YICs9IE1hdGgucG93KHhbaV0sIDIpO1xuICAgICAgICBub3JtWSArPSBNYXRoLnBvdyh5W2ldLCAyKTtcbiAgICB9XG4gICAgaWYgKG5vcm1YID09PSAwICYmIG5vcm1ZID09PSAwKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBlbHNlIGlmIChub3JtWCA9PT0gMCB8fCBub3JtWSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gMS4wO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDEuMCAtIHJlc3VsdCAvIE1hdGguc3FydChub3JtWCAqIG5vcm1ZKTtcbiAgICB9XG59XG5leHBvcnRzLmNvc2luZSA9IGNvc2luZTtcbnZhciBPcHRpbWl6YXRpb25TdGF0ZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gT3B0aW1pemF0aW9uU3RhdGUoKSB7XG4gICAgICAgIHRoaXMuY3VycmVudEVwb2NoID0gMDtcbiAgICAgICAgdGhpcy5oZWFkRW1iZWRkaW5nID0gW107XG4gICAgICAgIHRoaXMudGFpbEVtYmVkZGluZyA9IFtdO1xuICAgICAgICB0aGlzLmhlYWQgPSBbXTtcbiAgICAgICAgdGhpcy50YWlsID0gW107XG4gICAgICAgIHRoaXMuZXBvY2hzUGVyU2FtcGxlID0gW107XG4gICAgICAgIHRoaXMuZXBvY2hPZk5leHRTYW1wbGUgPSBbXTtcbiAgICAgICAgdGhpcy5lcG9jaE9mTmV4dE5lZ2F0aXZlU2FtcGxlID0gW107XG4gICAgICAgIHRoaXMuZXBvY2hzUGVyTmVnYXRpdmVTYW1wbGUgPSBbXTtcbiAgICAgICAgdGhpcy5tb3ZlT3RoZXIgPSB0cnVlO1xuICAgICAgICB0aGlzLmluaXRpYWxBbHBoYSA9IDEuMDtcbiAgICAgICAgdGhpcy5hbHBoYSA9IDEuMDtcbiAgICAgICAgdGhpcy5nYW1tYSA9IDEuMDtcbiAgICAgICAgdGhpcy5hID0gMS41NzY5NDM0NjAzMTEzMDc3O1xuICAgICAgICB0aGlzLmIgPSAwLjg5NTA2MDg3NzkxMDk3MzM7XG4gICAgICAgIHRoaXMuZGltID0gMjtcbiAgICAgICAgdGhpcy5uRXBvY2hzID0gNTAwO1xuICAgICAgICB0aGlzLm5WZXJ0aWNlcyA9IDA7XG4gICAgfVxuICAgIHJldHVybiBPcHRpbWl6YXRpb25TdGF0ZTtcbn0oKSk7XG5mdW5jdGlvbiBjbGlwKHgsIGNsaXBWYWx1ZSkge1xuICAgIGlmICh4ID4gY2xpcFZhbHVlKVxuICAgICAgICByZXR1cm4gY2xpcFZhbHVlO1xuICAgIGVsc2UgaWYgKHggPCAtY2xpcFZhbHVlKVxuICAgICAgICByZXR1cm4gLWNsaXBWYWx1ZTtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiB4O1xufVxuZnVuY3Rpb24gckRpc3QoeCwgeSkge1xuICAgIHZhciByZXN1bHQgPSAwLjA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlc3VsdCArPSBNYXRoLnBvdyh4W2ldIC0geVtpXSwgMik7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBmaW5kQUJQYXJhbXMoc3ByZWFkLCBtaW5EaXN0KSB7XG4gICAgdmFyIGN1cnZlID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgIHZhciBfYiA9IF9fcmVhZChfYSwgMiksIGEgPSBfYlswXSwgYiA9IF9iWzFdO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgICAgIHJldHVybiAxLjAgLyAoMS4wICsgYSAqIE1hdGgucG93KHgsICgyICogYikpKTtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIHZhciB4diA9IHV0aWxzXG4gICAgICAgIC5saW5lYXIoMCwgc3ByZWFkICogMywgMzAwKVxuICAgICAgICAubWFwKGZ1bmN0aW9uICh2YWwpIHsgcmV0dXJuICh2YWwgPCBtaW5EaXN0ID8gMS4wIDogdmFsKTsgfSk7XG4gICAgdmFyIHl2ID0gdXRpbHMuemVyb3MoeHYubGVuZ3RoKS5tYXAoZnVuY3Rpb24gKHZhbCwgaW5kZXgpIHtcbiAgICAgICAgdmFyIGd0ZSA9IHh2W2luZGV4XSA+PSBtaW5EaXN0O1xuICAgICAgICByZXR1cm4gZ3RlID8gTWF0aC5leHAoLSh4dltpbmRleF0gLSBtaW5EaXN0KSAvIHNwcmVhZCkgOiB2YWw7XG4gICAgfSk7XG4gICAgdmFyIGluaXRpYWxWYWx1ZXMgPSBbMC41LCAwLjVdO1xuICAgIHZhciBkYXRhID0geyB4OiB4diwgeTogeXYgfTtcbiAgICB2YXIgb3B0aW9ucyA9IHtcbiAgICAgICAgZGFtcGluZzogMS41LFxuICAgICAgICBpbml0aWFsVmFsdWVzOiBpbml0aWFsVmFsdWVzLFxuICAgICAgICBncmFkaWVudERpZmZlcmVuY2U6IDEwZS0yLFxuICAgICAgICBtYXhJdGVyYXRpb25zOiAxMDAsXG4gICAgICAgIGVycm9yVG9sZXJhbmNlOiAxMGUtMyxcbiAgICB9O1xuICAgIHZhciBwYXJhbWV0ZXJWYWx1ZXMgPSBtbF9sZXZlbmJlcmdfbWFycXVhcmR0XzEuZGVmYXVsdChkYXRhLCBjdXJ2ZSwgb3B0aW9ucykucGFyYW1ldGVyVmFsdWVzO1xuICAgIHZhciBfYSA9IF9fcmVhZChwYXJhbWV0ZXJWYWx1ZXMsIDIpLCBhID0gX2FbMF0sIGIgPSBfYVsxXTtcbiAgICByZXR1cm4geyBhOiBhLCBiOiBiIH07XG59XG5leHBvcnRzLmZpbmRBQlBhcmFtcyA9IGZpbmRBQlBhcmFtcztcbmZ1bmN0aW9uIGZhc3RJbnRlcnNlY3Rpb24oZ3JhcGgsIHRhcmdldCwgdW5rbm93bkRpc3QsIGZhckRpc3QpIHtcbiAgICBpZiAodW5rbm93bkRpc3QgPT09IHZvaWQgMCkgeyB1bmtub3duRGlzdCA9IDEuMDsgfVxuICAgIGlmIChmYXJEaXN0ID09PSB2b2lkIDApIHsgZmFyRGlzdCA9IDUuMDsgfVxuICAgIHJldHVybiBncmFwaC5tYXAoZnVuY3Rpb24gKHZhbHVlLCByb3csIGNvbCkge1xuICAgICAgICBpZiAodGFyZ2V0W3Jvd10gPT09IC0xIHx8IHRhcmdldFtjb2xdID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlICogTWF0aC5leHAoLXVua25vd25EaXN0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0YXJnZXRbcm93XSAhPT0gdGFyZ2V0W2NvbF0pIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZSAqIE1hdGguZXhwKC1mYXJEaXN0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuZXhwb3J0cy5mYXN0SW50ZXJzZWN0aW9uID0gZmFzdEludGVyc2VjdGlvbjtcbmZ1bmN0aW9uIHJlc2V0TG9jYWxDb25uZWN0aXZpdHkoc2ltcGxpY2lhbFNldCkge1xuICAgIHNpbXBsaWNpYWxTZXQgPSBtYXRyaXgubm9ybWFsaXplKHNpbXBsaWNpYWxTZXQsIFwibWF4XCIpO1xuICAgIHZhciB0cmFuc3Bvc2UgPSBtYXRyaXgudHJhbnNwb3NlKHNpbXBsaWNpYWxTZXQpO1xuICAgIHZhciBwcm9kTWF0cml4ID0gbWF0cml4LnBhaXJ3aXNlTXVsdGlwbHkodHJhbnNwb3NlLCBzaW1wbGljaWFsU2V0KTtcbiAgICBzaW1wbGljaWFsU2V0ID0gbWF0cml4LmFkZChzaW1wbGljaWFsU2V0LCBtYXRyaXguc3VidHJhY3QodHJhbnNwb3NlLCBwcm9kTWF0cml4KSk7XG4gICAgcmV0dXJuIG1hdHJpeC5lbGltaW5hdGVaZXJvcyhzaW1wbGljaWFsU2V0KTtcbn1cbmV4cG9ydHMucmVzZXRMb2NhbENvbm5lY3Rpdml0eSA9IHJlc2V0TG9jYWxDb25uZWN0aXZpdHk7XG5mdW5jdGlvbiBpbml0VHJhbnNmb3JtKGluZGljZXMsIHdlaWdodHMsIGVtYmVkZGluZykge1xuICAgIHZhciByZXN1bHQgPSB1dGlsc1xuICAgICAgICAuemVyb3MoaW5kaWNlcy5sZW5ndGgpXG4gICAgICAgIC5tYXAoZnVuY3Rpb24gKHopIHsgcmV0dXJuIHV0aWxzLnplcm9zKGVtYmVkZGluZ1swXS5sZW5ndGgpOyB9KTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBpbmRpY2VzWzBdLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBkID0gMDsgZCA8IGVtYmVkZGluZ1swXS5sZW5ndGg7IGQrKykge1xuICAgICAgICAgICAgICAgIHZhciBhID0gaW5kaWNlc1tpXVtqXTtcbiAgICAgICAgICAgICAgICByZXN1bHRbaV1bZF0gKz0gd2VpZ2h0c1tpXVtqXSAqIGVtYmVkZGluZ1thXVtkXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZXhwb3J0cy5pbml0VHJhbnNmb3JtID0gaW5pdFRyYW5zZm9ybTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fdmFsdWVzID0gKHRoaXMgJiYgdGhpcy5fX3ZhbHVlcykgfHwgZnVuY3Rpb24gKG8pIHtcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl0sIGkgPSAwO1xuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmZ1bmN0aW9uIHRhdVJhbmRJbnQobiwgcmFuZG9tKSB7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IocmFuZG9tKCkgKiBuKTtcbn1cbmV4cG9ydHMudGF1UmFuZEludCA9IHRhdVJhbmRJbnQ7XG5mdW5jdGlvbiB0YXVSYW5kKHJhbmRvbSkge1xuICAgIHJldHVybiByYW5kb20oKTtcbn1cbmV4cG9ydHMudGF1UmFuZCA9IHRhdVJhbmQ7XG5mdW5jdGlvbiBub3JtKHZlYykge1xuICAgIHZhciBlXzEsIF9hO1xuICAgIHZhciByZXN1bHQgPSAwO1xuICAgIHRyeSB7XG4gICAgICAgIGZvciAodmFyIHZlY18xID0gX192YWx1ZXModmVjKSwgdmVjXzFfMSA9IHZlY18xLm5leHQoKTsgIXZlY18xXzEuZG9uZTsgdmVjXzFfMSA9IHZlY18xLm5leHQoKSkge1xuICAgICAgICAgICAgdmFyIGl0ZW0gPSB2ZWNfMV8xLnZhbHVlO1xuICAgICAgICAgICAgcmVzdWx0ICs9IE1hdGgucG93KGl0ZW0sIDIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAodmVjXzFfMSAmJiAhdmVjXzFfMS5kb25lICYmIChfYSA9IHZlY18xLnJldHVybikpIF9hLmNhbGwodmVjXzEpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICB9XG4gICAgcmV0dXJuIE1hdGguc3FydChyZXN1bHQpO1xufVxuZXhwb3J0cy5ub3JtID0gbm9ybTtcbmZ1bmN0aW9uIGVtcHR5KG4pIHtcbiAgICB2YXIgb3V0cHV0ID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgb3V0cHV0LnB1c2godW5kZWZpbmVkKTtcbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dDtcbn1cbmV4cG9ydHMuZW1wdHkgPSBlbXB0eTtcbmZ1bmN0aW9uIHJhbmdlKG4pIHtcbiAgICByZXR1cm4gZW1wdHkobikubWFwKGZ1bmN0aW9uIChfLCBpKSB7IHJldHVybiBpOyB9KTtcbn1cbmV4cG9ydHMucmFuZ2UgPSByYW5nZTtcbmZ1bmN0aW9uIGZpbGxlZChuLCB2KSB7XG4gICAgcmV0dXJuIGVtcHR5KG4pLm1hcChmdW5jdGlvbiAoKSB7IHJldHVybiB2OyB9KTtcbn1cbmV4cG9ydHMuZmlsbGVkID0gZmlsbGVkO1xuZnVuY3Rpb24gemVyb3Mobikge1xuICAgIHJldHVybiBmaWxsZWQobiwgMCk7XG59XG5leHBvcnRzLnplcm9zID0gemVyb3M7XG5mdW5jdGlvbiBvbmVzKG4pIHtcbiAgICByZXR1cm4gZmlsbGVkKG4sIDEpO1xufVxuZXhwb3J0cy5vbmVzID0gb25lcztcbmZ1bmN0aW9uIGxpbmVhcihhLCBiLCBsZW4pIHtcbiAgICByZXR1cm4gZW1wdHkobGVuKS5tYXAoZnVuY3Rpb24gKF8sIGkpIHtcbiAgICAgICAgcmV0dXJuIGEgKyBpICogKChiIC0gYSkgLyAobGVuIC0gMSkpO1xuICAgIH0pO1xufVxuZXhwb3J0cy5saW5lYXIgPSBsaW5lYXI7XG5mdW5jdGlvbiBzdW0oaW5wdXQpIHtcbiAgICByZXR1cm4gaW5wdXQucmVkdWNlKGZ1bmN0aW9uIChzdW0sIHZhbCkgeyByZXR1cm4gc3VtICsgdmFsOyB9KTtcbn1cbmV4cG9ydHMuc3VtID0gc3VtO1xuZnVuY3Rpb24gbWVhbihpbnB1dCkge1xuICAgIHJldHVybiBzdW0oaW5wdXQpIC8gaW5wdXQubGVuZ3RoO1xufVxuZXhwb3J0cy5tZWFuID0gbWVhbjtcbmZ1bmN0aW9uIG1heChpbnB1dCkge1xuICAgIHZhciBtYXggPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbWF4ID0gaW5wdXRbaV0gPiBtYXggPyBpbnB1dFtpXSA6IG1heDtcbiAgICB9XG4gICAgcmV0dXJuIG1heDtcbn1cbmV4cG9ydHMubWF4ID0gbWF4O1xuZnVuY3Rpb24gbWF4MmQoaW5wdXQpIHtcbiAgICB2YXIgbWF4ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgaW5wdXRbaV0ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgIG1heCA9IGlucHV0W2ldW2pdID4gbWF4ID8gaW5wdXRbaV1bal0gOiBtYXg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1heDtcbn1cbmV4cG9ydHMubWF4MmQgPSBtYXgyZDtcbmZ1bmN0aW9uIHJlamVjdGlvblNhbXBsZShuU2FtcGxlcywgcG9vbFNpemUsIHJhbmRvbSkge1xuICAgIHZhciByZXN1bHQgPSB6ZXJvcyhuU2FtcGxlcyk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuU2FtcGxlczsgaSsrKSB7XG4gICAgICAgIHZhciByZWplY3RTYW1wbGUgPSB0cnVlO1xuICAgICAgICB3aGlsZSAocmVqZWN0U2FtcGxlKSB7XG4gICAgICAgICAgICB2YXIgaiA9IHRhdVJhbmRJbnQocG9vbFNpemUsIHJhbmRvbSk7XG4gICAgICAgICAgICB2YXIgYnJva2VuID0gZmFsc2U7XG4gICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IGk7IGsrKykge1xuICAgICAgICAgICAgICAgIGlmIChqID09PSByZXN1bHRba10pIHtcbiAgICAgICAgICAgICAgICAgICAgYnJva2VuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFicm9rZW4pIHtcbiAgICAgICAgICAgICAgICByZWplY3RTYW1wbGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdFtpXSA9IGo7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmV4cG9ydHMucmVqZWN0aW9uU2FtcGxlID0gcmVqZWN0aW9uU2FtcGxlO1xuZnVuY3Rpb24gcmVzaGFwZTJkKHgsIGEsIGIpIHtcbiAgICB2YXIgcm93cyA9IFtdO1xuICAgIHZhciBjb3VudCA9IDA7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICBpZiAoeC5sZW5ndGggIT09IGEgKiBiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQXJyYXkgZGltZW5zaW9ucyBtdXN0IG1hdGNoIGlucHV0IGxlbmd0aC4nKTtcbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhOyBpKyspIHtcbiAgICAgICAgdmFyIGNvbCA9IFtdO1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGI7IGorKykge1xuICAgICAgICAgICAgY29sLnB1c2goeFtpbmRleF0pO1xuICAgICAgICAgICAgaW5kZXggKz0gMTtcbiAgICAgICAgfVxuICAgICAgICByb3dzLnB1c2goY29sKTtcbiAgICAgICAgY291bnQgKz0gMTtcbiAgICB9XG4gICAgcmV0dXJuIHJvd3M7XG59XG5leHBvcnRzLnJlc2hhcGUyZCA9IHJlc2hhcGUyZDtcbiIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4vLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuX193ZWJwYWNrX3JlcXVpcmVfXy5tID0gX193ZWJwYWNrX21vZHVsZXNfXztcblxuLy8gdGhlIHN0YXJ0dXAgZnVuY3Rpb25cbl9fd2VicGFja19yZXF1aXJlX18ueCA9ICgpID0+IHtcblx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG5cdC8vIFRoaXMgZW50cnkgbW9kdWxlIGRlcGVuZHMgb24gb3RoZXIgbG9hZGVkIGNodW5rcyBhbmQgZXhlY3V0aW9uIG5lZWQgdG8gYmUgZGVsYXllZFxuXHR2YXIgX193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18uTyh1bmRlZmluZWQsIFs1MzVdLCAoKSA9PiAoX193ZWJwYWNrX3JlcXVpcmVfXygxNzI5KSkpXG5cdF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLk8oX193ZWJwYWNrX2V4cG9ydHNfXyk7XG5cdHJldHVybiBfX3dlYnBhY2tfZXhwb3J0c19fO1xufTtcblxuIiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5mID0ge307XG4vLyBUaGlzIGZpbGUgY29udGFpbnMgb25seSB0aGUgZW50cnkgY2h1bmsuXG4vLyBUaGUgY2h1bmsgbG9hZGluZyBmdW5jdGlvbiBmb3IgYWRkaXRpb25hbCBjaHVua3Ncbl9fd2VicGFja19yZXF1aXJlX18uZSA9IChjaHVua0lkKSA9PiB7XG5cdHJldHVybiBQcm9taXNlLmFsbChPYmplY3Qua2V5cyhfX3dlYnBhY2tfcmVxdWlyZV9fLmYpLnJlZHVjZSgocHJvbWlzZXMsIGtleSkgPT4ge1xuXHRcdF9fd2VicGFja19yZXF1aXJlX18uZltrZXldKGNodW5rSWQsIHByb21pc2VzKTtcblx0XHRyZXR1cm4gcHJvbWlzZXM7XG5cdH0sIFtdKSk7XG59OyIsIi8vIFRoaXMgZnVuY3Rpb24gYWxsb3cgdG8gcmVmZXJlbmNlIGFzeW5jIGNodW5rcyBhbmQgc2libGluZyBjaHVua3MgZm9yIHRoZSBlbnRyeXBvaW50XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnUgPSAoY2h1bmtJZCkgPT4ge1xuXHQvLyByZXR1cm4gdXJsIGZvciBmaWxlbmFtZXMgYmFzZWQgb24gdGVtcGxhdGVcblx0cmV0dXJuIFwiXCIgKyBjaHVua0lkICsgXCIuanNcIjtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gKGZ1bmN0aW9uKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0dHJ5IHtcblx0XHRyZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcblx0fVxufSkoKTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwidmFyIHNjcmlwdFVybDtcbmlmIChfX3dlYnBhY2tfcmVxdWlyZV9fLmcuaW1wb3J0U2NyaXB0cykgc2NyaXB0VXJsID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmxvY2F0aW9uICsgXCJcIjtcbnZhciBkb2N1bWVudCA9IF9fd2VicGFja19yZXF1aXJlX18uZy5kb2N1bWVudDtcbmlmICghc2NyaXB0VXJsICYmIGRvY3VtZW50KSB7XG5cdGlmIChkb2N1bWVudC5jdXJyZW50U2NyaXB0KVxuXHRcdHNjcmlwdFVybCA9IGRvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjO1xuXHRpZiAoIXNjcmlwdFVybCkge1xuXHRcdHZhciBzY3JpcHRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzY3JpcHRcIik7XG5cdFx0aWYoc2NyaXB0cy5sZW5ndGgpIHtcblx0XHRcdHZhciBpID0gc2NyaXB0cy5sZW5ndGggLSAxO1xuXHRcdFx0d2hpbGUgKGkgPiAtMSAmJiAhc2NyaXB0VXJsKSBzY3JpcHRVcmwgPSBzY3JpcHRzW2ktLV0uc3JjO1xuXHRcdH1cblx0fVxufVxuLy8gV2hlbiBzdXBwb3J0aW5nIGJyb3dzZXJzIHdoZXJlIGFuIGF1dG9tYXRpYyBwdWJsaWNQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgeW91IG11c3Qgc3BlY2lmeSBhbiBvdXRwdXQucHVibGljUGF0aCBtYW51YWxseSB2aWEgY29uZmlndXJhdGlvblxuLy8gb3IgcGFzcyBhbiBlbXB0eSBzdHJpbmcgKFwiXCIpIGFuZCBzZXQgdGhlIF9fd2VicGFja19wdWJsaWNfcGF0aF9fIHZhcmlhYmxlIGZyb20geW91ciBjb2RlIHRvIHVzZSB5b3VyIG93biBsb2dpYy5cbmlmICghc2NyaXB0VXJsKSB0aHJvdyBuZXcgRXJyb3IoXCJBdXRvbWF0aWMgcHVibGljUGF0aCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnJvd3NlclwiKTtcbnNjcmlwdFVybCA9IHNjcmlwdFVybC5yZXBsYWNlKC8jLiokLywgXCJcIikucmVwbGFjZSgvXFw/LiokLywgXCJcIikucmVwbGFjZSgvXFwvW15cXC9dKyQvLCBcIi9cIik7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBzY3JpcHRVcmw7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5iID0gc2VsZi5sb2NhdGlvbiArIFwiXCI7XG5cbi8vIG9iamVjdCB0byBzdG9yZSBsb2FkZWQgY2h1bmtzXG4vLyBcIjFcIiBtZWFucyBcImFscmVhZHkgbG9hZGVkXCJcbnZhciBpbnN0YWxsZWRDaHVua3MgPSB7XG5cdDcyOTogMVxufTtcblxuLy8gaW1wb3J0U2NyaXB0cyBjaHVuayBsb2FkaW5nXG52YXIgaW5zdGFsbENodW5rID0gKGRhdGEpID0+IHtcblx0dmFyIFtjaHVua0lkcywgbW9yZU1vZHVsZXMsIHJ1bnRpbWVdID0gZGF0YTtcblx0Zm9yKHZhciBtb2R1bGVJZCBpbiBtb3JlTW9kdWxlcykge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhtb3JlTW9kdWxlcywgbW9kdWxlSWQpKSB7XG5cdFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLm1bbW9kdWxlSWRdID0gbW9yZU1vZHVsZXNbbW9kdWxlSWRdO1xuXHRcdH1cblx0fVxuXHRpZihydW50aW1lKSBydW50aW1lKF9fd2VicGFja19yZXF1aXJlX18pO1xuXHR3aGlsZShjaHVua0lkcy5sZW5ndGgpXG5cdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRzLnBvcCgpXSA9IDE7XG5cdHBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uKGRhdGEpO1xufTtcbl9fd2VicGFja19yZXF1aXJlX18uZi5pID0gKGNodW5rSWQsIHByb21pc2VzKSA9PiB7XG5cdC8vIFwiMVwiIGlzIHRoZSBzaWduYWwgZm9yIFwiYWxyZWFkeSBsb2FkZWRcIlxuXHRpZighaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdKSB7XG5cdFx0aWYodHJ1ZSkgeyAvLyBhbGwgY2h1bmtzIGhhdmUgSlNcblx0XHRcdGltcG9ydFNjcmlwdHMoX193ZWJwYWNrX3JlcXVpcmVfXy5wICsgX193ZWJwYWNrX3JlcXVpcmVfXy51KGNodW5rSWQpKTtcblx0XHR9XG5cdH1cbn07XG5cbnZhciBjaHVua0xvYWRpbmdHbG9iYWwgPSBzZWxmW1wid2VicGFja0NodW5rcGVwdGlkZXNcIl0gPSBzZWxmW1wid2VicGFja0NodW5rcGVwdGlkZXNcIl0gfHwgW107XG52YXIgcGFyZW50Q2h1bmtMb2FkaW5nRnVuY3Rpb24gPSBjaHVua0xvYWRpbmdHbG9iYWwucHVzaC5iaW5kKGNodW5rTG9hZGluZ0dsb2JhbCk7XG5jaHVua0xvYWRpbmdHbG9iYWwucHVzaCA9IGluc3RhbGxDaHVuaztcblxuLy8gbm8gSE1SXG5cbi8vIG5vIEhNUiBtYW5pZmVzdCIsIi8vIHJ1biBzdGFydHVwXG52YXIgX193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18ueCgpO1xuIl0sIm5hbWVzIjpbImRlZmVycmVkIiwibmV4dCIsIlN0cmluZ01ldHJpY3NOYW1lcyIsIlZlY3Rvck1ldHJpY3NOYW1lcyIsIkJpdEFycmF5TWV0cmljc05hbWVzIiwiRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMiLCJOdW1iZXJNZXRyaWNzTmFtZXMiLCJyYW5kb21GbG9hdCIsInJhbmdlIiwiTWF0aCIsInJhbmRvbSIsImZsb29yIiwiYXNzZXJ0IiwiY29uZGl0aW9uIiwibWVzc2FnZSIsIkVycm9yIiwidmVjdG9yQWRkIiwicCIsInEiLCJtdWx0aXBsaWVyIiwibkl0ZW1zIiwibGVuZ3RoIiwidG90YWwiLCJpIiwiZmlsbFJhbmRvbU1hdHJpeCIsImRpbWVuc2lvbjEiLCJkaW1lbnNpb24yIiwic2NhbGUiLCJtYXRyaXgiLCJmaWxsIiwiQXJyYXkiLCJtYXAiLCJpbml0Q29vcmRpbmF0ZXMiLCJqIiwiY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2UiLCJzcWRpZmZTdW1tIiwidiIsIml0ZW1zU3VtIiwidmVjdG9yU3F1YXJlIiwic3FydCIsImRtTGluZWFySW5kZXgiLCJzaXplIiwiRGlzdGFuY2VNYXRyaXhTZXJ2aWNlIiwiY29uc3RydWN0b3IiLCJ1c2VDb25jdXJyZW50V29ya2VycyIsInRlcm1pbmF0ZU9uQ29tcGxldGUiLCJ0aHJlYWRDb3VudCIsIm5hdmlnYXRvciIsImhhcmR3YXJlQ29uY3VycmVuY3kiLCJ0aGlzIiwiX3dvcmtlckNvdW50IiwibWF4IiwiX3dvcmtlcnMiLCJXb3JrZXIiLCJVUkwiLCJfdGVybWluYXRlT25Db21wbGV0ZSIsImNhbGMiLCJ2YWx1ZXMiLCJmbk5hbWUiLCJub3JtYWxpemUiLCJQcm9taXNlIiwiYXN5bmMiLCJyZXNvbHZlIiwicmVqZWN0IiwibGVuIiwicHJvbWlzZXMiLCJ0b3RhbExlbmd0aCIsIm1pbiIsImNodW5rU2l6ZSIsImRpc3RhbmNlTWF0cml4IiwiRmxvYXQzMkFycmF5IiwiZW5kUm93IiwiZW5kQ29sIiwibG1pbiIsImxtYXgiLCJOdW1iZXIiLCJNSU5fVkFMVUUiLCJzdGFydCIsImVuZCIsInN0YXJ0Um93Iiwic3RhcnRDb2wiLCJwb3N0TWVzc2FnZSIsImNodW5ja1NpemUiLCJyZXNvbHZlV29ya2VyIiwicmVqZWN0V29ya2VyIiwib25tZXNzYWdlIiwiZGF0YSIsImVycm9yIiwiZGlzdGFuY2VNYXRyaXhEYXRhIiwidGVybWluYXRlIiwic2V0IiwiYWxsIiwiZm9yRWFjaCIsInZhbHVlIiwiaW5kZXgiLCJlIiwid29ya2VyIiwiU1BFQmFzZSIsIm9wdGlvbnMiLCJzdGVwcyIsImN5Y2xlcyIsImN1dG9mZiIsImxhbWJkYSIsImRsYW1iZGEiLCJsYW1iZGEyIiwiZGxhbWJkYTIiLCJlcHNpbG9uIiwiZGlzdGFuY2VGdW5jdGlvbiIsImRpc3RhbmNlIiwiZGlzdGFuY2VGdW5jdGlvbk5hbWUiLCJpbml0RGlzdGFuY2UiLCJ2ZWN0b3JzIiwiZG1JbmRleEZ1bmN0IiwibWF0cml4U2VydmljZSIsImNhbGNEaXN0YW5jZSIsImluZGV4MSIsImluZGV4MiIsImVtYmVkIiwiY29vcmRpbmF0ZXMiLCJkaW1lbnNpb24iLCJjeWNsZSIsInN0ZXAiLCJyb3dpIiwicm93aiIsInIiLCJkIiwiZGlmZklKIiwiUFNQRUJhc2UiLCJPcmlnaW5hbFNQRSIsInN1cGVyIiwicmFkaXVzUGVyY2VudCIsIm1heERpc3RhbmNlIiwibWF4RGlzdGFuY2VTdGVwcyIsIm4iLCJyYWRpdXMiLCJ2ZWN0b3JEaXN0YW5jZU1ldHJpY3NNZXRob2RzIiwiRXVjbGlkZWFuIiwic3RyaW5nRGlzdGFuY2VNZXRyaWNzTWV0aG9kcyIsIkxldmVuc2h0ZWluIiwiSmFyb1dpbmtsZXIiLCJNYW5oYXR0YW4iLCJzMSIsInMyIiwiZGlzdCIsImJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kcyIsIlRhbmltb3RvIiwiRGljZSIsIkFzeW1tZXRyaWMiLCJCcmF1bkJsYW5xdWV0IiwiQ29zaW5lIiwiS3VsY3p5bnNraSIsIk1jQ29ubmF1Z2hleSIsIlJvZ290R29sZGJlcmciLCJSdXNzZWwiLCJTb2thbCIsIkhhbW1pbmciLCJudW1iZXJEaXN0YW5jZU1ldHJpY3NNZXRob2RzIiwiTnVtZXJpY0Rpc3RhbmNlIiwiQXZhaWxhYmxlTWV0cmljcyIsIlZlY3RvciIsIlN0cmluZyIsIkJpdEFycmF5IiwiTWFjcm9Nb2xlY3VsZSIsIkhBTU1JTkciLCJMRVZFTlNIVEVJTiIsIk5FRURMRU1BTk5fV1VOU0NIIiwiTWV0cmljVG9EYXRhVHlwZSIsIk9iamVjdCIsImtleXMiLCJyZWR1Y2UiLCJyZXQiLCJrZXkiLCJ2YWwiLCJNZWFzdXJlIiwibWV0aG9kIiwiZGF0YVR5cGUiLCJnZXRNZWFzdXJlIiwib3B0cyIsImRpY3QiLCJoYXNPd25Qcm9wZXJ0eSIsIm5hbWUiLCJ0b1N0cmluZyIsImdldE1ldHJpY0J5RGF0YVR5cGUiLCJhdmFpbGFibGVNZWFzdXJlcyIsImFyZyIsImRlZmF1bHRWYWx1ZSIsIl9sZW5ndGgiLCJfdmVyc2lvbiIsIl91cGRhdGVMZXZlbCIsIl9zZWxlY3RlZENvdW50IiwiX3NlbGVjdGVkQ291bnRWZXJzaW9uIiwiX3NlbGVjdGVkSW5kZXhlc1ZlcnNpb24iLCJfdmVyc2lvbmVkTmFtZSIsIl92ZXJzaW9uZWROYW1lVmVyc2lvbiIsIlNIUklOS19USFJFU0hPTEQiLCJidWZmIiwiX2NyZWF0ZUJ1ZmZlciIsIl9kYXRhIiwiVWludDMyQXJyYXkiLCJnZXRSYXdEYXRhIiwiYXNzdXJlR29leiIsIm51bSIsImFyZ05hbWUiLCJhc3N1cmVJblJhbmdlIiwiY29weSIsInNyYyIsImRzdCIsImNvdW50IiwiY29weUZyb20iLCJvdGhlciIsImxlbmd0aEluSW50cyIsImJ1ZmZlciIsInZlcnNpb24iLCJpbmNyZW1lbnRWZXJzaW9uIiwibm90aWZ5IiwidmVyc2lvbmVkTmFtZSIsInNlbGYiLCJzZXRMZW5ndGgiLCJuSW50c05lZWRlZCIsIm5ld0RhdGEiLCJmcm9tQW5kIiwic2V0MSIsInNldDIiLCJ0ZW1wIiwiZnJvbVZhbHVlcyIsImZyb21TZXEiLCJmbGFnIiwic2V0Qml0IiwiZnJvbVN0cmluZyIsInMiLCJjaGFyQXQiLCJmcm9tVWludDMyQXJyYXkiLCJmcm9tQnl0ZXMiLCJieXRlcyIsIm51bTEiLCJudW0yIiwiY291bnRCaXRzIiwiZXF1YWxzIiwiZ2V0Qml0IiwiY2xvbmUiLCJiaXRBcnJheSIsImZyb20iLCJpbml0Iiwic2V0QWxsIiwiaW52ZXJ0IiwiZmxhZ3MiLCJzZXRJbmRleGVzIiwiaW5kZXhlcyIsImNsZWFyIiwic2V0RmFzdCIsImV2ZXJ5SW5kZXgiLCJhbnlJbmRleCIsInNldFdoZXJlIiwiY2hlY2siLCJhbGxvd0NsZWFyIiwiZ2V0UmFuZ2UiLCJ0byIsImFyciIsInB1c2giLCJnZXRSYW5nZUFzTGlzdCIsInNldFJhbmdlIiwic2V0VHJ1ZSIsInNldEZhbHNlIiwic2V0UmFuZG9tIiwiayIsImFuZCIsImFuZE5vdCIsIm5vdEFuZCIsIm5vdCIsIm9yIiwieG9yIiwiaW5zZXJ0QXQiLCJwb3MiLCJvbGRsZW5ndGgiLCJyZW1vdmVBdCIsImNvbnRhaW5zIiwicmVtb3ZlQnlNYXNrIiwibWFzayIsImRzdElkeCIsInNyY0lkeCIsImZpbmROZXh0IiwiYml0IiwidHJ1ZUNvdW50IiwiZmFsc2VDb3VudCIsIl9vbkJpdENvdW50IiwicmVtYWluaW5nQml0cyIsImNvdW50V2hlcmUiLCJyZXN1bHQiLCJhbmRXaXRoQ291bnRCaXRzIiwic2Vjb25kIiwiYWxsVHJ1ZSIsImFsbEZhbHNlIiwiYW55VHJ1ZSIsImFueUZhbHNlIiwidW51c2VkQml0cyIsIm51bUludHMiLCJfZmlyc3RPbkJpdCIsImZpbmRQcmV2IiwiX2xhc3RPbkJpdCIsIkludDhBcnJheSIsIkRpbVJlZHVjdGlvbk1ldGhvZHMiLCJEaXN0YW5jZU1hdHJpeCIsIl9zaXplIiwidW5kZWZpbmVkIiwiZGF0YUxlbmd0aCIsIl9saW5lYXJpemVJSiIsImdldCIsImxpc3QiLCJyZXMiLCJzcXVhcmUiLCJhZGQiLCJSZWR1Y2VyIiwiQXZhaWxhYmxlUmVkdWNlcnMiLCJkaXN0YW5jZUZuIiwiZGlzdGFuY2VGbmFtZSIsImRtSW5kZXhGdW5jIiwiXyIsInVzaW5nRGlzdGFuY2VNYXRyaXgiLCJwcmVDYWxjdWxhdGVEaXN0YW5jZU1hdHJpeCIsIl9lbmNvZGVkRGlzdGFuY2VNYXRyaXgiLCJiaW5kIiwiX2VuY29kZWREaXN0YW5jZSIsIm5OZWlnaGJvcnMiLCJyZWR1Y2VyIiwidSIsImEiLCJiIiwidHJhbnNmb3JtIiwicGFyYWxsZWxEaXN0YW5jZVdvcmtlcnMiLCJlbWJlZGRpbmciLCJmaXQiLCJpdGVyYXRpb25zIiwibWF0cml4UHJveHkiLCJjb25kZW5zZWRBcnJheSIsImxpbmVhckZ1bmMiLCJsaW5lYXJJbmRleCIsImlOdW0iLCJqTnVtIiwiaWR4MUhhbmRsZXIiLCJ0YXJnZXQiLCJpZHgxIiwiX3JlY2VpdmVyIiwiUHJveHkiLCJpZHgyIiwiaWR4MkhhbmRsZXIiLCJkaXN0YW5jZU1hdHJpeFByb3h5IiwiaW5pdERhdGFEaXN0IiwiZ2V0U29sdXRpb24iLCJlbWIiLCJEaW1lbnNpb25hbGl0eVJlZHVjZXIiLCJtZXRyaWMiLCJtZWFzdXJlIiwic3BlY09wdGlvbnMiLCJuRXBvY2hzIiwidHJhbnNwb3NlIiwiYXZhaWxhYmxlTWV0cmljc0J5VHlwZSIsInR5cGVOYW1lIiwiYXZhaWxhYmxlTWV0aG9kcyIsImF2YWlsYWJsZU1ldHJpY3MiLCJhbnMiLCJvYmoiLCJhcnJheSIsImNvbHVtbkRhdGEiLCJvbk1lc3NhZ2UiLCJleHBvcnRzIiwidHNuZV8xIiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiVFNORSIsIm9wdCIsInJldHVyblYiLCJ2VmFsdWUiLCJpdGVyIiwicGVycGxleGl0eSIsImdldG9wdCIsImRpbSIsImZpZWxkIiwiZGVmYXVsdHZhbCIsImdhdXNzUmFuZG9tIiwiYyIsImxvZyIsInJhbmRuIiwibXUiLCJzdGQiLCJ6ZXJvcyIsImlzTmFOIiwiQXJyYXlCdWZmZXIiLCJGbG9hdDY0QXJyYXkiLCJyYW5kbjJkIiwidXNlcyIsIngiLCJ4aGVyZSIsIkwyIiwieDEiLCJ4MiIsIkQiLCJ4MWkiLCJ4MmkiLCJ4dG9kIiwiWCIsIk4iLCJkMnAiLCJ0b2wiLCJuZiIsImhUYXJnZXQiLCJQIiwicHJvdyIsImJldGFtaW4iLCJiZXRhbWF4IiwiSW5maW5pdHkiLCJiZXRhIiwiZG9uZSIsIm1heHRyaWVzIiwicHN1bSIsInBqIiwiZXhwIiwibkhlcmUiLCJhYnMiLCJwT3V0IiwiTjIiLCJzaWduIiwiaW5pdERhdGFSYXciLCJkaXN0cyIsImluaXRTb2x1dGlvbiIsIlkiLCJnYWlucyIsInlzdGVwIiwiY2ciLCJjb3N0R3JhZCIsImNvc3QiLCJncmFkIiwieW1lYW4iLCJnaWQiLCJzaWQiLCJnYWluaWQiLCJuZXdnYWluIiwibmV3c2lkIiwiZGVidWdHcmFkIiwieW9sZCIsImNnMCIsImNnMSIsImFuYWx5dGljIiwibnVtZXJpY2FsIiwiY29uc29sZSIsInBtdWwiLCJxdUFyciIsInFzdW0iLCJkc3VtIiwiZGhlcmUiLCJxdSIsIk5OIiwiUSIsImdzdW0iLCJwcmVtdWx0IiwicHJvdG90eXBlIiwiaXNBbnlBcnJheSIsIm9iamVjdCIsImNhbGwiLCJlbmRzV2l0aCIsImVycm9yQ2FsY3VsYXRpb24iLCJwYXJhbWV0ZXJzIiwicGFyYW1ldGVyaXplZEZ1bmN0aW9uIiwiZnVuYyIsInkiLCJ0YWciLCJpbmNsdWRlcyIsInJlc2NhbGUiLCJpbnB1dCIsIm91dHB1dCIsImFyZ3VtZW50cyIsIlR5cGVFcnJvciIsImN1cnJlbnRNaW4iLCJfb3B0aW9ucyRmcm9tSW5kZXgiLCJmcm9tSW5kZXgiLCJfb3B0aW9ucyR0b0luZGV4IiwidG9JbmRleCIsImlzSW50ZWdlciIsIm1pblZhbHVlIiwiY3VycmVudE1heCIsIm1heFZhbHVlIiwiUmFuZ2VFcnJvciIsIl9vcHRpb25zJG1pbiIsImF1dG9NaW5NYXgiLCJfb3B0aW9ucyRtYXgiLCJmYWN0b3IiLCJpbmRlbnQiLCJyZXBlYXQiLCJpbmRlbnREYXRhIiwiaW5zcGVjdE1hdHJpeFdpdGhPcHRpb25zIiwibWF4Um93cyIsIm1heENvbHVtbnMiLCJtYXhOdW1TaXplIiwicGFkTWludXMiLCJyb3dzIiwiY29sdW1ucyIsIm1heEkiLCJtYXhKIiwibG9vcCIsImxpbmUiLCJmb3JtYXROdW1iZXIiLCJqb2luIiwiaW5zcGVjdERhdGEiLCJmb3JtYXROdW1iZXIyIiwicGFkRW5kIiwic3RyIiwiZml4IiwidG9GaXhlZCIsInN0YXJ0c1dpdGgiLCJ0b0V4cG9uZW50aWFsIiwic2xpY2UiLCJjaGVja1Jvd0luZGV4Iiwib3V0ZXIiLCJjaGVja0NvbHVtbkluZGV4IiwiY2hlY2tSb3dWZWN0b3IiLCJ2ZWN0b3IiLCJ0bzFEQXJyYXkiLCJjaGVja0NvbHVtblZlY3RvciIsImNoZWNrUmFuZ2UiLCJzdGFydENvbHVtbiIsImVuZENvbHVtbiIsImNoZWNrTnVtYmVyIiwibmV3QXJyYXkiLCJjaGVja05vbkVtcHR5IiwiaXNFbXB0eSIsIkFic3RyYWN0TWF0cml4IiwiZnJvbTFEQXJyYXkiLCJuZXdSb3dzIiwibmV3Q29sdW1ucyIsIm5ld01hdHJpeCIsIk1hdHJpeCIsInJvdyIsImNvbHVtbiIsInJvd1ZlY3RvciIsImNvbHVtblZlY3RvciIsIm9uZXMiLCJyYW5kIiwicmFuZEludCIsImludGVydmFsIiwicm91bmQiLCJleWUiLCJkaWFnIiwibCIsIm1hdHJpeDEiLCJtYXRyaXgyIiwiY2hlY2tNYXRyaXgiLCJpc01hdHJpeCIsImtsYXNzIiwiYXBwbHkiLCJjYWxsYmFjayIsInRvMkRBcnJheSIsInRvSlNPTiIsImlzUm93VmVjdG9yIiwiaXNDb2x1bW5WZWN0b3IiLCJpc1ZlY3RvciIsImlzU3F1YXJlIiwiaXNTeW1tZXRyaWMiLCJpc0VjaGVsb25Gb3JtIiwicHJldmlvdXNDb2x1bW4iLCJjaGVja2VkIiwiaXNSZWR1Y2VkRWNoZWxvbkZvcm0iLCJlY2hlbG9uRm9ybSIsImgiLCJpTWF4Iiwic3dhcFJvd3MiLCJ0bXAiLCJyZWR1Y2VkRWNoZWxvbkZvcm0iLCJtIiwibWF4Um93IiwicGl2b3QiLCJzZXRTdWJNYXRyaXgiLCJuZWciLCJtdWxTIiwiZ2V0Um93IiwiZ2V0Um93VmVjdG9yIiwic2V0Um93Iiwicm93MSIsInJvdzIiLCJnZXRDb2x1bW4iLCJnZXRDb2x1bW5WZWN0b3IiLCJzZXRDb2x1bW4iLCJzd2FwQ29sdW1ucyIsImNvbHVtbjEiLCJjb2x1bW4yIiwiYWRkUm93VmVjdG9yIiwic3ViUm93VmVjdG9yIiwibXVsUm93VmVjdG9yIiwiZGl2Um93VmVjdG9yIiwiYWRkQ29sdW1uVmVjdG9yIiwic3ViQ29sdW1uVmVjdG9yIiwibXVsQ29sdW1uVmVjdG9yIiwiZGl2Q29sdW1uVmVjdG9yIiwibXVsUm93IiwibXVsQ29sdW1uIiwiYnkiLCJOYU4iLCJORUdBVElWRV9JTkZJTklUWSIsIm1heEluZGV4IiwiaWR4IiwiUE9TSVRJVkVfSU5GSU5JVFkiLCJtaW5JbmRleCIsIm1heFJvd0luZGV4IiwibWluUm93IiwibWluUm93SW5kZXgiLCJtYXhDb2x1bW4iLCJtYXhDb2x1bW5JbmRleCIsIm1pbkNvbHVtbiIsIm1pbkNvbHVtbkluZGV4Iiwibm9ybSIsInR5cGUiLCJjdW11bGF0aXZlU3VtIiwic3VtIiwiZG90IiwidmVjdG9yMiIsInZlY3RvcjEiLCJtbXVsIiwiQmNvbGoiLCJzdHJhc3NlbjJ4MiIsImExMSIsImIxMSIsImExMiIsImIxMiIsImEyMSIsImIyMSIsImEyMiIsImIyMiIsIm0xIiwibTIiLCJtMyIsIm00IiwibTUiLCJjMDAiLCJjMDEiLCJjMTAiLCJjMTEiLCJzdHJhc3NlbjN4MyIsImEwMCIsImEwMSIsImEwMiIsImExMCIsImEyMCIsImIwMCIsImIwMSIsImIwMiIsImIxMCIsImIyMCIsIm02IiwibTciLCJtOCIsIm05IiwibTEyIiwibTEzIiwibTE0IiwibTE1IiwibTE2IiwibTE3IiwibTE4IiwiYzAyIiwiYzEyIiwiYzIwIiwiYzIxIiwiYzIyIiwibW11bFN0cmFzc2VuIiwicjEiLCJjMSIsInIyIiwiYzIiLCJtYXQiLCJjb2xzIiwicmVzdWx0YXQiLCJ3YXJuIiwiYmxvY2tNdWx0IiwiaGFsZlJvd3MiLCJwYXJzZUludCIsImhhbGZDb2xzIiwic3ViTWF0cml4Iiwic3ViIiwic2NhbGVSb3dzIiwiaXNGaW5pdGUiLCJzY2FsZUNvbHVtbnMiLCJmbGlwUm93cyIsIm1pZGRsZSIsImNlaWwiLCJmaXJzdCIsImxhc3QiLCJmbGlwQ29sdW1ucyIsImtyb25lY2tlclByb2R1Y3QiLCJrcm9uZWNrZXJTdW0iLCJBeEkiLCJJeEIiLCJzb3J0Um93cyIsImNvbXBhcmVGdW5jdGlvbiIsImNvbXBhcmVOdW1iZXJzIiwic29ydCIsInNvcnRDb2x1bW5zIiwic3ViTWF0cml4Um93IiwiaW5kaWNlcyIsInN1Yk1hdHJpeENvbHVtbiIsInNlbGVjdGlvbiIsInJvd0luZGljZXMiLCJjb2x1bW5JbmRpY2VzIiwiY2hlY2tSb3dJbmRpY2VzIiwiY2hlY2tDb2x1bW5JbmRpY2VzIiwicm93SW5kZXgiLCJjb2x1bW5JbmRleCIsInRyYWNlIiwic3VtQnlSb3ciLCJzdW1CeUNvbHVtbiIsInN1bUFsbCIsInByb2R1Y3QiLCJwcm9kdWN0QnlSb3ciLCJwcm9kdWN0QnlDb2x1bW4iLCJwcm9kdWN0QWxsIiwibWVhbiIsInZhcmlhbmNlIiwidW5iaWFzZWQiLCJzdW0xIiwic3VtMiIsInZhcmlhbmNlQnlSb3ciLCJ2YXJpYW5jZUJ5Q29sdW1uIiwidmFyaWFuY2VBbGwiLCJzdGFuZGFyZERldmlhdGlvbiIsImNlbnRlciIsImNlbnRlckJ5Um93IiwiY2VudGVyQnlDb2x1bW4iLCJjZW50ZXJBbGwiLCJwb3ciLCJnZXRTY2FsZUJ5Um93Iiwic2NhbGVCeVJvdyIsImdldFNjYWxlQnlDb2x1bW4iLCJzY2FsZUJ5Q29sdW1uIiwiZGl2aWRlciIsImdldFNjYWxlQWxsIiwic2NhbGVBbGwiLCJTeW1ib2wiLCJmb3IiLCJyYW5kb21JbnQiLCJkaWFnb25hbCIsImlkZW50aXR5IiwibmVnYXRlIiwidGVuc29yUHJvZHVjdCIsIm5Sb3dzIiwibkNvbHVtbnMiLCJhcnJheURhdGEiLCJldmVyeSIsImVsZW1lbnQiLCJyZW1vdmVSb3ciLCJzcGxpY2UiLCJhZGRSb3ciLCJyZW1vdmVDb2x1bW4iLCJuZXdSb3ciLCJhZGRDb2x1bW4iLCJhZGRTIiwiYWRkTSIsInN1YlMiLCJzdWJNIiwic3VidHJhY3QiLCJzdWJ0cmFjdFMiLCJzdWJ0cmFjdE0iLCJtdWwiLCJtdWxNIiwibXVsdGlwbHkiLCJtdWx0aXBseVMiLCJtdWx0aXBseU0iLCJkaXYiLCJkaXZTIiwiZGl2TSIsImRpdmlkZSIsImRpdmlkZVMiLCJkaXZpZGVNIiwibW9kIiwibW9kUyIsIm1vZE0iLCJtb2R1bHVzIiwibW9kdWx1c1MiLCJtb2R1bHVzTSIsImFuZFMiLCJhbmRNIiwib3JTIiwib3JNIiwieG9yUyIsInhvck0iLCJsZWZ0U2hpZnQiLCJsZWZ0U2hpZnRTIiwibGVmdFNoaWZ0TSIsInNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnQiLCJzaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0UyIsInNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRNIiwicmlnaHRTaGlmdCIsInJpZ2h0U2hpZnRTIiwicmlnaHRTaGlmdE0iLCJ6ZXJvRmlsbFJpZ2h0U2hpZnQiLCJ6ZXJvRmlsbFJpZ2h0U2hpZnRTIiwiemVyb0ZpbGxSaWdodFNoaWZ0TSIsImFjb3MiLCJhY29zaCIsImFzaW4iLCJhc2luaCIsImF0YW4iLCJhdGFuaCIsImNicnQiLCJjbHozMiIsImNvcyIsImNvc2giLCJleHBtMSIsImZyb3VuZCIsImxvZzFwIiwibG9nMTAiLCJsb2cyIiwic2luIiwic2luaCIsInRhbiIsInRhbmgiLCJ0cnVuYyIsImFyZzAiLCJwb3dTIiwicG93TSIsImluc3RhbGxNYXRoT3BlcmF0aW9ucyIsIldyYXBwZXJNYXRyaXgyRCIsIkx1RGVjb21wb3NpdGlvbiIsInQiLCJMVWNvbGoiLCJrbWF4IiwibHUiLCJwaXZvdFZlY3RvciIsInBpdm90U2lnbiIsIkxVIiwiaXNTaW5ndWxhciIsImNvbCIsInNvbHZlIiwiZGV0ZXJtaW5hbnQiLCJsb3dlclRyaWFuZ3VsYXJNYXRyaXgiLCJ1cHBlclRyaWFuZ3VsYXJNYXRyaXgiLCJwaXZvdFBlcm11dGF0aW9uVmVjdG9yIiwiaHlwb3RlbnVzZSIsIlFyRGVjb21wb3NpdGlvbiIsInFyIiwicmRpYWciLCJucm0iLCJRUiIsIlJkaWFnIiwiaXNGdWxsUmFuayIsIm9ydGhvZ29uYWxNYXRyaXgiLCJTaW5ndWxhclZhbHVlRGVjb21wb3NpdGlvbiIsImNvbXB1dGVMZWZ0U2luZ3VsYXJWZWN0b3JzIiwiY29tcHV0ZVJpZ2h0U2luZ3VsYXJWZWN0b3JzIiwiYXV0b1RyYW5zcG9zZSIsIndhbnR1IiwiQm9vbGVhbiIsIndhbnR2Iiwic3dhcHBlZCIsImF1eCIsIm51IiwibmkiLCJVIiwiViIsIndvcmsiLCJzaSIsIm5jdCIsIm5ydCIsIm1yYyIsInBwIiwiZXBzIiwiRVBTSUxPTiIsImthc2UiLCJhbHBoYSIsImtzIiwiZiIsImNzIiwic24iLCJzcCIsInNwbTEiLCJlcG0xIiwic2siLCJlayIsInNoaWZ0IiwiZyIsInRocmVzaG9sZCIsInNjb2xzIiwiTHMiLCJyaWdodFNpbmd1bGFyVmVjdG9ycyIsIlZMIiwidnJvd3MiLCJ1cm93cyIsIlZMVSIsInNvbHZlRm9yRGlhZ29uYWwiLCJpbnZlcnNlIiwidmNvbHMiLCJ1Y29scyIsIm5vcm0yIiwicmFuayIsImlpIiwibGVmdFNpbmd1bGFyVmVjdG9ycyIsImRpYWdvbmFsTWF0cml4IiwicGFyYW1zIiwiZGFtcGluZyIsImdyYWRpZW50RGlmZmVyZW5jZSIsImV2YWx1YXRlZERhdGEiLCJncmFkaWVudEZ1bmMiLCJwYXJhbUZ1bmN0aW9uIiwicGFyYW0iLCJhdXhQYXJhbXMiLCJmdW5jUGFyYW0iLCJwb2ludCIsImdyYWRpZW50RnVuY3Rpb24iLCJtYXRyaXhGdW5jIiwibWF0cml4RnVuY3Rpb24iLCJpbnZlcnNlTWF0cml4IiwidXNlU1ZEIiwibGVmdEhhbmRTaWRlIiwicmlnaHRIYW5kU2lkZSIsImxldmVuYmVyZ01hcnF1YXJkdCIsIm1heEl0ZXJhdGlvbnMiLCJlcnJvclRvbGVyYW5jZSIsIm1pblZhbHVlcyIsIm1heFZhbHVlcyIsImluaXRpYWxWYWx1ZXMiLCJwYXJMZW4iLCJNQVhfU0FGRV9JTlRFR0VSIiwiTUlOX1NBRkVfSU5URUdFUiIsIml0ZXJhdGlvbiIsImNvbnZlcmdlZCIsInBhcmFtZXRlclZhbHVlcyIsInBhcmFtZXRlckVycm9yIiwiX19pbXBvcnRTdGFyIiwiX19lc01vZHVsZSIsInV0aWxzIiwibWFrZUhlYXAiLCJuUG9pbnRzIiwibWFrZUFycmF5cyIsImZpbGxWYWx1ZSIsImVtcHR5IiwiZmlsbGVkIiwiaGVhcCIsImhlYXBQdXNoIiwid2VpZ2h0Iiwid2VpZ2h0cyIsInVuY2hlY2tlZEhlYXBQdXNoIiwiaXNOZXciLCJpU3dhcCIsImljMSIsImljMiIsImhlYXBTaGFwZTIiLCJzaWZ0RG93biIsImhlYXAxIiwiaGVhcDIiLCJjZWlsaW5nIiwiZWx0IiwibGVmdENoaWxkIiwicmlnaHRDaGlsZCIsInN3YXAiLCJ0ZW1wMSIsInRlbXAyIiwicmVqZWN0aW9uU2FtcGxlIiwiblNhbXBsZXMiLCJwb29sU2l6ZSIsInJlamVjdFNhbXBsZSIsInRhdVJhbmRJbnQiLCJicm9rZW4iLCJidWlsZENhbmRpZGF0ZXMiLCJjdXJyZW50R3JhcGgiLCJuVmVydGljZXMiLCJtYXhDYW5kaWRhdGVzIiwiY2FuZGlkYXRlTmVpZ2hib3JzIiwiaXNuIiwidGF1UmFuZCIsImRlaGVhcFNvcnQiLCJpbmRIZWFwIiwiZGlzdEhlYXAiLCJpbmRIZWFwSW5kZXgiLCJkaXN0SGVhcEluZGV4Iiwic21hbGxlc3RGbGFnZ2VkIiwiaW5kIiwibWluRGlzdCIsInJlc3VsdEluZGV4IiwidW1hcF8xIiwiVU1BUCIsIl9hIiwiX19yZWFkIiwibyIsIml0ZXJhdG9yIiwiYXIiLCJfX3ZhbHVlcyIsIlNwYXJzZU1hdHJpeCIsImRpbXMiLCJlbnRyaWVzIiwiTWFwIiwibkNvbHMiLCJjaGVja0RpbXMiLCJtYWtlS2V5IiwiaGFzIiwiZ2V0QWxsIiwib3JkZXJlZCIsInJvd0NvbFZhbHVlcyIsImdldERpbXMiLCJnZXRSb3dzIiwiX2IiLCJnZXRDb2xzIiwiZ2V0VmFsdWVzIiwiZm4iLCJ2YWxzIiwidG9BcnJheSIsIl90aGlzIiwicGFpcndpc2VNdWx0aXBseSIsImVsZW1lbnRXaXNlIiwibWF4aW11bSIsIm11bHRpcGx5U2NhbGFyIiwic2NhbGFyIiwiZWxpbWluYXRlWmVyb3MiLCJ6ZXJvSW5kaWNlcyIsIlNldCIsInJlbW92ZUJ5WmVyb0luZGV4IiwibmV4dFZhbHVlcyIsImZpbHRlciIsIm5leHRSb3dzIiwibmV4dENvbHMiLCJub3JtVHlwZSIsImVfMSIsIm5vcm1GbiIsIm5vcm1GbnMiLCJjb2xzQnlSb3ciLCJuZXh0TWF0cml4IiwiX2xvb3BfMSIsIl9jIiwiZV8xXzEiLCJyZXR1cm4iLCJ4cyIsIm9wIiwidmlzaXRlZCIsIm9wZXJhdGUiLCJuZXh0VmFsdWUiLCJ2YWx1ZXNBIiwicm93c0EiLCJjb2xzQSIsInZhbHVlc0IiLCJyb3dzQiIsImNvbHNCIiwiZ2V0Q1NSIiwiaW5kcHRyIiwiY3VycmVudFJvdyIsInRyZWUiLCJtYWtlTk5EZXNjZW50IiwibGVhZkFycmF5Iiwibkl0ZXJzIiwiZGVsdGEiLCJyaG8iLCJycFRyZWVJbml0IiwiY2oiLCJjayIsIm1ha2VJbml0aWFsaXphdGlvbnMiLCJpbml0RnJvbVJhbmRvbSIsInF1ZXJ5UG9pbnRzIiwiX2hlYXAiLCJpbml0RnJvbVRyZWUiLCJfdHJlZSIsInNlYXJjaEZsYXRUcmVlIiwibWFrZUluaXRpYWxpemVkTk5TZWFyY2giLCJncmFwaCIsImluaXRpYWxpemF0aW9uIiwidHJpZWQiLCJ2ZXJ0ZXgiLCJjYW5kaWRhdGVzIiwiY2FuZGlkYXRlc18xIiwiY2FuZGlkYXRlc18xXzEiLCJjYW5kaWRhdGUiLCJpbml0aWFsaXplU2VhcmNoIiwiZm9yZXN0IiwiZV8yIiwicmVzdWx0cyIsImZvcmVzdF8xIiwiZm9yZXN0XzFfMSIsImVfMl8xIiwiX19zcHJlYWQiLCJjb25jYXQiLCJGbGF0VHJlZSIsImh5cGVycGxhbmVzIiwib2Zmc2V0cyIsImNoaWxkcmVuIiwibWFrZUV1Y2xpZGVhblRyZWUiLCJsZWFmU2l6ZSIsInNwbGl0UmVzdWx0cyIsImxlZnRJbmRleCIsInJpZ2h0SW5kZXgiLCJsZWZ0IiwicmlnaHQiLCJoeXBlcnBsYW5lT2Zmc2V0IiwiaHlwZXJwbGFuZVZlY3RvciIsIm5MZWZ0IiwiblJpZ2h0Iiwic2lkZSIsIm1hcmdpbiIsImluZGljZXNMZWZ0IiwiaW5kaWNlc1JpZ2h0IiwiaHlwZXJwbGFuZSIsIm9mZnNldCIsImV1Y2xpZGVhblJhbmRvbVByb2plY3Rpb25TcGxpdCIsImlzTGVhZiIsInJlY3Vyc2l2ZUZsYXR0ZW4iLCJub2RlTnVtIiwibGVhZk51bSIsIm9sZE5vZGVOdW0iLCJudW1Ob2RlcyIsIm51bUxlYXZlcyIsInNlbGVjdFNpZGUiLCJtYWtlRm9yZXN0IiwiblRyZWVzIiwibWFrZVRyZWUiLCJuTm9kZXMiLCJuTGVhdmVzIiwiZmxhdHRlblRyZWUiLCJtYWtlTGVhZkFycmF5IiwicnBGb3Jlc3QiLCJycEZvcmVzdF8xIiwicnBGb3Jlc3RfMV8xIiwibm9kZSIsIl9fYXdhaXRlciIsInRoaXNBcmciLCJfYXJndW1lbnRzIiwiZ2VuZXJhdG9yIiwiZnVsZmlsbGVkIiwicmVqZWN0ZWQiLCJ0aGVuIiwiX19nZW5lcmF0b3IiLCJib2R5IiwibGFiZWwiLCJzZW50IiwidHJ5cyIsIm9wcyIsInZlcmIiLCJwb3AiLCJfX2ltcG9ydERlZmF1bHQiLCJubkRlc2NlbnQiLCJtbF9sZXZlbmJlcmdfbWFycXVhcmR0XzEiLCJTTU9PVEhfS19UT0xFUkFOQ0UiLCJNSU5fS19ESVNUX1NDQUxFIiwibGVhcm5pbmdSYXRlIiwibG9jYWxDb25uZWN0aXZpdHkiLCJuQ29tcG9uZW50cyIsIm5lZ2F0aXZlU2FtcGxlUmF0ZSIsInJlcHVsc2lvblN0cmVuZ3RoIiwic2V0T3BNaXhSYXRpbyIsInNwcmVhZCIsInRyYW5zZm9ybVF1ZXVlU2l6ZSIsInRhcmdldE1ldHJpYyIsInRhcmdldFdlaWdodCIsInRhcmdldE5OZWlnaGJvcnMiLCJldWNsaWRlYW4iLCJpc0luaXRpYWxpemVkIiwib3B0aW1pemF0aW9uU3RhdGUiLCJPcHRpbWl6YXRpb25TdGF0ZSIsInNldFBhcmFtIiwiaW5pdGlhbGl6ZUZpdCIsIm9wdGltaXplTGF5b3V0IiwiZml0QXN5bmMiLCJvcHRpbWl6ZUxheW91dEFzeW5jIiwic2V0U3VwZXJ2aXNlZFByb2plY3Rpb24iLCJzZXRQcmVjb21wdXRlZEtOTiIsImtubkluZGljZXMiLCJrbm5EaXN0YW5jZXMiLCJnZXRORXBvY2hzIiwia25uUmVzdWx0cyIsIm5lYXJlc3ROZWlnaGJvcnMiLCJmdXp6eVNpbXBsaWNpYWxTZXQiLCJtYWtlU2VhcmNoRm5zIiwic2VhcmNoR3JhcGgiLCJtYWtlU2VhcmNoR3JhcGgiLCJwcm9jZXNzR3JhcGhGb3JTdXBlcnZpc2VkUHJvamVjdGlvbiIsImluaXRpYWxpemVTaW1wbGljaWFsU2V0RW1iZWRkaW5nIiwiaGVhZCIsInRhaWwiLCJlcG9jaHNQZXJTYW1wbGUiLCJpbml0aWFsaXplT3B0aW1pemF0aW9uIiwicHJlcGFyZUZvck9wdGltaXphdGlvbkxvb3AiLCJzZWFyY2giLCJrbm4iLCJkaXN0YW5jZXMiLCJuZWlnaGJvciIsInRvVHJhbnNmb3JtIiwicmF3RGF0YSIsImFkanVzdGVkTG9jYWxDb25uZWN0aXZpdHkiLCJzbW9vdGhLTk5EaXN0YW5jZSIsInNpZ21hcyIsInJob3MiLCJjb21wdXRlTWVtYmVyc2hpcFN0cmVuZ3RocyIsIm5vcm1lZCIsImNzck1hdHJpeCIsImluaXRUcmFuc2Zvcm0iLCJyZXNoYXBlMmQiLCJncmFwaE1heCIsIm1ha2VFcG9jaHNQZXJTYW1wbGUiLCJhc3NpZ25PcHRpbWl6YXRpb25TdGF0ZVBhcmFtZXRlcnMiLCJoZWFkRW1iZWRkaW5nIiwidGFpbEVtYmVkZGluZyIsImN1cnJlbnRFcG9jaCIsImZhckRpc3QiLCJjYXRlZ29yaWNhbFNpbXBsaWNpYWxTZXRJbnRlcnNlY3Rpb24iLCJvcHRpbWl6ZUxheW91dFN0ZXAiLCJnZXRFbWJlZGRpbmciLCJtZXRyaWNOTkRlc2NlbnQiLCJfZCIsIl9lIiwic3BhcnNlTWF0cml4IiwicHJvZE1hdHJpeCIsInNpbXBsaWNpYWxTZXQiLCJ1bmtub3duRGlzdCIsImludGVyc2VjdGlvbiIsImZhc3RJbnRlcnNlY3Rpb24iLCJyZXNldExvY2FsQ29ubmVjdGl2aXR5Iiwibkl0ZXIiLCJiYW5kd2lkdGgiLCJsbyIsImhpIiwibWlkIiwiaXRoRGlzdGFuY2VzIiwibm9uWmVyb0Rpc3RzIiwiaW50ZXJwb2xhdGlvbiIsIm1lYW5JdGhEaXN0YW5jZXMiLCJtZWFuRGlzdGFuY2VzIiwiZ3JhcGhWYWx1ZXMiLCJlbnRyeSIsInciLCJzdGF0ZSIsImFzc2lnbiIsIm1vdmVPdGhlciIsImVwb2Noc1Blck5lZ2F0aXZlU2FtcGxlIiwiZXBvY2hPZk5leHROZWdhdGl2ZVNhbXBsZSIsImVwb2NoT2ZOZXh0U2FtcGxlIiwiaW5pdGlhbEFscGhhIiwiZ2FtbWEiLCJmaW5kQUJQYXJhbXMiLCJjdXJyZW50IiwiZGlzdFNxdWFyZWQiLCJyRGlzdCIsImdyYWRDb2VmZiIsImdyYWREIiwiY2xpcCIsIm5OZWdTYW1wbGVzIiwia18xIiwib3RoZXJfMSIsImRpc3RTcXVhcmVkXzEiLCJncmFkQ29lZmZfMSIsImVwb2NoQ2FsbGJhY2siLCJlcG9jaENvbXBsZXRlZCIsInNob3VsZFN0b3AiLCJpc0ZpbmlzaGVkIiwic2V0VGltZW91dCIsImVyciIsImNvc2luZSIsIm5vcm1YIiwibm9ybVkiLCJjbGlwVmFsdWUiLCJ4diIsImxpbmVhciIsInl2IiwiZGVmYXVsdCIsInoiLCJ2ZWMiLCJ2ZWNfMSIsInZlY18xXzEiLCJpdGVtIiwibWF4MmQiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJtb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwiX193ZWJwYWNrX2V4cG9ydHNfXyIsIk8iLCJjaHVua0lkcyIsInByaW9yaXR5Iiwibm90RnVsZmlsbGVkIiwiZGVmaW5pdGlvbiIsImNodW5rSWQiLCJnbG9iYWxUaGlzIiwiRnVuY3Rpb24iLCJ3aW5kb3ciLCJwcm9wIiwidG9TdHJpbmdUYWciLCJzY3JpcHRVcmwiLCJpbXBvcnRTY3JpcHRzIiwibG9jYXRpb24iLCJkb2N1bWVudCIsImN1cnJlbnRTY3JpcHQiLCJzY3JpcHRzIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJyZXBsYWNlIiwiaW5zdGFsbGVkQ2h1bmtzIiwiY2h1bmtMb2FkaW5nR2xvYmFsIiwicGFyZW50Q2h1bmtMb2FkaW5nRnVuY3Rpb24iLCJtb3JlTW9kdWxlcyIsInJ1bnRpbWUiXSwic291cmNlUm9vdCI6IiJ9
|