From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9B05489121 for ; Tue, 30 Apr 2019 12:31:05 +0000 (UTC) Date: Tue, 30 Apr 2019 18:03:16 +0530 From: Ramalingam C Message-ID: <20190430123315.GC12742@intel.com> References: <20190418084842.5422-1-ramalingam.c@intel.com> <20190418084842.5422-6-ramalingam.c@intel.com> <20190429152429.GQ3271@phenom.ffwll.local> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20190429152429.GQ3271@phenom.ffwll.local> Subject: Re: [igt-dev] [PATCH i-g-t v5 5/6] kms_content_protection: srm and topology_info test List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Daniel Vetter Cc: igt-dev@lists.freedesktop.org, daniel.vetter@intel.com List-ID: T24gMjAxOS0wNC0yOSBhdCAxNzoyNDoyOSArMDIwMCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiBP biBUaHUsIEFwciAxOCwgMjAxOSBhdCAwMjoxODo0MVBNICswNTMwLCBSYW1hbGluZ2FtIEMgd3Jv dGU6Cj4gPiBSZXRyaWV2ZSB0aGUgdG9wb2xvZ3kgaW5mbyBhbmQgdXNlIHRoYXQgdG8gc3RpdGNo IGEgc3JtIGFuZAo+ID4gdmVyaWZ5IHRoZSByZXZvY2F0aW9uIHByb2Nlc3MuCj4gPiAKPiA+IEFk ZHMgYSBjb25uZWN0b3IgcHJvcGVydGllcyBjYWxsZWQgIkhEQ1AgVG9wb2xvZ3kiCj4gPiAKPiA+ IFNSTSBzdGl0Y2hlZCBoZXJlIGlzIHBvbGx1dGVkLiBLZXJuZWwgdHJ1c3RzIHRoZSB1c2Vyc3Bh Y2UgdG8gdmFsaWRhdGUKPiA+IHRoZSBTUk0gaW50ZWdyaXR5IHRocm91Z2ggRENQIHNpZ25hdHVy ZS4gQWN0dWFsbHkgdGhpcyB0ZXN0IGV4cGxvaXRzCj4gPiB0aGF0IHRydXN0IHRvIHRlc3QgU1JN IGFuZCBkb3duc3RyZWFtX2luZm8gZmVhdHVyZXMuCj4gPiAKPiA+IEhEQ1AxLjQgQktTViBhbmQg SERDUDIuMiByZWNlaXZlciBpZCBvZiBhIEhEQ1Agc2luayBpcyBkaWZmZXJlbnQuIFNvIHdlCj4g PiBuZWVkIHRvIGZvcmNlIHRoZSBLTUQgdG8gdXNlIGEgc2luZ2xlIEhEQ1AgdmVyc2lvbiBhY3Jv c3MKPiA+IGRvd25zdHJlYW1faW5mbyBnYXRoZXJpbmcgYW5kIFNSTSBzZXR0aW5nIGFuZCB2ZXJp ZnlpbmcgdGVoIHJldm9jYXRpb24KPiA+IHByb2Nlc3MuIFNvIFR5cGUgMSBpcyB1c2VkLgo+ID4g Cj4gPiB2MjoKPiA+ICAgYmluYXJ5IHN5c2ZzIGlzIHVzZWQgdG8gd3JpdGUgdGhlIHNybSBpbnRv IGtlcm5lbCBbRGFuaWVsXQo+ID4gdjM6Cj4gPiAgIHMvQ1BfZG93bnN0cmVhbV9pbmZvL0hEQ1Ag VG9wb2xvZ3kKPiA+IHY0Ogo+ID4gICBzcm0gc3lzZnMgaXMgbW92ZWQgdG8gL3N5cy9jbGFzcy9k cm0gYXMgcGVyIGtlcm5lbCBjaGFuZ2VzLgo+ID4gICBleHBsaWNpdCBwYWRkaW5nIGlzIGFkZGVk IGZvciB0b3BvbG9neSBzdHJ1Y3QsIGluIHN5bmMgd2l0aCBrZXJuZWwuCj4gPiB2NToKPiA+ICAg U1JNIGlzIHdyaXR0ZW4gaW50byAvbGliL2Zpcm13YXJlLyBpbnN0ZWFkIG9mIHNybSBzeXNmcyBb RGFuaWVsXQo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBSYW1hbGluZ2FtIEMgPHJhbWFsaW5nYW0u Y0BpbnRlbC5jb20+Cj4gPiAtLS0KPiA+ICBsaWIvaWd0X2ttcy5jICAgICAgICAgICAgICAgICAg fCAgIDEgKwo+ID4gIGxpYi9pZ3Rfa21zLmggICAgICAgICAgICAgICAgICB8ICAgMSArCj4gPiAg dGVzdHMva21zX2NvbnRlbnRfcHJvdGVjdGlvbi5jIHwgMjMwICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0tLQo+ID4gIDMgZmlsZXMgY2hhbmdlZCwgMjE0IGluc2VydGlvbnMoKyksIDE4 IGRlbGV0aW9ucygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvbGliL2lndF9rbXMuYyBiL2xpYi9p Z3Rfa21zLmMKPiA+IGluZGV4IDE4ZjA1NTY2ODdkZS4uN2Q0MDgwY2IxYjYwIDEwMDY0NAo+ID4g LS0tIGEvbGliL2lndF9rbXMuYwo+ID4gKysrIGIvbGliL2lndF9rbXMuYwo+ID4gQEAgLTIyMyw2 ICsyMjMsNyBAQCBjb25zdCBjaGFyICogY29uc3QgaWd0X2Nvbm5lY3Rvcl9wcm9wX25hbWVzW0lH VF9OVU1fQ09OTkVDVE9SX1BST1BTXSA9IHsKPiA+ICAJW0lHVF9DT05ORUNUT1JfQ09OVEVOVF9Q Uk9URUNUSU9OXSA9ICJDb250ZW50IFByb3RlY3Rpb24iLAo+ID4gIAlbSUdUX0NPTk5FQ1RPUl9W UlJfQ0FQQUJMRV0gPSAidnJyX2NhcGFibGUiLAo+ID4gIAlbSUdUX0NPTk5FQ1RPUl9IRENQX0NP TlRFTlRfVFlQRV0gPSAiSERDUCBDb250ZW50IFR5cGUiLAo+ID4gKwlbSUdUX0NPTk5FQ1RPUl9I RENQX1RPUE9MT0dZX0lORk9dID0gIkhEQ1AgVG9wb2xvZ3kiLAo+ID4gIH07Cj4gPiAgCj4gPiAg LyoKPiA+IGRpZmYgLS1naXQgYS9saWIvaWd0X2ttcy5oIGIvbGliL2lndF9rbXMuaAo+ID4gaW5k ZXggYjE0MzBhNTE3MzA1Li45MDE1NGU4NWI2OTkgMTAwNjQ0Cj4gPiAtLS0gYS9saWIvaWd0X2tt cy5oCj4gPiArKysgYi9saWIvaWd0X2ttcy5oCj4gPiBAQCAtMTI0LDYgKzEyNCw3IEBAIGVudW0g aWd0X2F0b21pY19jb25uZWN0b3JfcHJvcGVydGllcyB7Cj4gPiAgICAgICAgIElHVF9DT05ORUNU T1JfQ09OVEVOVF9QUk9URUNUSU9OLAo+ID4gICAgICAgICBJR1RfQ09OTkVDVE9SX1ZSUl9DQVBB QkxFLAo+ID4gICAgICAgICBJR1RfQ09OTkVDVE9SX0hEQ1BfQ09OVEVOVF9UWVBFLAo+ID4gKyAg ICAgICBJR1RfQ09OTkVDVE9SX0hEQ1BfVE9QT0xPR1lfSU5GTywKPiA+ICAgICAgICAgSUdUX05V TV9DT05ORUNUT1JfUFJPUFMKPiA+ICB9Owo+ID4gIAo+ID4gZGlmZiAtLWdpdCBhL3Rlc3RzL2tt c19jb250ZW50X3Byb3RlY3Rpb24uYyBiL3Rlc3RzL2ttc19jb250ZW50X3Byb3RlY3Rpb24uYwo+ ID4gaW5kZXggNDhmODk1NzFkY2ZmLi5iNDg5MTVlYjNkNzMgMTAwNjQ0Cj4gPiAtLS0gYS90ZXN0 cy9rbXNfY29udGVudF9wcm90ZWN0aW9uLmMKPiA+ICsrKyBiL3Rlc3RzL2ttc19jb250ZW50X3By b3RlY3Rpb24uYwo+ID4gQEAgLTU4LDYgKzU4LDExOCBAQCBzdHJ1Y3QgZGF0YSB7Cj4gPiAgI2Rl ZmluZSBGTElQX0VWRU5UX1BPTExJTkdfVElNRU9VVF9NU0VDCQkxMDAwCj4gPiAgCj4gPiAgCj4g PiArI2RlZmluZSBEUk1fTU9ERV9IRENQX0tTVl9MRU4JCQk1Cj4gPiArI2RlZmluZSBEUk1fTU9E RV9IRENQX01BWF9ERVZJQ0VfQ05UCQkxMjcKPiA+ICsKPiA+ICsjZGVmaW5lIERSTV9NT0RFX0hE Q1AxNF9JTl9GT1JDRQkJKDE8PDApCj4gPiArI2RlZmluZSBEUk1fTU9ERV9IRENQMjJfSU5fRk9S Q0UJCSgxPDwxKQo+ID4gKwo+ID4gK3N0cnVjdCBoZGNwX3RvcG9sb2d5X2luZm8gewo+ID4gKwkv KiBWZXJzaW9uIG9mIEhEQ1AgYXV0aGVudGljYXRlZCAoMS40LzIuMikgKi8KPiA+ICsJX191MzIg dmVyX2luX2ZvcmNlOwo+ID4gKwo+ID4gKwkvKiBBcHBsaWNhYmxlIG9ubHkgZm9yIEhEQ1AyLjIg Ki8KPiA+ICsJX191MzIgY29udGVudF90eXBlOwo+ID4gKwo+ID4gKwkvKiBLU1Ygb2YgaW1tZWRp YXRlIEhEQ1AgU2luay4gSW4gTGl0dGxlLUVuZGlhbiBGb3JtYXQuICovCj4gPiArCV9fdTggYmtz dltEUk1fTU9ERV9IRENQX0tTVl9MRU5dOwo+ID4gKwo+ID4gKwkvKiBXaGV0aGVyIEltbWVkaWF0 ZSBIRENQIHNpbmsgaXMgYSByZXBlYXRlcj8gKi8KPiA+ICsJX191OCBpc19yZXBlYXRlcjsKPiA+ ICsKPiA+ICsJLyogRGVwdGggcmVjZWl2ZWQgZnJvbSBpbW1lZGlhdGUgZG93bnN0cmVhbSByZXBl YXRlciAqLwo+ID4gKwlfX3U4IGRlcHRoOwo+ID4gKwlfX3U4IHBhZDE7Cj4gPiArCj4gPiArCS8q IERldmljZSBjb3VudCByZWNlaXZlZCBmcm9tIGltbWVkaWF0ZSBkb3duc3RyZWFtIHJlcGVhdGVy ICovCj4gPiArCV9fdTMyIGRldmljZV9jb3VudDsKPiA+ICsKPiA+ICsJLyoKPiA+ICsJICogTWF4 IGJ1ZmZlciByZXF1aXJlZCB0byBob2xkIGtzdiBsaXN0IHJlY2VpdmVkIGZyb20gaW1tZWRpYXRl Cj4gPiArCSAqIHJlcGVhdGVyLiBJbiB0aGlzIGFycmF5IGZpcnN0IGRldmljZV9jb3VudCAqIERS TV9NT0RFX0hEQ1BfS1NWX0xFTgo+ID4gKwkgKiB3aWxsIGhvbGQgdGhlIHZhbGlkIGtzdiBieXRl cy4KPiA+ICsJICogSWYgYXV0aGVudGljYXRpb24gc3BlY2lmaWNhdGlvbiBpcwo+ID4gKwkgKiAg ICAgIEhEQ1AxLjQgLSBlYWNoIEtTVidzIEJ5dGVzIHdpbGwgYmUgaW4gTGl0dGxlLUVuZGlhbiBm b3JtYXQuCj4gPiArCSAqICAgICAgSERDUDIuMiAtIGVhY2ggS1NWJ3MgQnl0ZXMgd2lsbCBiZSBp biBCaWctRW5kaWFuIGZvcm1hdC4KPiA+ICsJICovCj4gPiArCV9fdTgga3N2X2xpc3RbRFJNX01P REVfSERDUF9LU1ZfTEVOICogRFJNX01PREVfSERDUF9NQVhfREVWSUNFX0NOVF07Cj4gPiArCV9f dTggcGFkMls1XTsKPiA+ICt9IF9fcGFja2VkOwo+ID4gKwo+ID4gK19fdTggZmFjc2ltaWxlX3Ny bVtdID0gewo+ID4gKwkweDgwLCAweDAsIDB4MCwgMHgwNSwgMHgwMSwgMHgwLCAweDAsIDB4MzYs IDB4MDIsIDB4NTEsIDB4MUUsIDB4RjIsCj4gPiArCTB4MUEsIDB4Q0QsIDB4RTcsIDB4MjYsIDB4 OTcsIDB4RjQsIDB4MDEsIDB4OTcsIDB4MTAsIDB4MTksIDB4OTIsIDB4NTMsCj4gPiArCTB4RTks IDB4RjAsIDB4NTksIDB4OTUsIDB4QTMsIDB4N0EsIDB4M0IsIDB4RkUsIDB4RTAsIDB4OUMsIDB4 NzYsIDB4REQsCj4gPiArCTB4ODMsIDB4QUEsIDB4QzIsIDB4NUIsIDB4MjQsIDB4QjMsIDB4MzYs IDB4ODQsIDB4OTQsIDB4NzUsIDB4MzQsIDB4REIsCj4gPiArCTB4MTAsIDB4OUUsIDB4M0IsIDB4 MjMsIDB4MTMsIDB4RDgsIDB4N0EsIDB4QzIsIDB4MzAsIDB4NzksIDB4ODR9Owo+ID4gKwo+ID4g K3N0YXRpYyB2b2lkIHBhcnNlX3RvcG9sb2d5X2luZm8oc3RydWN0IGhkY3BfdG9wb2xvZ3lfaW5m byAqZHNfaW5mbykKPiA+ICt7Cj4gPiArCV9fdTggKmtzdnM7Cj4gPiArCWludCBpOwo+ID4gKwo+ ID4gKwlpZiAoZHNfaW5mby0+dmVyX2luX2ZvcmNlICYgRFJNX01PREVfSERDUDE0X0lOX0ZPUkNF KQo+ID4gKwkJaWd0X2luZm8oIkhEQ1AxLjQgaXMgRW5hYmxlZFxuIik7Cj4gPiArCWVsc2UgaWYg KGRzX2luZm8tPnZlcl9pbl9mb3JjZSAmIERSTV9NT0RFX0hEQ1AyMl9JTl9GT1JDRSkKPiA+ICsJ CWlndF9pbmZvKCJIRENQMi4yIGlzIEVuYWJsZWQuIFR5cGUlZFxuIiwKPiA+ICsJCQkgZHNfaW5m by0+Y29udGVudF90eXBlICYgSERDUF9DT05URU5UX1RZUEVfMSA/Cj4gPiArCQkJIDEgOiAwKTsK PiA+ICsJZWxzZQo+ID4gKwkJcmV0dXJuOwo+ID4gKwo+ID4gKwlpZ3RfaW5mbygiXHRSZWNlaXZl ciBJRDogJSMwNHggJSMwNHggJSMwNHggJSMwNHggJSMwNHhcbiIsCj4gPiArCQkJZHNfaW5mby0+ YmtzdlswXSAmIDB4RkYsIGRzX2luZm8tPmJrc3ZbMV0gJiAweEZGLAo+ID4gKwkJCWRzX2luZm8t PmJrc3ZbMl0gJiAweEZGLCBkc19pbmZvLT5ia3N2WzNdICYgMHhGRiwKPiA+ICsJCQlkc19pbmZv LT5ia3N2WzRdICYgMHhGRik7Cj4gPiArCj4gPiArCWlmIChkc19pbmZvLT5pc19yZXBlYXRlcikg ewo+ID4gKwkJaWd0X2luZm8oIlx0SERDUCBzaW5rIGlzIGEgUmVwZWF0ZXJcbiIpOwo+ID4gKwo+ ID4gKwkJaWd0X2luZm8oIlx0RGVwdGg6ICVkLCBEZXZpY2UgY291bnQ6ICVkXG4iLCBkc19pbmZv LT5kZXB0aCwKPiA+ICsJCQkJCQkJZHNfaW5mby0+ZGV2aWNlX2NvdW50KTsKPiA+ICsJCWtzdnMg PSBkc19pbmZvLT5rc3ZfbGlzdDsKPiA+ICsKPiA+ICsJCWZvciAoaSA9IDA7IGkgPCBkc19pbmZv LT5kZXZpY2VfY291bnQ7IGkrKykgewo+ID4gKwkJCWlndF9pbmZvKCJcdGtzdi0lZDogJSMwNHgg JSMwNHggJSMwNHggJSMwNHggJSMwNHhcbiIsIGksCj4gPiArCQkJCQlrc3ZzWzBdICYgMHhGRiwg a3N2c1sxXSAmIDB4RkYsCj4gPiArCQkJCQlrc3ZzWzJdICYgMHhGRiwga3N2c1szXSAmIDB4RkYs Cj4gPiArCQkJCQlrc3ZzWzRdICYgMHhGRik7Cj4gPiArCQkJa3N2cyArPSBEUk1fTU9ERV9IRENQ X0tTVl9MRU47Cj4gPiArCQl9Cj4gPiArCX0gZWxzZSB7Cj4gPiArCQlpZ3RfaW5mbygiXHRIRENQ IHNpbmsgaXMgYSBSZWNlaXZlclxuIik7Cj4gPiArCX0KPiA+ICt9Cj4gPiArCj4gPiArc3RhdGlj IHZvaWQgcmV0cmlldmVfdG9wb2xvZ3lfaW5mb19wcmVwYXJlX3NybShpZ3Rfb3V0cHV0X3QgKm91 dHB1dCkKPiA+ICt7Cj4gPiArCWRybU1vZGVQcm9wZXJ0eUJsb2JSZXMgKmRzX2luZm9fcHJvcCA9 IE5VTEw7Cj4gPiArCXVpbnQ2NF90IHRvcG9sb2d5X2Jsb2JfaWQ7Cj4gPiArCXN0cnVjdCBoZGNw X3RvcG9sb2d5X2luZm8gKmRzX2luZm87Cj4gPiArCWludCBpOwo+ID4gKwo+ID4gKwlpZ3RfaW5m bygiSERDUCB0b3BvbG9neSBwcm9wZXJ0eSBpcyBhdHRhY2hlZFxuIik7Cj4gPiArCj4gPiArCXRv cG9sb2d5X2Jsb2JfaWQgPSBpZ3Rfb3V0cHV0X2dldF9wcm9wKG91dHB1dCwKPiA+ICsJCQkJSUdU X0NPTk5FQ1RPUl9IRENQX1RPUE9MT0dZX0lORk8pOwo+ID4gKwo+ID4gKwlpZ3RfYXNzZXJ0X2Yo dG9wb2xvZ3lfYmxvYl9pZCwKPiA+ICsJCQkJIkludmFsaWQgdG9wb2xvZ3kgYmxvYiBpZFxuIik7 Cj4gPiArCj4gPiArCWRzX2luZm9fcHJvcCA9IGRybU1vZGVHZXRQcm9wZXJ0eUJsb2IoZGF0YS5k cm1fZmQsCj4gPiArCQkJCQkJdG9wb2xvZ3lfYmxvYl9pZCk7Cj4gPiArCj4gPiArCWlndF9hc3Nl cnQoZHNfaW5mb19wcm9wKTsKPiA+ICsJaWd0X2Fzc2VydF9lcShkc19pbmZvX3Byb3AtPmxlbmd0 aCwKPiA+ICsJCQkJc2l6ZW9mKHN0cnVjdCBoZGNwX3RvcG9sb2d5X2luZm8pKTsKPiA+ICsJZHNf aW5mbyA9IGRzX2luZm9fcHJvcC0+ZGF0YTsKPiA+ICsKPiA+ICsJcGFyc2VfdG9wb2xvZ3lfaW5m byhkc19pbmZvKTsKPiA+ICsKPiA+ICsJZm9yIChpID0gMDsgaSA8IDU7IGkrKykKPiA+ICsJCWZh Y3NpbWlsZV9zcm1baSArIDldID0gZHNfaW5mby0+YmtzdltpXTsKPiA+ICt9Cj4gPiArCj4gPiAg c3RhdGljIHZvaWQgZmxpcF9oYW5kbGVyKGludCBmZCwgdW5zaWduZWQgaW50IHNlcXVlbmNlLCB1 bnNpZ25lZCBpbnQgdHZfc2VjLAo+ID4gIAkJCSB1bnNpZ25lZCBpbnQgdHZfdXNlYywgdm9pZCAq X2RhdGEpCj4gPiAgewo+ID4gQEAgLTM1NSw3ICs0NjcsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2Nw X2Rpc2FibGUoaWd0X291dHB1dF90ICpvdXRwdXQsIGVudW0gaWd0X2NvbW1pdF9zdHlsZSBzKQo+ ID4gIHN0YXRpYyB2b2lkIHRlc3RfY3BfZW5hYmxlX3dpdGhfcmV0cnkoaWd0X291dHB1dF90ICpv dXRwdXQsCj4gPiAgCQkJCSAgICAgIGVudW0gaWd0X2NvbW1pdF9zdHlsZSBzLCBpbnQgcmV0cnks Cj4gPiAgCQkJCSAgICAgIGludCBjb250ZW50X3R5cGUsIGJvb2wgZXhwZWN0X2ZhaWx1cmUsCj4g PiAtCQkJCSAgICAgIGJvb2wgdGVzdF90eXBlX2NoYW5nZSkKPiA+ICsJCQkJICAgICAgYm9vbCB0 ZXN0X3R5cGVfY2hhbmdlLCBib29sIHRlc3Rfc3JtKQo+ID4gIHsKPiA+ICAJaW50IHJldHJ5X29y aWcgPSByZXRyeTsKPiA+ICAJYm9vbCByZXQ7Cj4gPiBAQCAtMzc2LDYgKzQ4OCw5IEBAIHN0YXRp YyB2b2lkIHRlc3RfY3BfZW5hYmxlX3dpdGhfcmV0cnkoaWd0X291dHB1dF90ICpvdXRwdXQsCj4g PiAgCWlmIChleHBlY3RfZmFpbHVyZSkKPiA+ICAJCWlndF9hc3NlcnRfZighcmV0LAo+ID4gIAkJ CSAgICAgIkNQIEVuYWJsZWQuIFRob3VnaCBpdCBpcyBleHBlY3RlZCB0byBmYWlsXG4iKTsKPiA+ ICsJZWxzZSBpZiAodGVzdF9zcm0pCj4gPiArCQlpZ3RfYXNzZXJ0X2YoIXJldCwKPiA+ICsJCQkg ICAgICJDUCBFbmFibGVkLiBUaG91Z2ggSUQgaXMgcmV2b2tlZCB0aHJvdWdoIFNSTVxuIik7Cj4g PiAgCWVsc2UKPiA+ICAJCWlndF9hc3NlcnRfZihyZXQsICJDb250ZW50IFByb3RlY3Rpb24gbm90 IGVuYWJsZWRcbiIpOwo+ID4gIH0KPiA+IEBAIC00MDAsMTUgKzUxNSwzNyBAQCBzdGF0aWMgdm9p ZCB0ZXN0X2NwX2xpYyhpZ3Rfb3V0cHV0X3QgKm91dHB1dCkKPiA+ICAJaWd0X2Fzc2VydF9mKCFy ZXQsICJDb250ZW50IFByb3RlY3Rpb24gTElDIEZhaWxlZFxuIik7Cj4gPiAgfQo+ID4gIAo+ID4g K3N0YXRpYyBib29sIHdyaXRlX3NybV9hc19mdyhjb25zdCBfX3U4ICpzcm0sIGludCBsZW4pCj4g PiArewo+ID4gKwlpbnQgZmQsIHJldCwgdG90YWwgPSAwOwo+ID4gKwo+ID4gKwlmZCA9IG9wZW4o Ii9saWIvZmlybXdhcmUvZGlzcGxheV9oZGNwX3NybS5iaW4iLCBPX1dST05MWSB8IE9fQ1JFQVQp Owo+ID4gKwlkbyB7Cj4gPiArCQlyZXQgPSB3cml0ZShmZCwgc3JtICsgdG90YWwsIGxlbiAtIHRv dGFsKTsKPiA+ICsJCWlmIChyZXQgPCAwKQo+ID4gKwkJCXJldCA9IC1lcnJubzsKPiA+ICsJCWlm IChyZXQgPT0gLUVJTlRSIHx8IHJldCA9PSAtRUFHQUlOKQo+ID4gKwkJCWNvbnRpbnVlOwo+ID4g KwkJaWYgKHJldCA8PSAwKQo+ID4gKwkJCWJyZWFrOwo+ID4gKwkJdG90YWwgKz0gcmV0Owo+ID4g Kwl9IHdoaWxlICh0b3RhbCAhPSBsZW4pOwo+ID4gKwljbG9zZShmZCk7Cj4gPiArCj4gPiArCXJl dHVybiB0b3RhbCA8IGxlbiA/IGZhbHNlIDogdHJ1ZTsKPiA+ICt9Cj4gPiArCj4gPiAgc3RhdGlj IHZvaWQKPiA+ICB0ZXN0X2NvbnRlbnRfcHJvdGVjdGlvbl9vbl9vdXRwdXQoaWd0X291dHB1dF90 ICpvdXRwdXQsIGVudW0gaWd0X2NvbW1pdF9zdHlsZSBzLAo+ID4gIAkJCQkgIGJvb2wgZHBtc190 ZXN0LCBpbnQgY29udGVudF90eXBlLAo+ID4gLQkJCQkgIGJvb2wgbWVpX3JlbG9hZF90ZXN0LCBi b29sIHRlc3RfdHlwZV9jaGFuZ2UpCj4gPiArCQkJCSAgYm9vbCBtZWlfcmVsb2FkX3Rlc3QsIGJv b2wgdGVzdF90eXBlX2NoYW5nZSwKPiA+ICsJCQkJICBib29sIHRlc3Rfc3JtKQo+ID4gIHsKPiA+ ICAJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLmRpc3BsYXk7Cj4gPiAgCWlndF9wbGFu ZV90ICpwcmltYXJ5Owo+ID4gIAllbnVtIHBpcGUgcGlwZTsKPiA+IC0JYm9vbCByZXQ7Cj4gPiAr CWJvb2wgcmV0LCBzcm1fbW9kaWZpZWQgPSBmYWxzZTsKPiA+ICsJaW50IGk7Cj4gPiAgCj4gPiAg CWZvcl9lYWNoX3BpcGUoZGlzcGxheSwgcGlwZSkgewo+ID4gIAkJaWYgKCFpZ3RfcGlwZV9jb25u ZWN0b3JfdmFsaWQocGlwZSwgb3V0cHV0KSkKPiA+IEBAIC00MjMsMTMgKzU2MCwxNSBAQCB0ZXN0 X2NvbnRlbnRfcHJvdGVjdGlvbl9vbl9vdXRwdXQoaWd0X291dHB1dF90ICpvdXRwdXQsIGVudW0g aWd0X2NvbW1pdF9zdHlsZSBzLAo+ID4gIAkJaWYgKCFpZ3RfcGlwZV9pc19mcmVlKGRpc3BsYXks IHBpcGUpKQo+ID4gIAkJCWNvbnRpbnVlOwo+ID4gIAo+ID4gKwkJc3JtX21vZGlmaWVkID0gZmFs c2U7Cj4gPiAgCQltb2Rlc2V0X3dpdGhfZmIocGlwZSwgb3V0cHV0LCBzKTsKPiA+ICAJCXRlc3Rf Y3BfZW5hYmxlX3dpdGhfcmV0cnkob3V0cHV0LCBzLCAzLCBjb250ZW50X3R5cGUsIGZhbHNlLAo+ ID4gLQkJCQkJICBmYWxzZSk7Cj4gPiArCQkJCQkgIGZhbHNlLCBmYWxzZSk7Cj4gPiArCj4gPiAg CQlpZiAodGVzdF90eXBlX2NoYW5nZSAmJiBjb250ZW50X3R5cGUgPT0gSERDUF9DT05URU5UX1RZ UEVfMSkKPiA+ICAJCQl0ZXN0X2NwX2VuYWJsZV93aXRoX3JldHJ5KG91dHB1dCwgcywgMywKPiA+ ICAJCQkJCQkgIEhEQ1BfQ09OVEVOVF9UWVBFXzAsIGZhbHNlLAo+ID4gLQkJCQkJCSAgdGVzdF90 eXBlX2NoYW5nZSk7Cj4gPiArCQkJCQkJICB0ZXN0X3R5cGVfY2hhbmdlLCBmYWxzZSk7Cj4gPiAg Cj4gPiAgCQlpZiAobWVpX3JlbG9hZF90ZXN0KSB7Cj4gPiAgCQkJaWd0X2Fzc2VydF9mKCFpZ3Rf a21vZF91bmxvYWQoIm1laV9oZGNwIiwgMCksCj4gPiBAQCAtNDM3LDE4ICs1NzYsNDcgQEAgdGVz dF9jb250ZW50X3Byb3RlY3Rpb25fb25fb3V0cHV0KGlndF9vdXRwdXRfdCAqb3V0cHV0LCBlbnVt IGlndF9jb21taXRfc3R5bGUgcywKPiA+ICAKPiA+ICAJCQkvKiBFeHBlY3RlZCB0byBmYWlsICov Cj4gPiAgCQkJdGVzdF9jcF9lbmFibGVfd2l0aF9yZXRyeShvdXRwdXQsIHMsIDMsCj4gPiAtCQkJ CQkJICBjb250ZW50X3R5cGUsIHRydWUsIGZhbHNlKTsKPiA+ICsJCQkJCQkgIGNvbnRlbnRfdHlw ZSwgdHJ1ZSwgZmFsc2UsCj4gPiArCQkJCQkJICBmYWxzZSk7Cj4gPiAgCj4gPiAgCQkJaWd0X2Fz c2VydF9mKCFpZ3Rfa21vZF9sb2FkKCJtZWlfaGRjcCIsIE5VTEwpLAo+ID4gIAkJCQkgICAgICJt ZWlfaGRjcCBsb2FkIGZhaWxlZCIpOwo+ID4gIAo+ID4gIAkJCS8qIEV4cGVjdGVkIHRvIHBhc3Mg Ki8KPiA+ICAJCQl0ZXN0X2NwX2VuYWJsZV93aXRoX3JldHJ5KG91dHB1dCwgcywgMywKPiA+IC0J CQkJCQkgIGNvbnRlbnRfdHlwZSwgZmFsc2UsIGZhbHNlKTsKPiA+ICsJCQkJCQkgIGNvbnRlbnRf dHlwZSwgZmFsc2UsIGZhbHNlLAo+ID4gKwkJCQkJCSAgZmFsc2UpOwo+ID4gIAkJfQo+ID4gIAo+ ID4gIAkJdGVzdF9jcF9saWMob3V0cHV0KTsKPiA+ICAKPiA+ICsJCWlmIChvdXRwdXQtPnByb3Bz W0lHVF9DT05ORUNUT1JfSERDUF9UT1BPTE9HWV9JTkZPXSAmJgo+ID4gKwkJICAgIHRlc3Rfc3Jt KSB7Cj4gPiArCQkJcmV0cmlldmVfdG9wb2xvZ3lfaW5mb19wcmVwYXJlX3NybShvdXRwdXQpOwo+ ID4gKwkJCXNybV9tb2RpZmllZCA9Cj4gPiArCQkJCXdyaXRlX3NybV9hc19mdygoY29uc3QgX191 OCAqKWZhY3NpbWlsZV9zcm0sCj4gPiArCQkJCQkJc2l6ZW9mKGZhY3NpbWlsZV9zcm0pKTsKPiA+ ICsJCQlpZ3RfYXNzZXJ0X2Yoc3JtX21vZGlmaWVkLCAiU1JNIHVwZGF0ZSBmYWlsZWQiKTsKPiA+ ICsJCX0KPiA+ICsKPiA+ICsJCWlmICh0ZXN0X3NybSAmJiBzcm1fbW9kaWZpZWQpIHsKPiA+ICsJ CQl0ZXN0X2NwX2Rpc2FibGUob3V0cHV0LCBzKTsKPiA+ICsJCQl0ZXN0X2NwX2VuYWJsZV93aXRo X3JldHJ5KG91dHB1dCwgcywgMywgY29udGVudF90eXBlLAo+ID4gKwkJCQkJCSAgZmFsc2UsIGZh bHNlLCB0ZXN0X3NybSk7Cj4gPiArCj4gPiArCQkJLyogUmVtb3ZpbmcgdGhlIHNpbmsncyBSZWNl aXZlciBJRCBmcm9tIFNSTSBCbG9iICovCj4gPiArCQkJZm9yIChpID0gMDsgaSA8IDU7IGkrKykK PiA+ICsJCQkJZmFjc2ltaWxlX3NybVtpICsgOV0gPSAwOwo+ID4gKwo+ID4gKwkJCXNybV9tb2Rp ZmllZCA9Cj4gPiArCQkJCXdyaXRlX3NybV9hc19mdygoY29uc3QgX191OCAqKWZhY3NpbWlsZV9z cm0sCj4gPiArCQkJCQkJc2l6ZW9mKGZhY3NpbWlsZV9zcm0pKTsKPiA+ICsJCQlpZ3RfYXNzZXJ0 X2Yoc3JtX21vZGlmaWVkLCAiU1JNIHVwZGF0ZSBmYWlsZWQiKTsKPiA+ICsKPiA+ICsJCQl0ZXN0 X2NwX2VuYWJsZV93aXRoX3JldHJ5KG91dHB1dCwgcywgMSwgY29udGVudF90eXBlLAo+ID4gKwkJ CQkJCSAgZmFsc2UsIGZhbHNlLCBmYWxzZSk7Cj4gPiArCQl9Cj4gPiArCj4gPiAgCQlpZiAoZHBt c190ZXN0KSB7Cj4gPiAgCQkJaWd0X3BpcGVfc2V0X3Byb3BfdmFsdWUoZGlzcGxheSwgcGlwZSwK PiA+ICAJCQkJCQlJR1RfQ1JUQ19BQ1RJVkUsIDApOwo+ID4gQEAgLTQ2Myw3ICs2MzEsNyBAQCB0 ZXN0X2NvbnRlbnRfcHJvdGVjdGlvbl9vbl9vdXRwdXQoaWd0X291dHB1dF90ICpvdXRwdXQsIGVu dW0gaWd0X2NvbW1pdF9zdHlsZSBzLAo+ID4gIAkJCWlmICghcmV0KQo+ID4gIAkJCQl0ZXN0X2Nw X2VuYWJsZV93aXRoX3JldHJ5KG91dHB1dCwgcywgMiwKPiA+ICAJCQkJCQkJICBjb250ZW50X3R5 cGUsIGZhbHNlLAo+ID4gLQkJCQkJCQkgIGZhbHNlKTsKPiA+ICsJCQkJCQkJICBmYWxzZSwgZmFs c2UpOwo+ID4gIAkJfQo+ID4gIAo+ID4gIAkJdGVzdF9jcF9kaXNhYmxlKG91dHB1dCwgcyk7Cj4g PiBAQCAtNTI5LDcgKzY5Nyw3IEBAIHN0YXRpYyBib29sIHNpbmtfaGRjcDJfY2FwYWJsZShpZ3Rf b3V0cHV0X3QgKm91dHB1dCkKPiA+ICBzdGF0aWMgdm9pZAo+ID4gIHRlc3RfY29udGVudF9wcm90 ZWN0aW9uKGVudW0gaWd0X2NvbW1pdF9zdHlsZSBzLCBib29sIGRwbXNfdGVzdCwKPiA+ICAJCQlp bnQgY29udGVudF90eXBlLCBib29sIG1laV9yZWxvYWRfdGVzdCwKPiA+IC0JCQlib29sIHRlc3Rf dHlwZV9jaGFuZ2UpCj4gPiArCQkJYm9vbCB0ZXN0X3R5cGVfY2hhbmdlLCBib29sIHRlc3Rfc3Jt KQo+ID4gIHsKPiA+ICAJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLmRpc3BsYXk7Cj4g PiAgCWlndF9vdXRwdXRfdCAqb3V0cHV0Owo+ID4gQEAgLTU2MCw5ICs3MjgsOCBAQCB0ZXN0X2Nv bnRlbnRfcHJvdGVjdGlvbihlbnVtIGlndF9jb21taXRfc3R5bGUgcywgYm9vbCBkcG1zX3Rlc3Qs Cj4gPiAgCQl9Cj4gPiAgCj4gPiAgCQl0ZXN0X2NvbnRlbnRfcHJvdGVjdGlvbl9vbl9vdXRwdXQo b3V0cHV0LCBzLCBkcG1zX3Rlc3QsCj4gPiAtCQkJCQkJICBjb250ZW50X3R5cGUsCj4gPiAtCQkJ CQkJICBtZWlfcmVsb2FkX3Rlc3QsCj4gPiAtCQkJCQkJICB0ZXN0X3R5cGVfY2hhbmdlKTsKPiA+ ICsJCQkJCQkgIGNvbnRlbnRfdHlwZSwgbWVpX3JlbG9hZF90ZXN0LAo+ID4gKwkJCQkJCSAgdGVz dF90eXBlX2NoYW5nZSwgdGVzdF9zcm0pOwo+ID4gIAkJdmFsaWRfdGVzdHMrKzsKPiA+ICAJfQo+ ID4gIAo+ID4gQEAgLTU4MiwzMyArNzQ5LDMzIEBAIGlndF9tYWluCj4gPiAgCWlndF9zdWJ0ZXN0 KCJsZWdhY3kiKQo+ID4gIAkJdGVzdF9jb250ZW50X3Byb3RlY3Rpb24oQ09NTUlUX0xFR0FDWSwg ZmFsc2UsCj4gPiAgCQkJCQlIRENQX0NPTlRFTlRfVFlQRV8wLCBmYWxzZSwKPiA+IC0JCQkJCWZh bHNlKTsKPiA+ICsJCQkJCWZhbHNlLCBmYWxzZSk7Cj4gPiAgCj4gPiAgCWlndF9zdWJ0ZXN0KCJh dG9taWMiKSB7Cj4gPiAgCQlpZ3RfcmVxdWlyZShkYXRhLmRpc3BsYXkuaXNfYXRvbWljKTsKPiA+ ICAJCXRlc3RfY29udGVudF9wcm90ZWN0aW9uKENPTU1JVF9BVE9NSUMsIGZhbHNlLAo+ID4gLQkJ CQkJSERDUF9DT05URU5UX1RZUEVfMCwgZmFsc2UsCj4gPiArCQkJCQlIRENQX0NPTlRFTlRfVFlQ RV8wLCBmYWxzZSwgZmFsc2UsCj4gPiAgCQkJCQlmYWxzZSk7Cj4gPiAgCX0KPiA+ICAKPiA+ICAJ aWd0X3N1YnRlc3QoImF0b21pYy1kcG1zIikgewo+ID4gIAkJaWd0X3JlcXVpcmUoZGF0YS5kaXNw bGF5LmlzX2F0b21pYyk7Cj4gPiAgCQl0ZXN0X2NvbnRlbnRfcHJvdGVjdGlvbihDT01NSVRfQVRP TUlDLCB0cnVlLAo+ID4gLQkJCQkJSERDUF9DT05URU5UX1RZUEVfMCwgZmFsc2UsCj4gPiArCQkJ CQlIRENQX0NPTlRFTlRfVFlQRV8wLCBmYWxzZSwgZmFsc2UsCj4gPiAgCQkJCQlmYWxzZSk7Cj4g PiAgCX0KPiA+ICAKPiA+ICAJaWd0X3N1YnRlc3QoInR5cGUxIikgewo+ID4gIAkJaWd0X3JlcXVp cmUoZGF0YS5kaXNwbGF5LmlzX2F0b21pYyk7Cj4gPiAgCQl0ZXN0X2NvbnRlbnRfcHJvdGVjdGlv bihDT01NSVRfQVRPTUlDLCBmYWxzZSwKPiA+IC0JCQkJCUhEQ1BfQ09OVEVOVF9UWVBFXzEsIGZh bHNlLAo+ID4gKwkJCQkJSERDUF9DT05URU5UX1RZUEVfMSwgZmFsc2UsIGZhbHNlLAo+ID4gIAkJ CQkJZmFsc2UpOwo+ID4gIAl9Cj4gPiAgCj4gPiAgCWlndF9zdWJ0ZXN0KCJ0eXBlMV9tZWlfaW50 ZXJmYWNlIikgewo+ID4gIAkJaWd0X3JlcXVpcmUoZGF0YS5kaXNwbGF5LmlzX2F0b21pYyk7Cj4g PiAgCQl0ZXN0X2NvbnRlbnRfcHJvdGVjdGlvbihDT01NSVRfQVRPTUlDLCBmYWxzZSwKPiA+IC0J CQkJCUhEQ1BfQ09OVEVOVF9UWVBFXzEsIHRydWUsCj4gPiArCQkJCQlIRENQX0NPTlRFTlRfVFlQ RV8xLCB0cnVlLCBmYWxzZSwKPiA+ICAJCQkJCWZhbHNlKTsKPiA+ICAJfQo+ID4gIAo+ID4gQEAg LTYxNiw5ICs3ODMsMzYgQEAgaWd0X21haW4KPiA+ICAJCWlndF9yZXF1aXJlKGRhdGEuZGlzcGxh eS5pc19hdG9taWMpOwo+ID4gIAkJdGVzdF9jb250ZW50X3Byb3RlY3Rpb24oQ09NTUlUX0FUT01J QywgZmFsc2UsCj4gPiAgCQkJCQlIRENQX0NPTlRFTlRfVFlQRV8xLCBmYWxzZSwKPiA+IC0JCQkJ CXRydWUpOwo+ID4gKwkJCQkJdHJ1ZSwgZmFsc2UpOwo+ID4gIAl9Cj4gPiAgCj4gPiArCS8qCj4g PiArCSAqIFNSTSBzdWJ0ZXN0IHBlcmZvcm0gdGhlIEhEQ1AgYXV0aGVudGljYXRpb24sIGFuZCB0 aGVuIHJldHJpdmUgdGhlCj4gPiArCSAqIHJlY2VpdmVyIGlkIHRocm91Z2ggdG9wb2xvZ3kgaW5m by4KPiA+ICsJICoKPiA+ICsJICogVXNpbmcgdGhlIHJlY2VpdmVyIElELCBmYWNzaW1pbGUgU1JN IHRhYmxlIGlzIG1vZGlmaWVkIHdpdGgKPiA+ICsJICogcmVjZWl2ZXIgSUQgcmV0cmlldmVkIGZy b20gdGVoIHRvcG9sb2d5IGluZm8uIEFmdGVyIG1vZGlmaWNhdGlvbgo+ID4gKwkgKiBTUk0gdGFi bGUgaXMgbm90IGludGFjdCBhcyBwZXIgRENQIFNpZ25hdHVyZS4KPiA+ICsJICoKPiA+ICsJICog QnV0IEtlcm5lbCBiZWxpZXZlcyB1c2Vyc3BhY2UgYW5kIGRvZXNuJ3QgdmVyaWZ5IHRoZSBEQ1Ag c2lnbmF0dXJlLgo+ID4gKwkgKiBTbyB3ZSBjYW4gZXhwbG9pdGUgdGhhdCB0cnVzdCB0byB0ZXN0 IHRoZSBTUk0gYW5kIHRvcG9sb2d5IGluZm8KPiA+ICsJICogZmVhdHVyZXMuCj4gPiArCSAqCj4g PiArCSAqIFNvIHdoZW4gbW9kaWZpZWQgU1JNIGlzIGFwcGxpZWQgQXV0aGVudGljYXRpb24gd2ls bCBmYWlsIGR1ZSB0bwo+ID4gKwkgKiByZWNlaXZlciBJRCByZXZvY2F0aW9uLgo+ID4gKwkgKgo+ ID4gKwkgKiBBbmQgS2VybmVsIGF0dGVtcHRzIEhEQ1AyLjIgYWx3YXlzIGFuZCBvbiBmYWlsdXJl IG9mIGl0IEhEQ1AxLjQKPiA+ICsJICogd2lsbCBiZSBhdHRlbXB0ZWQuIEJ1dCB0aGVpciBJRCBv ZiB0aGUgc2luayB2YXJpZXMgYmV0d2VlbiAxLjQgYW5kCj4gPiArCSAqIDIuMiB2ZXJzaW9ucy4g U28gd2UgbmVlZCB0byBzdGljayB0byBvbmUgdmVyc2lvbi4gSGVuY2UgSERDUDIuMiBpcwo+ID4g KwkgKiBjaG9vc2VuIHVzaW5nIFR5cGUgMS4KPiAKPiBPb3BzLCBqdXN0IHJlYWxpemVkIHRoYXQg dGhpcyBpcyBhIGJ1ZyBpbiB0aGUga2VybmVsLiBIZXJlJ3MgdGhlIHNsaWdodGx5Cj4gbmFzdHkg YXR0YWNrOgo+IAo+IC0gY3JlYXRlIGEgZmFrZSBTUk0gd2l0aCBubyByZXZvY2F0aW9ucyBidXQg cmVhbGx5IGhpZ2ggcmV2aXNpb24gbnVtYmVyCj4gLSBrZXJuZWwgd2lsbCByZWplY3QgdXBkYXRl cyBmcm9tIGhlcmUgb24uCk5vLiBLZXJuZWwgcmVhZHMgdGhlIFNSTSBmcm9tIC9saWIvZmlybXdh cmUgZXZlcnl0aW1lIHdyaXR0ZW4gYnkKdXNlcnNwYWNlLiBBbmQgU1JNIFNpZ25hdHVyZSBpcyB2 YWxpZGF0ZWQgYnkgdXNlcnNwYWNlIGFuZCB3cml0dGVuIHRoZXJlCmZvciBrZXJuZWwgY29uc3Vt cHRpb24uCj4gCj4gT3IgZG8gd2UganVzdCBzaHJ1ZyBhbmQgc2F5IHVzZXJzcGFjZSBuZWVkcyB0 byB2YWxpZGF0ZSB0aGUgU1JNIGZ1bGx5Cj4gYmVmb3JlIGl0IGRyb3BzIGl0IGludG8gL2xpYi9m aXJtd2FyZT8KWWVzIHdlIGhlYXZlbHkgcmVseSBvbiB1c2Vyc3BhY2UgdG8gcHJvdmlkZSB0aGUg bGF0ZXN0IHNpZ25hdHVyZSB2YWxpZGF0ZWQgU1JNLgpLZXJuZWwganVzdCBjaGVja3MgdGhlIHZh bGlkbmVzcyBvZiBTUk0gdGFibGUgc3RydWN0dXJlIGFuZCBjb25zdW1lcyBpdC4KPiAKPiBQbGFu IEIgZm9yIFNSTSB0ZXN0aW5nIHdvdWxkIGJlIHRoYXQgd2Ugc2ltcGx5IGRyb3AgYW4gU1JNIGlu dG8KPiAvbGliL2Zpcm13YXJlIChhIHZhbGlkIG9uZSkgYW5kIG1ha2Ugc3VyZSB0aGUga2VybmVs IGRvZXNuJ3QgYmxvdyB1cC4gTm90Cj4gYSBncmVhdCB0ZXN0Y2FzZSwgYnV0IGJldHRlciB0aGFu IG5vdGhpbmcuCj4gCj4gSSBndWVzcyBwcm9wZXIgU1JNIHRlc3RpbmcgbmVlZHMgc29tZSBraW5k IG9mIGhkY3AgdmFsaWRhdGlvbiAoc3BlY2lhbAo+IGRvbmdsZSB0aGF0IGNhbiBvcHRpb25hbGx5 IHVzZSBhIGJsYWNrbGlzdGVkIGtzdiksIGJ1dCB3ZSBkb24ndCBoYXZlIHRoYXQKPiBzdHVmZiBp biBpZ3Qgb3Igb3VyIENJLgo+IAo+IFRoZXJlJ3MgYWxzbyB0aGUgaXNzdWUgdGhhdCBJJ20gbm90 IHN1cmUgd2UgY2FuIG1lcmdlIHRoZSB0b3BvbGdveSBpbmZvCj4gcHJvcCwgc28gZm9yIG5vdyBJ J2Qgc3BsaXQgb3V0IGEgcmVhbGx5IHNpbXBsZSBzdWJ0ZXN0IHRoYXQgY2hlY2tzIHRoZQo+IGtl cm5lbCBkb2Vzbid0IGJsb3cgdXAgd2hlbiBsb2FkaW5nIHRoZSBmYWNzaW1pbGUgc3JtLgoKWWVz IHdpdGhvdXQgdG9wb2xvZ3kgcGF0Y2ggaW4gdXBzdHJlYW0gd2UgY2FuJ3QgdXBzdHJlYW0gdGhp cyB0ZXN0LiBBcwp5b3UgbWVudGlvbmVkIHdlIGNhbiBqdXN0IHJpZ2h0IFNSTSBpbnRvIGtlcm5l bCBhbmQgdmFsaWRhdGUgdGhlIHN1Y2Nlc3MKb2Ygd3JpdGUgYXMgYSBzdWJ0ZXN0LgoKLVJhbQo+ IC1EYW5pZWwKPiAKPiA+ICsJICovCj4gPiArCWlndF9zdWJ0ZXN0KCJzcm0iKSB7Cj4gPiArCQlp Z3RfcmVxdWlyZShkYXRhLmRpc3BsYXkuaXNfYXRvbWljKTsKPiA+ICsJCXRlc3RfY29udGVudF9w cm90ZWN0aW9uKENPTU1JVF9BVE9NSUMsIGZhbHNlLAo+ID4gKwkJCQkJSERDUF9DT05URU5UX1RZ UEVfMSwgZmFsc2UsIGZhbHNlLCB0cnVlKTsKPiA+ICsJfQo+ID4gKwo+ID4gKwo+ID4gIAlpZ3Rf Zml4dHVyZQo+ID4gIAkJaWd0X2Rpc3BsYXlfZmluaSgmZGF0YS5kaXNwbGF5KTsKPiA+ICB9Cj4g PiAtLSAKPiA+IDIuMTkuMQo+ID4gCj4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwo+ID4gaWd0LWRldiBtYWlsaW5nIGxpc3QKPiA+IGlndC1kZXZAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCj4gPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2lndC1kZXYKPiAKPiAtLSAKPiBEYW5pZWwgVmV0dGVyCj4gU29mdHdhcmUg RW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5n IGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2