From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2052010E2B4 for ; Mon, 30 Oct 2023 12:53:05 +0000 (UTC) From: "Hogander, Jouni" To: "Joshi, Kunal1" , "igt-dev@lists.freedesktop.org" Date: Mon, 30 Oct 2023 12:52:59 +0000 Message-ID: <669b13c759c6c32a06f5892986a80901a133684f.camel@intel.com> References: <20231025142716.1019749-1-kunal1.joshi@intel.com> <20231025142716.1019749-7-kunal1.joshi@intel.com> In-Reply-To: <20231025142716.1019749-7-kunal1.joshi@intel.com> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-ID: <2C329FA21D3AD5428182328A320043B7@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t 6/7] tests/intel/kms_psr: made test compaitable with pr List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Murthy, Arun R" Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" List-ID: T24gV2VkLCAyMDIzLTEwLTI1IGF0IDE5OjU3ICswNTMwLCBLdW5hbCBKb3NoaSB3cm90ZToKPiBN b2RpZmllZCBrbXNfcHNyIHRvIGhhdmUgc3VwcG9ydCBmb3IgUFIuCj4gCj4gdjI6IHJlbW92ZSBz ZXRfb3V0cHV0IGFuZCBoYXZlIG91dHB1dHMgKEpvdW5pKQo+IAo+IENjOiBKb3VuaSBIw7ZnYW5k ZXIgPGpvdW5pLmhvZ2FuZGVyQGludGVsLmNvbT4KPiBDYzogQW5pbWVzaCBNYW5uYSA8YW5pbWVz aC5tYW5uYUBpbnRlbC5jb20+Cj4gQ2M6IEFydW4gUiBNdXJ0aHkgPGFydW4uci5tdXJ0aHlAaW50 ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IEt1bmFsIEpvc2hpIDxrdW5hbDEuam9zaGlAaW50ZWwu Y29tPgo+IC0tLQo+IMKgdGVzdHMvaW50ZWwva21zX3Bzci5jIHwgNDA1ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0KPiAtLQo+IMKgMSBmaWxlIGNoYW5nZWQsIDMxNSBp bnNlcnRpb25zKCspLCA5MCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaW50 ZWwva21zX3Bzci5jIGIvdGVzdHMvaW50ZWwva21zX3Bzci5jCj4gaW5kZXggODQ4NWU5ODk0Li4z MWM4YmJlNzcgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvaW50ZWwva21zX3Bzci5jCj4gKysrIGIvdGVz dHMvaW50ZWwva21zX3Bzci5jCj4gQEAgLTI1LDcgKzI1LDcgQEAKPiDCoC8qKgo+IMKgICogVEVT VDoga21zIHBzcgo+IMKgICogQ2F0ZWdvcnk6IERpc3BsYXkKPiAtICogRGVzY3JpcHRpb246IFRl c3RzIGJlaGF2aW91ciBvZiBQU1IgJiBQU1IyCj4gKyAqIERlc2NyaXB0aW9uOiBUZXN0cyBiZWhh dmlvdXIgb2YgUFNSICYgUFNSMiAmIFBSCj4gwqAgKi8KPiDCoAo+IMKgI2luY2x1ZGUgImlndC5o Igo+IEBAIC0zOSwxNCArMzksMTQgQEAKPiDCoCNpbmNsdWRlICJ4ZS94ZV9xdWVyeS5oIgo+IMKg Cj4gwqAvKioKPiAtICogU1VCVEVTVDogYmFzaWMKPiArICogU1VCVEVTVDogcHNyX2Jhc2ljCj4g wqAgKiBEZXNjcmlwdGlvbjogQmFzaWMgY2hlY2sgZm9yIHBzciBpZiBpdCBpcyBkZXRlY3Rpbmcg Y2hhbmdlcyBtYWRlCj4gaW4gcGxhbmVzCj4gwqAgKiBEcml2ZXIgcmVxdWlyZW1lbnQ6IGk5MTUs IHhlCj4gwqAgKiBGdW5jdGlvbmFsaXR5OiBwc3IKPiDCoCAqIE1lZ2EgZmVhdHVyZTogUFNSCj4g wqAgKiBUZXN0IGNhdGVnb3J5OiBmdW5jdGlvbmFsaXR5IHRlc3QKPiDCoCAqCj4gLSAqIFNVQlRF U1Q6ICVzXyVzCj4gKyAqIFNVQlRFU1Q6IHBzcl8lc18lcwo+IMKgICogRGVzY3JpcHRpb246IENo ZWNrIGlmIHBzciBpcyBkZXRlY3RpbmcgbWVtb3J5IG1hcHBpbmcsIHJlbmRlcmluZwo+IGFuZCBw bGFuZQo+IMKgICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvcGVyYXRpb25zIHBlcmZvcm1l ZCBvbiAlYXJnWzFdCj4gwqAgKiBEcml2ZXIgcmVxdWlyZW1lbnQ6IGk5MTUKPiBAQCAtNjcsNyAr NjcsNyBAQAo+IMKgICovCj4gwqAKPiDCoC8qKgo+IC0gKiBTVUJURVNUOiBzcHJpdGVfcGxhbmVf bW92ZQo+ICsgKiBTVUJURVNUOiBwc3Jfc3ByaXRlX3BsYW5lX21vdmUKPiDCoCAqIERlc2NyaXB0 aW9uOiBDaGVjayBpZiBwc3IgaXMgZGV0ZWN0aW5nIG1lbW9yeSBtYXBwaW5nLCByZW5kZXJpbmcK PiBhbmQgcGxhbmUKPiDCoCAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb3BlcmF0aW9ucyBw ZXJmb3JtZWQgb24gc3ByaXRlIHBsYW5lcwo+IMKgICogRHJpdmVyIHJlcXVpcmVtZW50OiBpOTE1 LCB4ZQo+IEBAIC03NSw3ICs3NSw3IEBACj4gwqAgKiBNZWdhIGZlYXR1cmU6IFBTUgo+IMKgICog VGVzdCBjYXRlZ29yeTogZnVuY3Rpb25hbGl0eSB0ZXN0Cj4gwqAgKgo+IC0gKiBTVUJURVNUOiAl c18lcwo+ICsgKiBTVUJURVNUOiBwc3JfJXNfJXMKPiDCoCAqIERlc2NyaXB0aW9uOiBDaGVjayBp ZiBwc3IgaXMgZGV0ZWN0aW5nIG1lbW9yeSBtYXBwaW5nLCByZW5kZXJpbmcKPiBhbmQgcGxhbmUK PiDCoCAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb3BlcmF0aW9ucyBwZXJmb3JtZWQgb24g JWFyZ1sxXSBwbGFuZXMKPiDCoCAqIERyaXZlciByZXF1aXJlbWVudDogaTkxNSwgeGUKPiBAQCAt OTYsNyArOTYsNyBAQAo+IMKgICovCj4gwqAKPiDCoC8qKgo+IC0gKiBTVUJURVNUOiBwcmltYXJ5 XyVzCj4gKyAqIFNVQlRFU1Q6IHBzcl9wcmltYXJ5XyVzCj4gwqAgKiBEZXNjcmlwdGlvbjogQ2hl Y2sgaWYgcHNyIGlzIGRldGVjdGluZyBtZW1vcnkgbWFwcGluZywgcmVuZGVyaW5nCj4gYW5kIHBs YW5lCj4gwqAgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG9wZXJhdGlvbnMgcGVyZm9ybWVk IG9uICVhcmdbMV0gcGxhbmVzCj4gwqAgKiBEcml2ZXIgcmVxdWlyZW1lbnQ6IGk5MTUsIHhlCj4g QEAgLTExMSw3ICsxMTEsNyBAQAo+IMKgICovCj4gwqAKPiDCoC8qKgo+IC0gKiBTVUJURVNUOiBk cG1zCj4gKyAqIFNVQlRFU1Q6IHBzcl9kcG1zCj4gwqAgKiBEZXNjcmlwdGlvbjogQ2hlY2sgaWYg cHNyIGlzIGRldGVjdGluZyBjaGFuZ2VzIHdoZW4gcmVuZGVyaW5nCj4gb3BlcmF0aW9uIGlzCj4g wqAgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBlcmZvcm1lZMKgIHdpdGggZHBtcyBlbmFi bGVkIG9yIGRpc2FibGVkCj4gwqAgKiBEcml2ZXIgcmVxdWlyZW1lbnQ6IGk5MTUsIHhlCj4gQEAg LTExOSwxNCArMTE5LDE0IEBACj4gwqAgKiBNZWdhIGZlYXR1cmU6IFBTUgo+IMKgICogVGVzdCBj YXRlZ29yeTogZnVuY3Rpb25hbGl0eSB0ZXN0Cj4gwqAgKgo+IC0gKiBTVUJURVNUOiBub19kcnJz Cj4gKyAqIFNVQlRFU1Q6IHBzcl9ub19kcnJzCj4gwqAgKiBEZXNjcmlwdGlvbjogQ2hlY2sgaWYg cHNyIGlzIGRldGVjdGluZyBjaGFuZ2VzIHdoZW4gZHJycyBpcwo+IGRpc2FibGVkCj4gwqAgKiBE cml2ZXIgcmVxdWlyZW1lbnQ6IGk5MTUsIHhlCj4gwqAgKiBGdW5jdGlvbmFsaXR5OiBkcnJzLCBw c3IKPiDCoCAqIE1lZ2EgZmVhdHVyZTogUFNSCj4gwqAgKiBUZXN0IGNhdGVnb3J5OiBmdW5jdGlv bmFsaXR5IHRlc3QKPiDCoCAqCj4gLSAqIFNVQlRFU1Q6IHN1c3BlbmQKPiArICogU1VCVEVTVDog cHNyX3N1c3BlbmQKPiDCoCAqIERlc2NyaXB0aW9uOiBDaGVjayBpZiBwc3IgaXMgZGV0ZWN0aW5n IGNoYW5nZXMgd2hlbiBwbGFuZQo+IG9wZXJhdGlvbgo+IMKgICrCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBpcyBwZXJmb3JtZWQgd2l0aCBzdXNwZW5kIHJlc3VtZSBjeWNsZXMKPiDCoCAqIERy aXZlciByZXF1aXJlbWVudDogaTkxNSwgeGUKPiBAQCAtMjI5LDYgKzIyOSwxMTIgQEAKPiDCoCAq IEBwbGFuZV9tb3ZlOsKgwqDCoMKgwqDCoMKgwqAgTW92ZSBwbGFuZSBwb3NpdGlvbgo+IMKgICov Cj4gwqAKPiArLyoqCj4gKyAqIFNVQlRFU1Q6IHByX2RwbXMKPiArICogRGVzY3JpcHRpb246IENo ZWNrIGlmIHByIGlzIGRldGVjdGluZyBjaGFuZ2VzIHdoZW4gcmVuZGVyaW5nCj4gb3BlcmF0aW9u Cj4gKyAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaXMgcGVyZm9ybWVkIHdpdGggZHBtcyBl bmFibGVkIG9yIGRpc2FibGVkCj4gKyAqIERyaXZlciByZXF1aXJlbWVudDogaTkxNSwgeGUKPiAr ICogRnVuY3Rpb25hbGl0eTogZHBtcywgcHIKPiArICogTWVnYSBmZWF0dXJlOiBQYW5lbCBSZXBs YXkKPiArICogVGVzdCBjYXRlZ29yeTogZnVuY3Rpb25hbGl0eSB0ZXN0Cj4gKyAqLwo+ICsKPiAr LyoqCj4gKyAqIFNVQlRFU1Q6IHByX25vX2RycnMKPiArICogRGVzY3JpcHRpb246IENoZWNrIGlm IHByIGlzIGRldGVjdGluZyBjaGFuZ2VzIHdoZW4gZHJycyBpcwo+IGRpc2FibGVkCj4gKyAqIERy aXZlciByZXF1aXJlbWVudDogaTkxNSwgeGUKPiArICogRnVuY3Rpb25hbGl0eTogZHJycywgcHIK PiArICogTWVnYSBmZWF0dXJlOiBQYW5lbCBSZXBsYXkKPiArICogVGVzdCBjYXRlZ29yeTogZnVu Y3Rpb25hbGl0eSB0ZXN0Cj4gKyAqLwo+ICsKPiArLyoqCj4gKyAqIFNVQlRFU1Q6IHByX3N1c3Bl bmQKPiArICogRGVzY3JpcHRpb246IENoZWNrIGlmIHByIGlzIGRldGVjdGluZyBjaGFuZ2VzIHdo ZW4gcGxhbmUKPiBvcGVyYXRpb24gaXMKPiArICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBw ZXJmb3JtZWQgd2l0aCBzdXNwZW5kIHJlc3VtZSBjeWNsZXMKPiArICogRHJpdmVyIHJlcXVpcmVt ZW50OiBpOTE1LCB4ZQo+ICsgKiBGdW5jdGlvbmFsaXR5OiBwciwgc3VzcGVuZAo+ICsgKiBNZWdh IGZlYXR1cmU6IFBhbmVsIFJlcGxheQo+ICsgKiBUZXN0IGNhdGVnb3J5OiBmdW5jdGlvbmFsaXR5 IHRlc3QKPiArICovCj4gKwo+ICsvKioKPiArICogU1VCVEVTVDogcHJfYmFzaWMKPiArICogRGVz Y3JpcHRpb246IEJhc2ljIGNoZWNrIGZvciBwciBpZiBpdCBpcyBkZXRlY3RpbmcgY2hhbmdlcyBt YWRlCj4gaW4gcGxhbmVzCj4gKyAqIERyaXZlciByZXF1aXJlbWVudDogaTkxNSwgeGUKPiArICog RnVuY3Rpb25hbGl0eTogcHIKPiArICogTWVnYSBmZWF0dXJlOiBQYW5lbCBSZXBsYXkKPiArICog VGVzdCBjYXRlZ29yeTogZnVuY3Rpb25hbGl0eSB0ZXN0Cj4gKyAqLwo+ICsKPiArLyoqCj4gKyAq IFNVQlRFU1Q6IHByXyVzXyVzCj4gKyAqIERlc2NyaXB0aW9uOiBDaGVjayBpZiBwciBpcyBkZXRl Y3RpbmcgbWVtb3J5IG1hcHBpbmcsIHJlbmRlcmluZwo+IGFuZCBwbGFuZQo+ICsgKsKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIG9wZXJhdGlvbnMgcGVyZm9ybWVkIG9uICVhcmdbMV0gcGxhbmVz Cj4gKyAqIERyaXZlciByZXF1aXJlbWVudDogaTkxNQo+ICsgKiBGdW5jdGlvbmFsaXR5OiBrbXNf Y29yZSwgcGxhbmUsIHByCj4gKyAqIE1lZ2EgZmVhdHVyZTogUGFuZWwgUmVwbGF5Cj4gKyAqIFRl c3QgY2F0ZWdvcnk6IGZ1bmN0aW9uYWxpdHkgdGVzdAo+ICsgKgo+ICsgKiBhcmdbMV06Cj4gKyAq Cj4gKyAqIEBjdXJzb3I6wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEN1cnNvciBwbGFuZQo+ICsg KiBAcHJpbWFyeTrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFByaW1hcnkgcGxhbmUKPiArICogQHNw cml0ZTrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgU3ByaXRlIHBsYW5lCj4gKyAqCj4gKyAqIGFy Z1syXToKPiArICoKPiArICogQG1tYXBfY3B1OsKgwqDCoMKgwqDCoMKgwqDCoMKgIE1NQVAgQ1BV Cj4gKyAqIEBtbWFwX2d0dDrCoMKgwqDCoMKgwqDCoMKgwqDCoCBNTUFQIEdUVAo+ICsgKi8KPiAr Cj4gKy8qKgo+ICsgKiBTVUJURVNUOiBwcl9wcmltYXJ5X3BhZ2VfZmxpcAo+ICsgKiBEZXNjcmlw dGlvbjogQ2hlY2sgaWYgcHIgaXMgZGV0ZWN0aW5nIG1lbW9yeSBtYXBwaW5nLCByZW5kZXJpbmcK PiBhbmQgcGxhbmUKPiArICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvcGVyYXRpb25zIHBl cmZvcm1lZCBvbiBwcmltYXJ5IHBsYW5lcwo+ICsgKiBEcml2ZXIgcmVxdWlyZW1lbnQ6IGk5MTUs IHhlCj4gKyAqIEZ1bmN0aW9uYWxpdHk6IHBsYW5lLCBwcgo+ICsgKiBNZWdhIGZlYXR1cmU6IFBh bmVsIFJlcGxheQo+ICsgKiBUZXN0IGNhdGVnb3J5OiBmdW5jdGlvbmFsaXR5IHRlc3QKPiArICov Cj4gKwo+ICsvKioKPiArICogU1VCVEVTVDogcHJfcHJpbWFyeV8lcwo+ICsgKiBEZXNjcmlwdGlv bjogQ2hlY2sgaWYgcHIgaXMgZGV0ZWN0aW5nIG1lbW9yeSBtYXBwaW5nLCByZW5kZXJpbmcKPiBh bmQgcGxhbmUKPiArICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvcGVyYXRpb25zIHBlcmZv cm1lZCBvbiBwcmltYXJ5IHBsYW5lcwo+ICsgKiBEcml2ZXIgcmVxdWlyZW1lbnQ6IGk5MTUsIHhl Cj4gKyAqIEZ1bmN0aW9uYWxpdHk6IGttc19jb3JlLCBwbGFuZSwgcHIKPiArICogTWVnYSBmZWF0 dXJlOiBQYW5lbCBSZXBsYXkKPiArICogVGVzdCBjYXRlZ29yeTogZnVuY3Rpb25hbGl0eSB0ZXN0 Cj4gKyAqCj4gKyAqIGFyZ1sxXToKPiArICoKPiArICogQGJsdDrCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgQmxpdHRlcgo+ICsgKiBAcmVuZGVyOsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBSZW5kZXIKPiArICovCj4gKwo+ICsvKioKPiArICogU1VCVEVTVDogcHJfJXNfJXMKPiArICog RGVzY3JpcHRpb246IENoZWNrIGlmIHByIGlzIGRldGVjdGluZyBtZW1vcnkgbWFwcGluZywgcmVu ZGVyaW5nCj4gYW5kIHBsYW5lCj4gKyAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb3BlcmF0 aW9ucyBwZXJmb3JtZWQgb24gJWFyZ1sxXSBwbGFuZXMKPiArICogRHJpdmVyIHJlcXVpcmVtZW50 OiBpOTE1LCB4ZQo+ICsgKiBGdW5jdGlvbmFsaXR5OiBrbXNfY29yZSwgcGxhbmUsIHByCj4gKyAq IE1lZ2EgZmVhdHVyZTogUGFuZWwgUmVwbGF5Cj4gKyAqIFRlc3QgY2F0ZWdvcnk6IGZ1bmN0aW9u YWxpdHkgdGVzdAo+ICsgKgo+ICsgKiBhcmdbMV06Cj4gKyAqCj4gKyAqIEBjdXJzb3I6wqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIEN1cnNvciBwbGFuZQo+ICsgKiBAc3ByaXRlOsKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBTcHJpdGUgcGxhbmUKPiArICoKPiArICogYXJnWzJdOgo+ICsgKgo+ICsg KiBAYmx0OsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCbGl0dGVyCj4gKyAqIEByZW5k ZXI6wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFJlbmRlcgo+ICsgKiBAcGxhbmVfb25vZmY6wqDC oMKgwqDCoMKgwqAgUGxhbmUgT24gb2ZmCj4gKyAqIEBwbGFuZV9tb3ZlOsKgwqDCoMKgwqDCoMKg wqAgTW92ZSBwbGFuZSBwb3NpdGlvbgo+ICsgKi8KPiArCj4gwqBlbnVtIG9wZXJhdGlvbnMgewo+ IMKgwqDCoMKgwqDCoMKgwqBQQUdFX0ZMSVAsCj4gwqDCoMKgwqDCoMKgwqDCoE1NQVBfR1RULAo+ IEBAIC0yNzAsOCArMzc2LDEzIEBAIHR5cGVkZWYgc3RydWN0IHsKPiDCoMKgwqDCoMKgwqDCoMKg aW50IG1vZF9zdHJpZGU7Cj4gwqDCoMKgwqDCoMKgwqDCoGRybU1vZGVNb2RlSW5mbyAqbW9kZTsK PiDCoMKgwqDCoMKgwqDCoMKgaWd0X291dHB1dF90ICpvdXRwdXQ7Cj4gK8KgwqDCoMKgwqDCoMKg aWd0X291dHB1dF90ICoqb3V0cHV0czsKPiArwqDCoMKgwqDCoMKgwqBpbnQgKm91dHB1dF90eXBl Owo+ICvCoMKgwqDCoMKgwqDCoGludCBvdXRwdXRfY291bnQ7Cj4gwqDCoMKgwqDCoMKgwqDCoGJv b2wgd2l0aF9wc3JfZGlzYWJsZWQ7Cj4gK8KgwqDCoMKgwqDCoMKgYm9vbCBzdXBwb3J0c19wc3I7 Cj4gwqDCoMKgwqDCoMKgwqDCoGJvb2wgc3VwcG9ydHNfcHNyMjsKPiArwqDCoMKgwqDCoMKgwqBi b29sIHN1cHBvcnRzX3ByOwo+IMKgfSBkYXRhX3Q7Cj4gwqAKPiDCoHN0YXRpYyB2b2lkIGNyZWF0 ZV9jdXJzb3JfZmIoZGF0YV90ICpkYXRhKQo+IEBAIC0yODksMzQgKzQwMCw1MCBAQCBzdGF0aWMg dm9pZCBjcmVhdGVfY3Vyc29yX2ZiKGRhdGFfdCAqZGF0YSkKPiDCoMKgwqDCoMKgwqDCoMKgaWd0 X3B1dF9jYWlyb19jdHgoY3IpOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyB2b2lkIHNldHVwX291dHB1 dChkYXRhX3QgKmRhdGEpCj4gK3N0YXRpYyB2b2lkIHNldHVwX291dHB1dHMoZGF0YV90ICpkYXRh KQo+IMKgewo+IC3CoMKgwqDCoMKgwqDCoGlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ ZGlzcGxheTsKPiDCoMKgwqDCoMKgwqDCoMKgaWd0X291dHB1dF90ICpvdXRwdXQ7Cj4gLcKgwqDC oMKgwqDCoMKgZW51bSBwaXBlIHBpcGU7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoGZvcl9lYWNoX3Bp cGVfd2l0aF92YWxpZF9vdXRwdXQoZGlzcGxheSwgcGlwZSwgb3V0cHV0KSB7Cj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRybU1vZGVDb25uZWN0b3JQdHIgYyA9IG91dHB1dC0+Y29u ZmlnLmNvbm5lY3RvcjsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChj LT5jb25uZWN0b3JfdHlwZSAhPSBEUk1fTU9ERV9DT05ORUNUT1JfZURQKQo+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29udGludWU7Cj4gLQo+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfZGlzcGxheV9yZXNldChkaXNwbGF5KTsKPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQs IHBpcGUpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoIWk5MTVfcGlwZV9v dXRwdXRfY29tYm9fdmFsaWQoZGlzcGxheSkpCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBjb250aW51ZTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGRhdGEtPmNydGNfaWQgPSBvdXRwdXQtPmNvbmZpZy5jcnRjLT5jcnRjX2lkOwo+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkYXRhLT5vdXRwdXQgPSBvdXRwdXQ7Cj4g LQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm47Cj4gK8KgwqDCoMKgwqDC oMKgaW50IGk7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGkgPSAwOwo+ICvCoMKgwqDCoMKgwqDCoGRh dGEtPm91dHB1dHMgPSAoaWd0X291dHB1dF90ICoqKW1hbGxvYyhzaXplb2YoaWd0X291dHB1dF90 Cj4gKikgKiBkYXRhLT5kaXNwbGF5Lm5fb3V0cHV0cyk7Cj4gK8KgwqDCoMKgwqDCoMKgZGF0YS0+ b3V0cHV0X3R5cGUgPSAoaW50ICopIG1hbGxvYyhzaXplb2YoaW50KSAqIGRhdGEtCj4gPmRpc3Bs YXkubl9vdXRwdXRzKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgZm9yX2VhY2hfY29ubmVjdGVkX291 dHB1dCgmZGF0YS0+ZGlzcGxheSwgb3V0cHV0KSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBpZihwc3Jfc2lua19zdXBwb3J0KGRhdGEtPmRybV9mZCwgZGF0YS0+ZGVidWdmc19m ZCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBQU1JfTU9ERV8yLCBvdXRwdXQpKQo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGRhdGEtPnN1cHBvcnRzX3BzcjIgPSB0cnVlOwo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRhdGEtPm91dHB1dHNbaV0gPSBvdXRw dXQ7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkYXRh LT5vdXRwdXRfdHlwZVtpKytdID0gUFNSX01PREVfMjsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZ3RfZGVidWcoIlBTUl8yIHN1cHBvcnRlZCBvbiAl c1xuIiwgb3V0cHV0LQo+ID5uYW1lKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IH0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZWxzZSBpZihwc3Jfc2lua19zdXBw b3J0KGRhdGEtPmRybV9mZCwgZGF0YS0KPiA+ZGVidWdmc19mZCwKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgUFNS X01PREVfMSwgb3V0cHV0KSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgewo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGF0YS0+c3VwcG9y dHNfcHNyID0gdHJ1ZTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGRhdGEtPm91dHB1dHNbaV0gPSBvdXRwdXQ7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkYXRhLT5vdXRwdXRfdHlwZVtpKytdID0gUFNSX01P REVfMTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGln dF9kZWJ1ZygiUFNSXzEgc3VwcG9ydGVkIG9uICVzXG4iLCBvdXRwdXQtCj4gPm5hbWUpOwo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGVsc2UgaWYocHNyX3Npbmtfc3VwcG9ydChkYXRhLT5kcm1fZmQsIGRhdGEtCj4gPmRl YnVnZnNfZmQsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgUFJfTU9ERSwgb3V0cHV0KSkKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBkYXRhLT5zdXBwb3J0c19wciA9IHRydWU7Cj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGF0YS0+b3V0cHV0c1tpXSA9IG91 dHB1dDsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRh dGEtPm91dHB1dF90eXBlW2krK10gPSBQUl9NT0RFOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X2RlYnVnKCJQUiBzdXBwb3J0ZWQgb24gJXNcbiIs IG91dHB1dC0KPiA+bmFtZSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVsc2UKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9kZWJ1ZygiUFNSL1BTUjIvUFIgbm90IHN1 cHBvcnRlZCBvbgo+ICVzXG4iLCBvdXRwdXQtPm5hbWUpOwo+IMKgwqDCoMKgwqDCoMKgwqB9Cj4g K8KgwqDCoMKgwqDCoMKgZGF0YS0+b3V0cHV0X2NvdW50ID0gaTsKPiDCoH0KPiDCoAo+IMKgc3Rh dGljIHZvaWQgZGlzcGxheV9pbml0KGRhdGFfdCAqZGF0YSkKPiDCoHsKPiDCoMKgwqDCoMKgwqDC oMKgaWd0X2Rpc3BsYXlfcmVxdWlyZSgmZGF0YS0+ZGlzcGxheSwgZGF0YS0+ZHJtX2ZkKTsKPiAt wqDCoMKgwqDCoMKgwqBzZXR1cF9vdXRwdXQoZGF0YSk7Cj4gK8KgwqDCoMKgwqDCoMKgc2V0dXBf b3V0cHV0cyhkYXRhKTsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIHZvaWQgZGlzcGxheV9maW5pKGRh dGFfdCAqZGF0YSkKPiBAQCAtNTAyLDcgKzYyOSw3IEBAIHN0YXRpYyB2b2lkIGZiX2RpcnR5X2Zi X2lvY3RsKGRhdGFfdCAqZGF0YSwKPiBzdHJ1Y3QgaWd0X2ZiICpmYikKPiDCoH0KPiDCoAo+IMKg LyoqCj4gLSAqIFNVQlRFU1Q6IGN1cnNvcl9wbGFuZV9tb3ZlCj4gKyAqIFNVQlRFU1Q6IHBzcl9j dXJzb3JfcGxhbmVfbW92ZQo+IMKgICogRGVzY3JpcHRpb246IENoZWNrIGlmIHBzciBpcyBkZXRl Y3RpbmcgdGhlIHBsYW5lIG9wZXJhdGlvbnMKPiBwZXJmb3JtZWQgb24KPiDCoCAqwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBjdXJzb3IgcGxhbmVzCj4gwqAgKiBEcml2ZXIgcmVxdWlyZW1lbnQ6 IGk5MTUsIHhlCj4gQEAgLTUxMCw3ICs2MzcsNyBAQCBzdGF0aWMgdm9pZCBmYl9kaXJ0eV9mYl9p b2N0bChkYXRhX3QgKmRhdGEsCj4gc3RydWN0IGlndF9mYiAqZmIpCj4gwqAgKiBGdW5jdGlvbmFs aXR5OiBwc3IKPiDCoCAqIE1lZ2EgZmVhdHVyZTogUFNSCj4gwqAgKgo+IC0gKiBTVUJURVNUOiBw cmltYXJ5X3BhZ2VfZmxpcAo+ICsgKiBTVUJURVNUOiBwc3JfcHJpbWFyeV9wYWdlX2ZsaXAKPiDC oCAqIERlc2NyaXB0aW9uOiBDaGVjayBpZiBwc3IgaXMgZGV0ZWN0aW5nIHBhZ2UtZmxpcHBpbmcg b3BlcmF0aW9ucwo+IHBlcmZvcm1lZAo+IMKgICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG9u IHByaW1hcnkgcGxhbmVzCj4gwqAgKiBEcml2ZXIgcmVxdWlyZW1lbnQ6IGk5MTUsIHhlCj4gQEAg LTUxOCw3ICs2NDUsNyBAQCBzdGF0aWMgdm9pZCBmYl9kaXJ0eV9mYl9pb2N0bChkYXRhX3QgKmRh dGEsCj4gc3RydWN0IGlndF9mYiAqZmIpCj4gwqAgKiBGdW5jdGlvbmFsaXR5OiBwc3IKPiDCoCAq IE1lZ2EgZmVhdHVyZTogUFNSCj4gwqAgKgo+IC0gKiBTVUJURVNUOiBzcHJpdGVfcGxhbmVfb25v ZmYKPiArICogU1VCVEVTVDogcHNyX3Nwcml0ZV9wbGFuZV9vbm9mZgo+IMKgICogRGVzY3JpcHRp b246IENoZWNrIGlmIHBzciBpcyBkZXRlY3RpbmcgdGhlIHBsYW5lIG9wZXJhdGlvbnMKPiBwZXJm b3JtZWQgb24KPiDCoCAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzcHJpdGUgcGxhbmVzCj4g wqAgKiBEcml2ZXIgcmVxdWlyZW1lbnQ6IGk5MTUsIHhlCj4gQEAgLTY4MywxNSArODEwLDM2IEBA IHN0YXRpYyB2b2lkIHNldHVwX3Rlc3RfcGxhbmUoZGF0YV90ICpkYXRhLCBpbnQKPiB0ZXN0X3Bs YW5lKQo+IMKgwqDCoMKgwqDCoMKgwqBpZ3RfZGlzcGxheV9jb21taXQoJmRhdGEtPmRpc3BsYXkp Owo+IMKgfQo+IMKgCj4gK3N0YXRpYyBlbnVtIHBpcGUgZ2V0X3BpcGVfZm9yX291dHB1dChpZ3Rf ZGlzcGxheV90ICpkaXNwbGF5LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlndF9vdXRwdXRfdCAqb3V0cHV0 KQo+ICt7Cj4gK8KgwqDCoMKgwqDCoMKgIGVudW0gcGlwZSBwaXBlOwo+ICsKPiArwqDCoMKgwqDC oMKgwqAgZm9yX2VhY2hfcGlwZShkaXNwbGF5LCBwaXBlKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBpZiAoaWd0X3BpcGVfY29ubmVjdG9yX3ZhbGlkKHBpcGUsIG91dHB1dCkp IHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1 cm4gcGlwZTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPiArwqDCoMKgwqDC oMKgwqAgfQo+ICsKPiArwqDCoMKgwqDCoMKgwqAgaWd0X2Fzc2VydF9mKGZhbHNlLCAiTm8gcGlw ZSBmb3VuZCBmb3Igb3V0cHV0ICVzXG4iLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGlndF9vdXRwdXRfbmFtZShvdXRwdXQpKTsKPiArfQo+ICsKPiDCoHN0YXRp YyB2b2lkIHRlc3Rfc2V0dXAoZGF0YV90ICpkYXRhKQo+IMKgewo+ICvCoMKgwqDCoMKgwqDCoGVu dW0gcGlwZSBwaXBlOwo+IMKgwqDCoMKgwqDCoMKgwqBkcm1Nb2RlQ29ubmVjdG9yUHRyIGNvbm5l Y3RvcjsKPiDCoMKgwqDCoMKgwqDCoMKgYm9vbCBwc3JfZW50ZXJlZCA9IGZhbHNlOwo+IMKgCj4g wqDCoMKgwqDCoMKgwqDCoGlndF9yZXF1aXJlX2YoZGF0YS0+b3V0cHV0LAo+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiTm8gYXZhaWxhYmxlIG91dHB1dCBmb3Vu ZFxuIik7Cj4gwqAKPiArwqDCoMKgwqDCoMKgwqBkYXRhLT5jcnRjX2lkID0gZGF0YS0+b3V0cHV0 LT5jb25maWcuY3J0Yy0+Y3J0Y19pZDsKPiDCoMKgwqDCoMKgwqDCoMKgY29ubmVjdG9yID0gZGF0 YS0+b3V0cHV0LT5jb25maWcuY29ubmVjdG9yOwo+ICvCoMKgwqDCoMKgwqDCoHBpcGUgPSBnZXRf cGlwZV9mb3Jfb3V0cHV0KCZkYXRhLT5kaXNwbGF5LCBkYXRhLT5vdXRwdXQpOwo+ICvCoMKgwqDC oMKgwqDCoGlndF9vdXRwdXRfc2V0X3BpcGUoZGF0YS0+b3V0cHV0LCBwaXBlKTsKPiArwqDCoMKg wqDCoMKgwqBpZ3RfcmVxdWlyZV9mKGk5MTVfcGlwZV9vdXRwdXRfY29tYm9fdmFsaWQoJmRhdGEt PmRpc3BsYXkpLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJv dXRwdXQgcGlwZSBjb21ibyBub3QgdmFsaWRcbiIpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGZv ciAoaW50IGkgPSAwOyBpIDwgY29ubmVjdG9yLT5jb3VudF9tb2RlczsgaSsrKSB7Cj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkYXRhLT5tb2RlID0gJmNvbm5lY3Rvci0+bW9kZXNb aV07Cj4gQEAgLTc0NywxMTUgKzg5NSwxOTIgQEAgZGF0YV90IGRhdGEgPSB7fTsKPiDCoAo+IMKg aWd0X21haW5fYXJncygiIiwgbG9uZ19vcHRpb25zLCBoZWxwX3N0ciwgb3B0X2hhbmRsZXIsICZk YXRhKQo+IMKgewo+ICvCoMKgwqDCoMKgwqDCoGludCB6Owo+IMKgwqDCoMKgwqDCoMKgwqBlbnVt IG9wZXJhdGlvbnMgb3A7Cj4gLcKgwqDCoMKgwqDCoMKgY29uc3QgY2hhciAqYXBwZW5kX3N1YnRl c3RfbmFtZVsyXSA9IHsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIiIsCj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCJwc3IyXyIKPiArwqDCoMKgwqDCoMKgwqBjb25z dCBjaGFyICphcHBlbmRfc3VidGVzdF9uYW1lWzNdID0gewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAicHNyXyIsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCJwc3Iy XyIsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCJwcl8iCj4gwqDCoMKgwqDCoMKg wqDCoH07Cj4gK8KgwqDCoMKgwqDCoMKgaW50IG1vZGVzW10gPSB7UFNSX01PREVfMSwgUFNSX01P REVfMiwgUFJfTU9ERX07Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgaWd0X2ZpeHR1cmUgewo+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGF0YS5kcm1fZmQgPSBkcm1fb3Blbl9kcml2 ZXJfbWFzdGVyKERSSVZFUl9JTlRFTCB8Cj4gRFJJVkVSX1hFKTsKPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGRhdGEuZGVidWdmc19mZCA9IGlndF9kZWJ1Z2ZzX2RpcihkYXRhLmRy bV9mZCk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBrbXN0ZXN0X3NldF92dF9n cmFwaGljc19tb2RlKCk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkYXRhLmRl dmlkID0gaW50ZWxfZ2V0X2RybV9kZXZpZChkYXRhLmRybV9mZCk7Cj4gLQo+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfcmVxdWlyZV9mKHNpbmtfc3VwcG9ydCgmZGF0YSwgUFNS X01PREVfMSksCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICJTaW5rIGRvZXMgbm90IHN1cHBvcnQgUFNSXG4iKTsKPiAtCj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkYXRhLnN1cHBvcnRzX3BzcjIgPSBzaW5rX3N1cHBv cnQoJmRhdGEsIFBTUl9NT0RFXzIpOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ZGF0YS5ib3BzID0gYnVmX29wc19jcmVhdGUoZGF0YS5kcm1fZmQpOwo+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZGlzcGxheV9pbml0KCZkYXRhKTsKPiArCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBpZ3RfcmVxdWlyZV9mKGRhdGEuc3VwcG9ydHNfcHNyIHx8Cj4g ZGF0YS5zdXBwb3J0c19wc3IyIHx8IGRhdGEuc3VwcG9ydHNfcHIsCj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIlNpbmsgZG9lcyBu b3Qgc3VwcG9ydAo+IFBTUi9QU1IyL1BSXG4iKTsKPiArCj4gwqDCoMKgwqDCoMKgwqDCoH0KPiDC oAo+IC3CoMKgwqDCoMKgwqDCoGZvciAoZGF0YS5vcF9wc3JfbW9kZSA9IFBTUl9NT0RFXzE7IGRh dGEub3BfcHNyX21vZGUgPD0KPiBQU1JfTU9ERV8yOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGRhdGEub3BfcHNyX21vZGUrKykgewo+ICvCoMKgwqDCoMKgwqDCoGZvciAoeiA9IDA7IHogPCBB UlJBWV9TSVpFKG1vZGVzKTsgeisrKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGRhdGEub3BfcHNyX21vZGUgPSBtb2Rlc1t6XTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaWd0X2Rlc2NyaWJlKCJCYXNpYyBjaGVjayBmb3IgcHNyIGlmIGl0IGlzIGRl dGVjdGluZwo+IGNoYW5nZXMgbWFkZSBpbiBwbGFuZXMiKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaWd0X3N1YnRlc3RfZigiJXNiYXNpYyIsCj4gYXBwZW5kX3N1YnRlc3RfbmFt ZVtkYXRhLm9wX3Bzcl9tb2RlXSkgewo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZGF0YS50ZXN0X3BsYW5lX2lkID0gRFJNX1BMQU5FX1RZUEVfUFJJTUFS WTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRlc3Rf c2V0dXAoJmRhdGEpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgdGVzdF9jbGVhbnVwKCZkYXRhKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgaWd0X3N1YnRlc3Rfd2l0aF9keW5hbWljX2YoIiVzYmFzaWMiLAo+IGFwcGVuZF9zdWJ0ZXN0 X25hbWVbel0pIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGludCBrOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZm9yICggayA9IDA7IGsgPCBkYXRhLm91dHB1dF9jb3VudDsgaysrKQo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgewoKSG93IGFib3V0IGxvb3Bpbmcg b3V0cHV0cyBoZXJlPzoKCmZvcl9lYWNoX2Nvbm5lY3RlZF9vdXRwdXQoJmRhdGEtPmRpc3BsYXks IG91dHB1dCkgewogICAgaWYoIXBzcl9zaW5rX3N1cHBvcnQoZGF0YS0+ZHJtX2ZkLCBkYXRhLT5k ZWJ1Z2ZzX2ZkLAogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLm9wX3Bzcl9tb2RlLCBvdXRw dXQpKQogICAgICAgIGNvbnRpbnVlOwogICAgaWd0X2Rpc3BsYXlfcmVzZXQoJmRhdGEuZGlzcGxh eSk7CiAgICBkYXRhLm91dHB1dCA9IGRhdGEub3V0cHV0c1trXTsKICAgIGlndF9keW5hbWljX2Yo IiVzIiwgZGF0YS5vdXRwdXQtPm5hbWUpIHsKICAgICAgICBkYXRhLnRlc3RfcGxhbmVfaWQgPSBE Uk1fUExBTkVfVFlQRV9QUklNQVJZOwogICAgICAgIHRlc3Rfc2V0dXAoJmRhdGEpOwogICAgICAg IHRlc3RfY2xlYW51cCgmZGF0YSk7CiAgICB9CgpTYW1lIGNvbW1lbnQgb24gZWFjaCBzdWJ0ZXN0 IGJlbG93LgoKQlIsCgpKb3VuaSBIw7ZnYW5kZXIKCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X2Rpc3BsYXlfcmVzZXQo JmRhdGEuZGlzcGxheSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGF0YS5vdXRwdXQgPSBkYXRhLm91dHB1dHNba107Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaWd0X2R5bmFtaWNfZigiJXMiLCBkYXRhLm91dHB1dC0KPiA+bmFtZSkgewo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgaWYgKGRhdGEub3V0cHV0X3R5cGVba10gIT0KPiBkYXRhLm9wX3Bz cl9tb2RlKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlndF9za2lw X29uX2YodHJ1ZSwKPiAiRXhwZWN0ZWQgc2tpcDogJXMgZG9lc24ndCBzdXBwb3J0ICVzIiwKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAKPiBkYXRhLm91dHB1dC0+bmFtZSwgYXBwZW5kX3N1YnRlc3RfbmFtZVt6XSk7Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRhdGEudGVzdF9wbGFuZV9pZCA9Cj4gRFJNX1BMQU5FX1RZ UEVfUFJJTUFSWTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9zZXR1cCgmZGF0YSk7Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRlc3RfY2xlYW51cCgmZGF0YSk7Cj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBpZ3RfZGVzY3JpYmUoIkNoZWNrIGlmIHBzciBpcyBkZXRlY3RpbmcgY2hhbmdlcyB3 aGVuCj4gZHJycyBpcyBkaXNhYmxlZCIpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBpZ3Rfc3VidGVzdF9mKCIlc25vX2RycnMiLAo+IGFwcGVuZF9zdWJ0ZXN0X25hbWVbZGF0YS5v cF9wc3JfbW9kZV0pIHsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGRhdGEudGVzdF9wbGFuZV9pZCA9IERSTV9QTEFORV9UWVBFX1BSSU1BUlk7Cj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0X3NldHVwKCZk YXRhKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGln dF9hc3NlcnQoZHJyc19kaXNhYmxlZCgmZGF0YSkpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9jbGVhbnVwKCZkYXRhKTsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X3N1YnRlc3Rfd2l0aF9keW5hbWljX2YoIiVzbm9fZHJy cyIsCj4gYXBwZW5kX3N1YnRlc3RfbmFtZVt6XSkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCBrOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZvciAoIGsgPSAwOyBrIDwgZGF0YS5vdXRwdXRfY291 bnQ7IGsrKykKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGlndF9kaXNwbGF5X3Jlc2V0KCZkYXRhLmRpc3BsYXkpOwo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBk YXRhLm91dHB1dCA9IGRhdGEub3V0cHV0c1trXTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWd0X2R5bmFtaWNfZigiJXMi LCBkYXRhLm91dHB1dC0KPiA+bmFtZSkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGRh dGEub3V0cHV0X3R5cGVba10gIT0KPiBkYXRhLm9wX3Bzcl9tb2RlKQo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlndF9za2lwX29uX2YodHJ1ZSwKPiAiRXhwZWN0ZWQg c2tpcDogJXMgZG9lc24ndCBzdXBwb3J0ICVzIiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiBkYXRhLm91dHB1dC0+ bmFtZSwgYXBwZW5kX3N1YnRlc3RfbmFtZVt6XSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRh dGEudGVzdF9wbGFuZV9pZCA9Cj4gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWTsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgdGVzdF9zZXR1cCgmZGF0YSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGln dF9hc3NlcnQoZHJyc19kaXNhYmxlZCgmZGF0Cj4gYSkpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB0ZXN0X2NsZWFudXAoJmRhdGEpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoH0KPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9yIChvcCA9IFBB R0VfRkxJUDsgb3AgPD0gUkVOREVSOyBvcCsrKSB7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X2Rlc2NyaWJlKCJDaGVjayBpZiBwc3IgaXMgZGV0 ZWN0aW5nIHBhZ2UtCj4gZmxpcHBpbmcsbWVtb3J5IG1hcHBpbmcgYW5kICIKPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCJyZW5kZXJpbmcgb3BlcmF0aW9ucwo+IHBlcmZvcm1lZCBvbiBwcmltYXJ5 IHBsYW5lcyIpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgaWd0X3N1YnRlc3RfZigiJXNwcmltYXJ5XyVzIiwKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gYXBw ZW5kX3N1YnRlc3RfbmFtZVtkYXRhLm9wX3Bzcl9tb2RlXSwKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9zdWJ0ZXN0X3dpdGhfZHluYW1pY19mKCIl c3ByaW1hcnlfJXMiLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXBwZW5kX3N1YnRlc3RfbmFtZVt6XSwK PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBvcF9zdHIob3ApKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW50IGs7Cj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGlndF9za2lwX29uKGlzX3hlX2RldmljZShkYXRhLmRybV9mZCkKPiAmJgo+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIChvcCA9PSBNTUFQX0NQVSB8fCBvcCA9PQo+IE1NQVBfR1RUKSk7 Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGRhdGEub3AgPSBvcDsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkYXRhLnRlc3RfcGxhbmVfaWQgPQo+ IERSTV9QTEFORV9UWVBFX1BSSU1BUlk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9zZXR1cCgmZGF0YSk7Cj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgcnVuX3Rlc3QoJmRhdGEpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRlc3RfY2xlYW51cCgmZGF0YSk7Cj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Zm9yICggayA9IDA7IGsgPCBkYXRhLm91dHB1dF9jb3VudDsKPiBrKyspCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgewo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfZGlzcGxheV9yZXNldCgmZGF0YS5kaXNwbAo+IGF5KTsK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGF0YS5vdXRwdXQgPQo+IGRhdGEub3V0cHV0c1trXTsK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X2R5bmFtaWNfZigiJXMiLAo+IGRhdGEub3V0cHV0 LT5uYW1lKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZgo+IChk YXRhLm91dHB1dF90eXBlW2tdICE9IGRhdGEub3BfcHNyX21vZGUpCj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X3NraXBfb25fZgo+ICh0 cnVlLCAiRXhwZWN0ZWQgc2tpcDogJXMgZG9lc24ndCBzdXBwb3J0ICVzIiwKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoAo+IGRhdGEub3V0cHV0LT5uYW1lLCBhcHBlbmRfc3VidGVzdF9uYW1lW3pd KTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRhdGEub3AgPSBvcDsK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRhdGEudGVzdF9wbGFuZV9p ZCA9Cj4gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHRlc3Rfc2V0dXAoJmRhdGEpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgcnVuX3Rlc3QoJmRhdGEpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgdGVzdF9jbGVhbnVwKCZkYXRhKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgfQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoH0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB9Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqAKPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZvciAob3AgPSBNTUFQX0dUVDsgb3AgPD0gUExB TkVfT05PRkY7IG9wKyspIHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBpZ3RfZGVzY3JpYmUoIkNoZWNrIGlmIHBzciBpcyBkZXRlY3RpbmcKPiBtZW1v cnkgbWFwcGluZyxyZW5kZXJpbmcgIgo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgImFuZCBwbGFu ZSBvcGVyYXRpb25zCj4gcGVyZm9ybWVkIG9uIHNwcml0ZSBwbGFuZXMiKTsKPiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9zdWJ0ZXN0X2YoIiVzc3By aXRlXyVzIiwKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gYXBwZW5kX3N1YnRlc3RfbmFtZVtkYXRhLm9w X3Bzcl9tb2RlXSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGlndF9zdWJ0ZXN0X3dpdGhfZHluYW1pY19mKCIlc3Nwcml0ZV8lcyIsCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBhcHBlbmRfc3VidGVzdF9uYW1lW3pdLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG9wX3N0 cihvcCkpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBpbnQgazsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X3NraXBfb24oaXNfeGVfZGV2aWNl KGRhdGEuZHJtX2ZkKQo+ICYmCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKG9wID09 IE1NQVBfQ1BVIHx8IG9wID09Cj4gTU1BUF9HVFQpKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGF0YS5vcCA9IG9w Owo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGRhdGEudGVzdF9wbGFuZV9pZCA9Cj4gRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWTsK PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB0ZXN0X3NldHVwKCZkYXRhKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBydW5fdGVzdCgmZGF0YSk7Cj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgdGVzdF9jbGVhbnVwKCZkYXRhKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmb3IgKCBrID0gMDsgayA8IGRhdGEub3V0 cHV0X2NvdW50Owo+IGsrKykKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9k aXNwbGF5X3Jlc2V0KCZkYXRhLmRpc3BsCj4gYXkpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBk YXRhLm91dHB1dCA9Cj4gZGF0YS5vdXRwdXRzW2tdOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp Z3RfZHluYW1pY19mKCIlcyIsCj4gZGF0YS5vdXRwdXQtPm5hbWUpIHsKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmCj4gKGRhdGEub3V0cHV0X3R5cGVba10gIT0gZGF0 YS5vcF9wc3JfbW9kZSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBpZ3Rfc2tpcF9vbl9mCj4gKHRydWUsICJFeHBlY3RlZCBza2lwOiAlcyBk b2Vzbid0IHN1cHBvcnQgJXMiLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gZGF0YS5vdXRw dXQtPm5hbWUsIGFwcGVuZF9zdWJ0ZXN0X25hbWVbel0pOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZGF0YS5vcCA9IG9wOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZGF0YS50ZXN0X3BsYW5lX2lkID0KPiBEUk1fUExBTkVfVFlQRV9PVkVS TEFZOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9zZXR1cCgm ZGF0YSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBydW5fdGVzdCgm ZGF0YSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0X2NsZWFu dXAoJmRhdGEpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiDCoAo+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9kZXNjcmliZSgiQ2hl Y2sgaWYgcHNyIGlzIGRldGVjdGluZwo+IG1lbW9yeSBtYXBwaW5nLCByZW5kZXJpbmcgIgo+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgImFuZCBwbGFuZSBvcGVyYXRpb25zCj4gcGVyZm9ybWVkIG9u IGN1cnNvciBwbGFuZXMiKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGlndF9zdWJ0ZXN0X2YoIiVzY3Vyc29yXyVzIiwKPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Cj4gYXBwZW5kX3N1YnRlc3RfbmFtZVtkYXRhLm9wX3Bzcl9tb2RlXSwKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9zdWJ0ZXN0X3dpdGhfZHluYW1p Y19mKCIlc2N1cnNvcl8lcyIsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhcHBlbmRfc3VidGVzdF9uYW1l W3pdLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG9wX3N0cihvcCkpIHsKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpbnQgazsKPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaWd0X3NraXBfb24oaXNfeGVfZGV2aWNlKGRhdGEuZHJtX2ZkKQo+ICYmCj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKG9wID09IE1NQVBfQ1BVIHx8IG9wID09Cj4gTU1BUF9H VFQpKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZGF0YS5vcCA9IG9wOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRhdGEudGVzdF9wbGFuZV9p ZCA9Cj4gRFJNX1BMQU5FX1RZUEVfQ1VSU09SOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRlc3Rfc2V0dXAoJmRhdGEpOwo+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHJ1bl90ZXN0KCZkYXRhKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0X2NsZWFudXAoJmRhdGEpOwo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGZvciAoIGsgPSAwOyBrIDwgZGF0YS5vdXRwdXRfY291bnQ7Cj4gaysrKQo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHsK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X2Rpc3BsYXlfcmVzZXQoJmRhdGEuZGlzcGwKPiBh eSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRhdGEub3V0cHV0ID0KPiBkYXRhLm91dHB1dHNb a107Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9keW5hbWljX2YoIiVzIiwKPiBkYXRhLm91 dHB1dC0+bmFtZSkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYK PiAoZGF0YS5vdXRwdXRfdHlwZVtrXSAhPSBkYXRhLm9wX3Bzcl9tb2RlKQo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9za2lwX29uX2YK PiAodHJ1ZSwgIkV4cGVjdGVkIHNraXA6ICVzIGRvZXNuJ3Qgc3VwcG9ydCAlcyIsCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAKPiBkYXRhLm91dHB1dC0+bmFtZSwgYXBwZW5kX3N1YnRlc3RfbmFt ZVt6XSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkYXRhLm9wID0g b3A7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkYXRhLnRlc3RfcGxh bmVfaWQgPQo+IERSTV9QTEFORV9UWVBFX0NVUlNPUjsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHRlc3Rfc2V0dXAoJmRhdGEpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgcnVuX3Rlc3QoJmRhdGEpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9jbGVhbnVwKCZkYXRhKTsKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgfQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoH0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB9Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqAKPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9kZXNjcmliZSgiQ2hlY2sgaWYgcHNy IGlzIGRldGVjdGluZyBjaGFuZ2VzIHdoZW4KPiByZW5kZXJpbmcgb3BlcmF0aW9uIGlzIHBlcmZv cm1lZCIKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIsKgIHdpdGggZHBtcyBlbmFibGVkIG9yIGRpc2FibGVkIik7Cj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9zdWJ0ZXN0X2YoIiVzZHBtcyIsCj4gYXBw ZW5kX3N1YnRlc3RfbmFtZVtkYXRhLm9wX3Bzcl9tb2RlXSkgewo+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGF0YS5vcCA9IFJFTkRFUjsKPiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRhdGEudGVzdF9wbGFuZV9p ZCA9IERSTV9QTEFORV9UWVBFX1BSSU1BUlk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0X3NldHVwKCZkYXRhKTsKPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRwbXNfb2ZmX29uKCZkYXRhKTsKPiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJ1bl90ZXN0KCZkYXRh KTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRlc3Rf Y2xlYW51cCgmZGF0YSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9zdWJ0 ZXN0X3dpdGhfZHluYW1pY19mKCIlc2RwbXMiLAo+IGFwcGVuZF9zdWJ0ZXN0X25hbWVbel0pIHsK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgazsK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmb3IgKCBr ID0gMDsgayA8IGRhdGEub3V0cHV0X2NvdW50OyBrKyspCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZ3RfZGlzcGxheV9yZXNldCgm ZGF0YS5kaXNwbGF5KTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGF0YS5vdXRwdXQgPSBkYXRhLm91dHB1dHNba107Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGlndF9keW5hbWljX2YoIiVzIiwgZGF0YS5vdXRwdXQtCj4gPm5hbWUpIHsKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgaWYgKGRhdGEub3V0cHV0X3R5cGVba10gIT0KPiBkYXRhLm9wX3Bz cl9tb2RlKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X3NraXBf b25fZih0cnVlLAo+ICJFeHBlY3RlZCBza2lwOiAlcyBkb2Vzbid0IHN1cHBvcnQgJXMiLAo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoAo+IGRhdGEub3V0cHV0LT5uYW1lLCBhcHBlbmRfc3VidGVzdF9uYW1lW3pdKTsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZGF0YS5vcCA9IFJFTkRFUjsKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZGF0YS50ZXN0X3BsYW5lX2lkID0KPiBEUk1fUExBTkVfVFlQRV9QUklNQVJZOwo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0X3NldHVwKCZkYXRhKTsKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZHBtc19vZmZfb24oJmRhdGEpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBydW5fdGVz dCgmZGF0YSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRlc3RfY2xlYW51cCgmZGF0YSk7Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgfQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg fQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+IMKgCj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfZGVzY3JpYmUoIkNoZWNrIGlmIHBzciBpcyBkZXRlY3Rp bmcgY2hhbmdlcyB3aGVuCj4gcGxhbmUgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCAiCj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCJ3aXRoIHN1c3BlbmQgcmVzdW1lIGN5Y2xlcyIpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBpZ3Rfc3VidGVzdF9mKCIlc3N1c3BlbmQiLAo+IGFwcGVuZF9zdWJ0ZXN0X25hbWVb ZGF0YS5vcF9wc3JfbW9kZV0pIHsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGRhdGEub3AgPSBQTEFORV9PTk9GRjsKPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRhdGEudGVzdF9wbGFuZV9pZCA9IERSTV9QTEFO RV9UWVBFX0NVUlNPUjsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHRlc3Rfc2V0dXAoJmRhdGEpOwo+IC0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X3N5c3RlbV9zdXNwZW5kX2F1dG9yZXN1bWUoU1VTUEVO RF9TVEFURV9NRU0KPiAsCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgCj4gU1VTUEVORF9URVNUX05PTkUpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X2Fzc2VydChwc3Jfd2FpdF9lbnRyeV9pZl9lbmFi bGVkKCZkYXRhKSk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBydW5fdGVzdCgmZGF0YSk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB0ZXN0X2NsZWFudXAoJmRhdGEpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBpZ3Rfc3VidGVzdF93aXRoX2R5bmFtaWNfZigiJXNzdXNwZW5kIiwKPiBhcHBl bmRfc3VidGVzdF9uYW1lW3pdKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgaW50IGs7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgZm9yICggayA9IDA7IGsgPCBkYXRhLm91dHB1dF9jb3VudDsgaysrKQo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHsKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgaWd0X2Rpc3BsYXlfcmVzZXQoJmRhdGEuZGlzcGxheSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRhdGEub3V0cHV0 ID0gZGF0YS5vdXRwdXRzW2tdOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZ3RfZHluYW1pY19mKCIlcyIsIGRhdGEub3V0 cHV0LQo+ID5uYW1lKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChkYXRhLm91dHB1dF90 eXBlW2tdICE9Cj4gZGF0YS5vcF9wc3JfbW9kZSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGlndF9za2lwX29uX2YodHJ1ZSwKPiAiRXhwZWN0ZWQgc2tpcDogJXMgZG9l c24ndCBzdXBwb3J0ICVzIiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gZGF0YS5vdXRwdXQtPm5hbWUsIGFwcGVuZF9z dWJ0ZXN0X25hbWVbel0pOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkYXRhLm9wID0gUExBTkVf T05PRkY7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRhdGEudGVzdF9wbGFuZV9pZCA9Cj4gRFJN X1BMQU5FX1RZUEVfQ1VSU09SOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0X3NldHVwKCZk YXRhKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X3N5c3RlbV9zdXNwZW5kX2F1dG9yZXN1 bWUKPiAoU1VTUEVORF9TVEFURV9NRU0sCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiBTVVNQ RU5EX1RFU1RfTk9ORSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9hc3NlcnQocHNyX3dh aXRfZW50cnlfaWZfCj4gZW5hYmxlZCgmZGF0YSkpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBy dW5fdGVzdCgmZGF0YSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRlc3RfY2xlYW51cCgmZGF0 YSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgfQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgfQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+IMKgwqDCoMKgwqDC oMKgwqB9Cj4gwqAKCg==