From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id B45DB7F93 for ; Fri, 26 Jun 2015 12:17:29 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 94853304051 for ; Fri, 26 Jun 2015 10:17:29 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id sXqpcvFhOHj65Srf (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 26 Jun 2015 10:17:28 -0700 (PDT) Received: from int-mx14.intmail.prod.int.phx2.redhat.com (int-mx14.intmail.prod.int.phx2.redhat.com [10.5.11.27]) by mx1.redhat.com (Postfix) with ESMTPS id A65E03173E2 for ; Fri, 26 Jun 2015 17:17:27 +0000 (UTC) Date: Fri, 26 Jun 2015 13:17:25 -0400 From: Brian Foster Subject: Re: [PATCH 12/17] mkfs: merge getnum Message-ID: <20150626171725.GH40750@bfoster.bfoster> References: <1434711726-13092-1-git-send-email-jtulak@redhat.com> <1434711726-13092-13-git-send-email-jtulak@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1434711726-13092-13-git-send-email-jtulak@redhat.com> List-Id: XFS Filesystem from SGI List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xfs-bounces@oss.sgi.com Sender: xfs-bounces@oss.sgi.com To: Jan =?utf-8?B?xaR1bMOhaw==?= Cc: Dave Chinner , xfs@oss.sgi.com T24gRnJpLCBKdW4gMTksIDIwMTUgYXQgMDE6MDI6MDFQTSArMDIwMCwgSmFuIMWkdWzDoWsgd3Jv dGU6Cj4gRnJvbTogRGF2ZSBDaGlubmVyIDxkY2hpbm5lckByZWRoYXQuY29tPgo+IAo+IGdldG51 bSgpIGlzIG5vdyBvbmx5IGNhbGxlZCBieSBnZXRudW1fY2hlY2tlZCgpLiBNb3ZlIHRoZSB0d28K PiB0b2dldGhlciBpbnRvIGEgc2luZ2xlIGdldG51bSgpIGZ1bmN0aW9uIGFuZCBjaGFuZ2UgYWxs IHRoZSBjYWxsZXJzCj4gYmFjayB0byBnZXRudW0oKS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBEYXZl IENoaW5uZXIgPGRjaGlubmVyQHJlZGhhdC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogSmFuIMWkdWzD oWsgPGp0dWxha0ByZWRoYXQuY29tPgo+IC0tLQo+ICBpbmNsdWRlL3hmc19ta2ZzLmggfCAgIDQg Ky0KPiAgbWtmcy9wcm90by5jICAgICAgIHwgIDIwICsrKysrKwo+ICBta2ZzL3hmc19ta2ZzLmMg ICAgfCAyMDIgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KPiAgMyBmaWxlcyBjaGFuZ2VkLCAxMTMgaW5zZXJ0aW9ucygrKSwgMTEzIGRlbGV0aW9u cygtKQo+IAo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3hmc19ta2ZzLmggYi9pbmNsdWRlL3hmc19t a2ZzLmgKPiBpbmRleCBmNTYzOWIwLi5hNDMxMmUxIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUveGZz X21rZnMuaAo+ICsrKyBiL2luY2x1ZGUveGZzX21rZnMuaAo+IEBAIC01Nyw4ICs1Nyw4IEBACj4g ICNkZWZpbmUgWEZTX05PTVVMVElESVNLX0FHTE9HCQkyCS8qIDQgQUdzICovCj4gICNkZWZpbmUg WEZTX01VTFRJRElTS19BR0NPVU5UCQkoMSA8PCBYRlNfTVVMVElESVNLX0FHTE9HKQo+ICAKPiAt ZXh0ZXJuIGxvbmcgbG9uZyBnZXRudW0oY29uc3QgY2hhciAqc3RyLCB1bnNpZ25lZCBpbnQgYmxv Y2tzaXplLAo+IC0JCQl1bnNpZ25lZCBpbnQgc2VjdG9yc2l6ZSwgYm9vbCBjb252ZXJ0KTsKPiAr ZXh0ZXJuIGxvbmcgbG9uZyBjdnRudW0odW5zaWduZWQgaW50IGJsa3NpemUsIHVuc2lnbmVkIGlu dCBzZWN0c2l6ZSwKPiArCQkJY29uc3QgY2hhciAqc3RyKTsKPiAgCj4gIC8qIHByb3RvLmMgKi8K PiAgZXh0ZXJuIGNoYXIgKnNldHVwX3Byb3RvIChjaGFyICpmbmFtZSk7Cj4gZGlmZiAtLWdpdCBh L21rZnMvcHJvdG8uYyBiL21rZnMvcHJvdG8uYwo+IGluZGV4IGEyYTYxZTAuLjFlNzYzYTAgMTAw NjQ0Cj4gLS0tIGEvbWtmcy9wcm90by5jCj4gKysrIGIvbWtmcy9wcm90by5jCj4gQEAgLTQzLDYg KzQzLDI2IEBAIHN0YXRpYyBsb25nIGZpbGVzaXplKGludCBmZCk7Cj4gIAkoKHVpbnQpKE1LRlNf QkxPQ0tSRVNfSU5PREUgKyBYRlNfREFfTk9ERV9NQVhERVBUSCArIFwKPiAgCShYRlNfQk1fTUFY TEVWRUxTKG1wLCBYRlNfREFUQV9GT1JLKSAtIDEpICsgKHJiKSkpCj4gIAo+ICtzdGF0aWMgbG9u ZyBsb25nCj4gK2dldG51bSgKPiArCWNvbnN0IGNoYXIJKnN0ciwKPiArCXVuc2lnbmVkIGludAli bGtzaXplLAo+ICsJdW5zaWduZWQgaW50CXNlY3RzaXplLAo+ICsJYm9vbAkJY29udmVydCkKPiAr ewo+ICsJbG9uZyBsb25nCWk7Cj4gKwljaGFyCQkqc3A7Cj4gKwo+ICsJaWYgKGNvbnZlcnQpCj4g KwkJcmV0dXJuIGN2dG51bShibGtzaXplLCBzZWN0c2l6ZSwgc3RyKTsKPiArCj4gKwlpID0gc3Ry dG9sbChzdHIsICZzcCwgMCk7Cj4gKwlpZiAoaSA9PSAwICYmIHNwID09IHN0cikKPiArCQlyZXR1 cm4gLTFMTDsKPiArCWlmICgqc3AgIT0gJ1wwJykKPiArCQlyZXR1cm4gLTFMTDsgLyogdHJhaWxp bmcgZ2FyYmFnZSAqLwo+ICsJcmV0dXJuIGk7Cj4gK30KPiAgCj4gIGNoYXIgKgo+ICBzZXR1cF9w cm90bygKPiBkaWZmIC0tZ2l0IGEvbWtmcy94ZnNfbWtmcy5jIGIvbWtmcy94ZnNfbWtmcy5jCj4g aW5kZXggNGZjMWYzNC4uZTUyZmQ0ZSAxMDA2NDQKPiAtLS0gYS9ta2ZzL3hmc19ta2ZzLmMKPiAr KysgYi9ta2ZzL3hmc19ta2ZzLmMKPiBAQCAtNDksOSArNDksNiBAQCBzdGF0aWMgdm9pZCByZXNw ZWMoY2hhciBvcHQsIGNoYXIgKnRhYltdLCBpbnQgaWR4KTsKPiAgc3RhdGljIHZvaWQgdW5rbm93 bihjaGFyIG9wdCwgY2hhciAqcyk7Cj4gIHN0YXRpYyBpbnQgIGlzcG93Mih1bnNpZ25lZCBpbnQg aSk7Cj4gIAo+IC1zdGF0aWMgbG9uZyBsb25nIGN2dG51bSh1bnNpZ25lZCBpbnQgYmxvY2tzaXpl LAo+IC0JCQl1bnNpZ25lZCBpbnQgc2VjdG9yc2l6ZSwgY29uc3QgY2hhciAqcyk7Cj4gLQo+ICAv Kgo+ICAgKiBUaGUgY29uZmlndXJlZCBibG9jayBhbmQgc2VjdG9yIHNpemVzIGFyZSBkZWZpbmVk IGFzIGdsb2JhbCB2YXJpYWJsZXMgc28KPiAgICogdGhhdCB0aGV5IGRvbid0IG5lZWQgdG8gYmUg cGFzc2VkIHRvIGZ1bmN0aW9ucyB0aGF0IHJlcXVpcmUgdGhlbS4KPiBAQCAtMTMzMCwyNyArMTMy Nyw2IEBAIHNiX3NldF9mZWF0dXJlcygKPiAgCj4gIH0KPiAgCj4gLWxvbmcgbG9uZwo+IC1nZXRu dW0oCj4gLQljb25zdCBjaGFyCSpzdHIsCj4gLQl1bnNpZ25lZCBpbnQJYmxrc2l6ZSwKPiAtCXVu c2lnbmVkIGludAlzZWN0c2l6ZSwKPiAtCWJvb2wJCWNvbnZlcnQpCj4gLXsKPiAtCWxvbmcgbG9u ZwlpOwo+IC0JY2hhcgkJKnNwOwo+IC0KPiAtCWlmIChjb252ZXJ0KQo+IC0JCXJldHVybiBjdnRu dW0oYmxrc2l6ZSwgc2VjdHNpemUsIHN0cik7Cj4gLQo+IC0JaSA9IHN0cnRvbGwoc3RyLCAmc3As IDApOwo+IC0JaWYgKGkgPT0gMCAmJiBzcCA9PSBzdHIpCj4gLQkJcmV0dXJuIC0xTEw7Cj4gLQlp ZiAoKnNwICE9ICdcMCcpCj4gLQkJcmV0dXJuIC0xTEw7IC8qIHRyYWlsaW5nIGdhcmJhZ2UgKi8K PiAtCXJldHVybiBpOwo+IC19Cj4gLQo+ICBzdGF0aWMgX19hdHRyaWJ1dGVfXygobm9yZXR1cm4p KSB2b2lkCj4gIGlsbGVnYWxfb3B0aW9uKAo+ICAJY29uc3QgY2hhcgkqdmFsdWUsCj4gQEAgLTEz NjMsOCArMTMzOSw4IEBAIGlsbGVnYWxfb3B0aW9uKAo+ICAJdXNhZ2UoKTsKPiAgfQo+ICAKPiAt c3RhdGljIGludAo+IC1nZXRudW1fY2hlY2tlZCgKPiArc3RhdGljIGxvbmcgbG9uZwo+ICtnZXRu dW0oCj4gIAljb25zdCBjaGFyCQkqc3RyLAo+ICAJc3RydWN0IG9wdF9wYXJhbXMJKm9wdHMsCj4g IAlpbnQJCQlpbmRleCkKPiBAQCAtMTM4NCwxMyArMTM2MCwzMiBAQCBnZXRudW1fY2hlY2tlZCgK PiAgCQlyZXNwZWMob3B0cy0+bmFtZSwgKGNoYXIgKiopb3B0cy0+c3Vib3B0cywgaW5kZXgpOwo+ ICAJc3AtPnNlZW4gPSB0cnVlOwo+ICAKPiArCS8qIGVtcHR5IHN0cmluZ3MgbWlnaHQganVzdCBy ZXR1cm4gYSBkZWZhdWx0IHZhbHVlICovCj4gIAlpZiAoIXN0ciB8fCAqc3RyID09ICdcMCcpIHsK PiAgCQlpZiAoc3AtPmRlZmF1bHR2YWwgPT0gU1VCT1BUX05FRURTX1ZBTCkKPiAgCQkJcmVxdmFs KG9wdHMtPm5hbWUsIChjaGFyICoqKW9wdHMtPnN1Ym9wdHMsIGluZGV4KTsKPiAgCQlyZXR1cm4g c3AtPmRlZmF1bHR2YWw7Cj4gIAl9Cj4gIAo+IC0JYyA9IGdldG51bShzdHIsIGJsb2Nrc2l6ZSwg c2VjdG9yc2l6ZSwgc3AtPmNvbnZlcnQpOwo+ICsJLyoKPiArCSAqIFNvbWUgdmFsdWVzIGFyZSBw dXJlIG51bWJlcnMsIG90aGVycyBjYW4gaGF2ZSBzdWZmaXhlcyB0aGF0IGRlZmluZQo+ICsJICog dGhlIHVuaXRzIG9mIHRoZSBudW1iZXIuIFRob3NlIGdldCBwYXNzZWQgdG8gY3Z0bnVtKCksIG90 aGVyd2lzZSB3ZQo+ICsJICogY29udmVydCBpdCBvdXJzZWx2ZXMgdG8gZ3VhcmFudGVlIHRoZXJl IGlzIG5vIHRyYWlsaW5nIGdhcmJhZ2UgaW4gdGhlCj4gKwkgKiBudW1iZXIuCj4gKwkgKi8KPiAr CWlmIChzcC0+Y29udmVydCkKPiArCQljID0gY3Z0bnVtKGJsb2Nrc2l6ZSwgc2VjdG9yc2l6ZSwg c3RyKTsKPiArCWVsc2Ugewo+ICsJCWNoYXIJCSpzcDsKPiArCj4gKwkJYyA9IHN0cnRvbGwoc3Ry LCAmc3AsIDApOwo+ICsJCWlmIChjID09IDAgJiYgc3AgPT0gc3RyKQo+ICsJCQlpbGxlZ2FsX29w dGlvbihzdHIsIG9wdHMsIGluZGV4KTsKPiArCQlpZiAoKnNwICE9ICdcMCcpCj4gKwkJCWlsbGVn YWxfb3B0aW9uKHN0ciwgb3B0cywgaW5kZXgpOwo+ICsJfQo+ICsKCkhybSwgd2h5IG5vdCBjb250 aW51ZSB0byByZXVzZSB0aGlzIGNvZGU/IEUuZy4sIGdpdmUgdGhlIGdldG51bSgpIGZyb20KcHJv dG8uYyBhIGJldHRlciBuYW1lIGFuZCBjYWxsIHRoYXQuIE90aGVyd2lzZSwgdGhpcyBzZWVtcyBm aW5lLgoKQnJpYW4KCj4gKwkvKiBWYWxpZGl0eSBjaGVjayB0aGUgcmVzdWx0LiAqLwo+ICAJaWYg KGMgPCBzcC0+bWludmFsIHx8IGMgPiBzcC0+bWF4dmFsKQo+ICAJCWlsbGVnYWxfb3B0aW9uKHN0 ciwgb3B0cywgaW5kZXgpOwo+ICAJaWYgKHNwLT5pc19wb3dlcl8yICYmICFpc3BvdzIoYykpCj4g QEAgLTE1NTYsOCArMTU1MSw3IEBAIG1haW4oCj4gIAkJCQkJaWYgKGJzZmxhZykKPiAgCQkJCQkJ Y29uZmxpY3QoJ2InLCBzdWJvcHRzLCBCX1NJWkUsCj4gIAkJCQkJCQkgQl9MT0cpOwo+IC0JCQkJ CWJsb2NrbG9nID0gZ2V0bnVtX2NoZWNrZWQodmFsdWUsICZib3B0cywKPiAtCQkJCQkJCQkgIEJf TE9HKTsKPiArCQkJCQlibG9ja2xvZyA9IGdldG51bSh2YWx1ZSwgJmJvcHRzLCBCX0xPRyk7Cj4g IAkJCQkJYmxvY2tzaXplID0gMSA8PCBibG9ja2xvZzsKPiAgCQkJCQlibGZsYWcgPSAxOwo+ICAJ CQkJCWJyZWFrOwo+IEBAIC0xNTY1LDggKzE1NTksOCBAQCBtYWluKAo+ICAJCQkJCWlmIChibGZs YWcpCj4gIAkJCQkJCWNvbmZsaWN0KCdiJywgc3Vib3B0cywgQl9MT0csCj4gIAkJCQkJCQkgQl9T SVpFKTsKPiAtCQkJCQlibG9ja3NpemUgPSBnZXRudW1fY2hlY2tlZCh2YWx1ZSwgJmJvcHRzLAo+ IC0JCQkJCQkJCSAgQl9TSVpFKTsKPiArCQkJCQlibG9ja3NpemUgPSBnZXRudW0odmFsdWUsICZi b3B0cywKPiArCQkJCQkJCSAgIEJfU0laRSk7Cj4gIAkJCQkJYmxvY2tsb2cgPSBsaWJ4ZnNfaGln aGJpdDMyKGJsb2Nrc2l6ZSk7Cj4gIAkJCQkJYnNmbGFnID0gMTsKPiAgCQkJCQlicmVhazsKPiBA QCAtMTU4NCwxOCArMTU3OCwxNyBAQCBtYWluKAo+ICAJCQkJc3dpdGNoIChnZXRzdWJvcHQoJnAs IChjb25zdHBwKXN1Ym9wdHMsCj4gIAkJCQkJCSAgJnZhbHVlKSkgewo+ICAJCQkJY2FzZSBEX0FH Q09VTlQ6Cj4gLQkJCQkJYWdjb3VudCA9IGdldG51bV9jaGVja2VkKHZhbHVlLCAmZG9wdHMsCj4g LQkJCQkJCQkJIERfQUdDT1VOVCk7Cj4gKwkJCQkJYWdjb3VudCA9IGdldG51bSh2YWx1ZSwgJmRv cHRzLAo+ICsJCQkJCQkJIERfQUdDT1VOVCk7Cj4gIAkJCQkJZGFmbGFnID0gMTsKPiAgCQkJCQli cmVhazsKPiAgCQkJCWNhc2UgRF9BR1NJWkU6Cj4gLQkJCQkJYWdzaXplID0gZ2V0bnVtX2NoZWNr ZWQodmFsdWUsICZkb3B0cywKPiAtCQkJCQkJCQkgRF9BR1NJWkUpOwo+ICsJCQkJCWFnc2l6ZSA9 IGdldG51bSh2YWx1ZSwgJmRvcHRzLCBEX0FHU0laRSk7Cj4gIAkJCQkJZGFzaXplID0gMTsKPiAg CQkJCQlicmVhazsKPiAgCQkJCWNhc2UgRF9GSUxFOgo+IC0JCQkJCXhpLmRpc2ZpbGUgPSBnZXRu dW1fY2hlY2tlZCh2YWx1ZSwKPiAtCQkJCQkJCQkmZG9wdHMsIERfRklMRSk7Cj4gKwkJCQkJeGku ZGlzZmlsZSA9IGdldG51bSh2YWx1ZSwgJmRvcHRzLAo+ICsJCQkJCQkJICAgIERfRklMRSk7Cj4g IAkJCQkJaWYgKHhpLmRpc2ZpbGUgJiYgIU5mbGFnKQo+ICAJCQkJCQl4aS5kY3JlYXQgPSAxOwo+ ICAJCQkJCWJyZWFrOwo+IEBAIC0xNjE3LDI5ICsxNjEwLDI2IEBAIG1haW4oCj4gIAkJCQkJaWYg KG5vZHNmbGFnKQo+ICAJCQkJCQljb25mbGljdCgnZCcsIHN1Ym9wdHMsIERfTk9BTElHTiwKPiAg CQkJCQkJCSBEX1NVTklUKTsKPiAtCQkJCQlkc3VuaXQgPSBnZXRudW1fY2hlY2tlZCh2YWx1ZSwg JmRvcHRzLAo+IC0JCQkJCQkJCSBEX1NVTklUKTsKPiArCQkJCQlkc3VuaXQgPSBnZXRudW0odmFs dWUsICZkb3B0cywgRF9TVU5JVCk7Cj4gIAkJCQkJYnJlYWs7Cj4gIAkJCQljYXNlIERfU1dJRFRI Ogo+ICAJCQkJCWlmIChub2RzZmxhZykKPiAgCQkJCQkJY29uZmxpY3QoJ2QnLCBzdWJvcHRzLCBE X05PQUxJR04sCj4gIAkJCQkJCQkgRF9TV0lEVEgpOwo+IC0JCQkJCWRzd2lkdGggPSBnZXRudW1f Y2hlY2tlZCh2YWx1ZSwgJmRvcHRzLAo+IC0JCQkJCQkJCSBEX1NXSURUSCk7Cj4gKwkJCQkJZHN3 aWR0aCA9IGdldG51bSh2YWx1ZSwgJmRvcHRzLAo+ICsJCQkJCQkJIERfU1dJRFRIKTsKPiAgCQkJ CQlicmVhazsKPiAgCQkJCWNhc2UgRF9TVToKPiAgCQkJCQlpZiAobm9kc2ZsYWcpCj4gIAkJCQkJ CWNvbmZsaWN0KCdkJywgc3Vib3B0cywgRF9OT0FMSUdOLAo+ICAJCQkJCQkJIERfU1UpOwo+IC0J CQkJCWRzdSA9IGdldG51bV9jaGVja2VkKHZhbHVlLCAmZG9wdHMsCj4gLQkJCQkJCQkJIERfU1Up Owo+ICsJCQkJCWRzdSA9IGdldG51bSh2YWx1ZSwgJmRvcHRzLCBEX1NVKTsKPiAgCQkJCQlicmVh azsKPiAgCQkJCWNhc2UgRF9TVzoKPiAgCQkJCQlpZiAobm9kc2ZsYWcpCj4gIAkJCQkJCWNvbmZs aWN0KCdkJywgc3Vib3B0cywgRF9OT0FMSUdOLAo+ICAJCQkJCQkJIERfU1cpOwo+IC0JCQkJCWRz dyA9IGdldG51bV9jaGVja2VkKHZhbHVlLCAmZG9wdHMsCj4gLQkJCQkJCQkJIERfU1cpOwo+ICsJ CQkJCWRzdyA9IGdldG51bSh2YWx1ZSwgJmRvcHRzLCBEX1NXKTsKPiAgCQkJCQlicmVhazsKPiAg CQkJCWNhc2UgRF9OT0FMSUdOOgo+ICAJCQkJCWlmIChkc3UpCj4gQEAgLTE2NjAsOCArMTY1MCw4 IEBAIG1haW4oCj4gIAkJCQkJaWYgKHNzZmxhZykKPiAgCQkJCQkJY29uZmxpY3QoJ2QnLCBzdWJv cHRzLCBEX1NFQ1RTSVpFLAo+ICAJCQkJCQkJIERfU0VDVExPRyk7Cj4gLQkJCQkJc2VjdG9ybG9n ID0gZ2V0bnVtX2NoZWNrZWQodmFsdWUsICZkb3B0cywKPiAtCQkJCQkJCQkgICBEX1NFQ1RMT0cp Owo+ICsJCQkJCXNlY3RvcmxvZyA9IGdldG51bSh2YWx1ZSwgJmRvcHRzLAo+ICsJCQkJCQkJICAg RF9TRUNUTE9HKTsKPiAgCQkJCQlzZWN0b3JzaXplID0gMSA8PCBzZWN0b3Jsb2c7Cj4gIAkJCQkJ c2xmbGFnID0gMTsKPiAgCQkJCQlicmVhazsKPiBAQCAtMTY2OSwyOCArMTY1OSwyNyBAQCBtYWlu KAo+ICAJCQkJCWlmIChzbGZsYWcpCj4gIAkJCQkJCWNvbmZsaWN0KCdkJywgc3Vib3B0cywgRF9T RUNUTE9HLAo+ICAJCQkJCQkJIERfU0VDVFNJWkUpOwo+IC0JCQkJCXNlY3RvcnNpemUgPSBnZXRu dW1fY2hlY2tlZCh2YWx1ZSwKPiAtCQkJCQkJCSZkb3B0cywgRF9TRUNUU0laRSk7Cj4gKwkJCQkJ c2VjdG9yc2l6ZSA9IGdldG51bSh2YWx1ZSwgJmRvcHRzLAo+ICsJCQkJCQkJICAgIERfU0VDVFNJ WkUpOwo+ICAJCQkJCXNlY3RvcmxvZyA9Cj4gIAkJCQkJCWxpYnhmc19oaWdoYml0MzIoc2VjdG9y c2l6ZSk7Cj4gIAkJCQkJc3NmbGFnID0gMTsKPiAgCQkJCQlicmVhazsKPiAgCQkJCWNhc2UgRF9S VElOSEVSSVQ6Cj4gLQkJCQkJYyA9IGdldG51bV9jaGVja2VkKHZhbHVlLCAmZG9wdHMsCj4gLQkJ CQkJCQkgICBEX1JUSU5IRVJJVCk7Cj4gKwkJCQkJYyA9IGdldG51bSh2YWx1ZSwgJmRvcHRzLCBE X1JUSU5IRVJJVCk7Cj4gIAkJCQkJaWYgKGMpCj4gIAkJCQkJCWZzeC5mc3hfeGZsYWdzIHw9Cj4g IAkJCQkJCQlYRlNfRElGTEFHX1JUSU5IRVJJVDsKPiAgCQkJCQlicmVhazsKPiAgCQkJCWNhc2Ug RF9QUk9KSU5IRVJJVDoKPiAtCQkJCQlmc3guZnN4X3Byb2ppZCA9IGdldG51bV9jaGVja2VkKHZh bHVlLAo+IC0JCQkJCQkJJmRvcHRzLCBEX1BST0pJTkhFUklUKTsKPiArCQkJCQlmc3guZnN4X3By b2ppZCA9IGdldG51bSh2YWx1ZSwgJmRvcHRzLAo+ICsJCQkJCQkJCURfUFJPSklOSEVSSVQpOwo+ ICAJCQkJCWZzeC5mc3hfeGZsYWdzIHw9Cj4gIAkJCQkJCVhGU19ESUZMQUdfUFJPSklOSEVSSVQ7 Cj4gIAkJCQkJYnJlYWs7Cj4gIAkJCQljYXNlIERfRVhUU1pJTkhFUklUOgo+IC0JCQkJCWZzeC5m c3hfZXh0c2l6ZSA9IGdldG51bV9jaGVja2VkKHZhbHVlLAo+IC0JCQkJCQkJJmRvcHRzLCBEX0VY VFNaSU5IRVJJVCk7Cj4gKwkJCQkJZnN4LmZzeF9leHRzaXplID0gZ2V0bnVtKHZhbHVlLCAmZG9w dHMsCj4gKwkJCQkJCQkJIERfRVhUU1pJTkhFUklUKTsKPiAgCQkJCQlmc3guZnN4X3hmbGFncyB8 PQo+ICAJCQkJCQlYRlNfRElGTEFHX0VYVFNaSU5IRVJJVDsKPiAgCQkJCQlicmVhazsKPiBAQCAt MTcwOCw4ICsxNjk3LDggQEAgbWFpbigKPiAgCQkJCXN3aXRjaCAoZ2V0c3Vib3B0KCZwLCAoY29u c3RwcClzdWJvcHRzLAo+ICAJCQkJCQkgICZ2YWx1ZSkpIHsKPiAgCQkJCWNhc2UgSV9BTElHTjoK PiAtCQkJCQlzYl9mZWF0Lmlub2RlX2FsaWduID0gZ2V0bnVtX2NoZWNrZWQoCj4gLQkJCQkJCQl2 YWx1ZSwgJmlvcHRzLCBJX0FMSUdOKTsKPiArCQkJCQlzYl9mZWF0Lmlub2RlX2FsaWduID0gZ2V0 bnVtKHZhbHVlLAo+ICsJCQkJCQkJCSZpb3B0cywgSV9BTElHTik7Cj4gIAkJCQkJYnJlYWs7Cj4g IAkJCQljYXNlIElfTE9HOgo+ICAJCQkJCWlmIChpcGZsYWcpCj4gQEAgLTE3MTgsMTQgKzE3MDcs MTMgQEAgbWFpbigKPiAgCQkJCQlpZiAoaXNmbGFnKQo+ICAJCQkJCQljb25mbGljdCgnaScsIHN1 Ym9wdHMsIElfU0laRSwKPiAgCQkJCQkJCSBJX0xPRyk7Cj4gLQkJCQkJaW5vZGVsb2cgPSBnZXRu dW1fY2hlY2tlZCh2YWx1ZSwgJmlvcHRzLAo+IC0JCQkJCQkJCSAgSV9MT0cpOwo+ICsJCQkJCWlu b2RlbG9nID0gZ2V0bnVtKHZhbHVlLCAmaW9wdHMsIElfTE9HKTsKPiAgCQkJCQlpc2l6ZSA9IDEg PDwgaW5vZGVsb2c7Cj4gIAkJCQkJaWxmbGFnID0gMTsKPiAgCQkJCQlicmVhazsKPiAgCQkJCWNh c2UgSV9NQVhQQ1Q6Cj4gLQkJCQkJaW1heHBjdCA9IGdldG51bV9jaGVja2VkKHZhbHVlLCAmaW9w dHMsCj4gLQkJCQkJCQkJIElfTUFYUENUKTsKPiArCQkJCQlpbWF4cGN0ID0gZ2V0bnVtKHZhbHVl LCAmaW9wdHMsCj4gKwkJCQkJCQkgSV9NQVhQQ1QpOwo+ICAJCQkJCWltZmxhZyA9IDE7Cj4gIAkJ CQkJYnJlYWs7Cj4gIAkJCQljYXNlIElfUEVSQkxPQ0s6Cj4gQEAgLTE3MzUsOCArMTcyMyw4IEBA IG1haW4oCj4gIAkJCQkJaWYgKGlzZmxhZykKPiAgCQkJCQkJY29uZmxpY3QoJ2knLCBzdWJvcHRz LCBJX1NJWkUsCj4gIAkJCQkJCQkgSV9QRVJCTE9DSyk7Cj4gLQkJCQkJaW5vcGJsb2NrID0gZ2V0 bnVtX2NoZWNrZWQodmFsdWUsICZpb3B0cywKPiAtCQkJCQkJCQkgICBJX1BFUkJMT0NLKTsKPiAr CQkJCQlpbm9wYmxvY2sgPSBnZXRudW0odmFsdWUsICZpb3B0cywKPiArCQkJCQkJCSAgIElfUEVS QkxPQ0spOwo+ICAJCQkJCWlwZmxhZyA9IDE7Cj4gIAkJCQkJYnJlYWs7Cj4gIAkJCQljYXNlIElf U0laRToKPiBAQCAtMTc0NiwyMCArMTczNCwxOCBAQCBtYWluKAo+ICAJCQkJCWlmIChpcGZsYWcp Cj4gIAkJCQkJCWNvbmZsaWN0KCdpJywgc3Vib3B0cywgSV9QRVJCTE9DSywKPiAgCQkJCQkJCSBJ X1NJWkUpOwo+IC0JCQkJCWlzaXplID0gZ2V0bnVtX2NoZWNrZWQodmFsdWUsICZpb3B0cywKPiAt CQkJCQkJCSAgICAgICBJX1NJWkUpOwo+ICsJCQkJCWlzaXplID0gZ2V0bnVtKHZhbHVlLCAmaW9w dHMsIElfU0laRSk7Cj4gIAkJCQkJaW5vZGVsb2cgPSBsaWJ4ZnNfaGlnaGJpdDMyKGlzaXplKTsK PiAgCQkJCQlpc2ZsYWcgPSAxOwo+ICAJCQkJCWJyZWFrOwo+ICAJCQkJY2FzZSBJX0FUVFI6Cj4g IAkJCQkJc2JfZmVhdC5hdHRyX3ZlcnNpb24gPQo+IC0JCQkJCQlnZXRudW1fY2hlY2tlZCh2YWx1 ZSwgJmlvcHRzLAo+IC0JCQkJCQkJICAgICAgIElfQVRUUik7Cj4gKwkJCQkJCWdldG51bSh2YWx1 ZSwgJmlvcHRzLCBJX0FUVFIpOwo+ICAJCQkJCWJyZWFrOwo+ICAJCQkJY2FzZSBJX1BST0pJRDMy QklUOgo+ICAJCQkJCXNiX2ZlYXQucHJvamlkMTZiaXQgPQo+IC0JCQkJCQkhZ2V0bnVtX2NoZWNr ZWQodmFsdWUsICZpb3B0cywKPiAtCQkJCQkJCQlJX1BST0pJRDMyQklUKTsKPiArCQkJCQkJIWdl dG51bSh2YWx1ZSwgJmlvcHRzLAo+ICsJCQkJCQkJSV9QUk9KSUQzMkJJVCk7Cj4gIAkJCQkJYnJl YWs7Cj4gIAkJCQljYXNlIElfU1BJTk9ERVM6Cj4gIAkJCQkJaWYgKCF2YWx1ZSB8fCAqdmFsdWUg PT0gJ1wwJykKPiBAQCAtMTc4NCwxNiArMTc3MCwxNSBAQCBtYWluKAo+ICAJCQkJY2FzZSBMX0FH TlVNOgo+ICAJCQkJCWlmIChsZGZsYWcpCj4gIAkJCQkJCWNvbmZsaWN0KCdsJywgc3Vib3B0cywg TF9BR05VTSwgTF9ERVYpOwo+IC0JCQkJCWxvZ2Fnbm8gPSBnZXRudW1fY2hlY2tlZCh2YWx1ZSwg JmxvcHRzLAo+IC0JCQkJCQkJCSBMX0FHTlVNKTsKPiArCQkJCQlsb2dhZ25vID0gZ2V0bnVtKHZh bHVlLCAmbG9wdHMsIExfQUdOVU0pOwo+ICAJCQkJCWxhZmxhZyA9IDE7Cj4gIAkJCQkJYnJlYWs7 Cj4gIAkJCQljYXNlIExfRklMRToKPiAgCQkJCQlpZiAobG9naW50ZXJuYWwpCj4gIAkJCQkJCWNv bmZsaWN0KCdsJywgc3Vib3B0cywgTF9JTlRFUk5BTCwKPiAgCQkJCQkJCSBMX0ZJTEUpOwo+IC0J CQkJCXhpLmxpc2ZpbGUgPSBnZXRudW1fY2hlY2tlZCh2YWx1ZSwKPiAtCQkJCQkJCQkmbG9wdHMs IExfRklMRSk7Cj4gKwkJCQkJeGkubGlzZmlsZSA9IGdldG51bSh2YWx1ZSwgJmxvcHRzLAo+ICsJ CQkJCQkJICAgIExfRklMRSk7Cj4gIAkJCQkJaWYgKHhpLmxpc2ZpbGUpCj4gIAkJCQkJCXhpLmxj cmVhdCA9IDE7Cj4gIAkJCQkJYnJlYWs7Cj4gQEAgLTE4MDQsMTggKzE3ODksMTYgQEAgbWFpbigK PiAgCQkJCQkJY29uZmxpY3QoJ2wnLCBzdWJvcHRzLCBMX0ZJTEUsCj4gIAkJCQkJCQkgTF9JTlRF Uk5BTCk7Cj4gIAo+IC0JCQkJCWxvZ2ludGVybmFsID0gZ2V0bnVtX2NoZWNrZWQodmFsdWUsCj4g LQkJCQkJCQkmbG9wdHMsIExfSU5URVJOQUwpOwo+ICsJCQkJCWxvZ2ludGVybmFsID0gZ2V0bnVt KHZhbHVlLCAmbG9wdHMsCj4gKwkJCQkJCQkgICAgIExfSU5URVJOQUwpOwo+ICAJCQkJCWxpZmxh ZyA9IDE7Cj4gIAkJCQkJYnJlYWs7Cj4gIAkJCQljYXNlIExfU1U6Cj4gLQkJCQkJbHN1ID0gZ2V0 bnVtX2NoZWNrZWQodmFsdWUsICZsb3B0cywKPiAtCQkJCQkJCQkgTF9TVSk7Cj4gKwkJCQkJbHN1 ID0gZ2V0bnVtKHZhbHVlLCAmbG9wdHMsIExfU1UpOwo+ICAJCQkJCWxzdWZsYWcgPSAxOwo+ICAJ CQkJCWJyZWFrOwo+ICAJCQkJY2FzZSBMX1NVTklUOgo+IC0JCQkJCWxzdW5pdCA9IGdldG51bV9j aGVja2VkKHZhbHVlLCAmbG9wdHMsCj4gLQkJCQkJCQkJIExfU1VOSVQpOwo+ICsJCQkJCWxzdW5p dCA9IGdldG51bSh2YWx1ZSwgJmxvcHRzLCBMX1NVTklUKTsKPiAgCQkJCQlsc3VuaXRmbGFnID0g MTsKPiAgCQkJCQlicmVhazsKPiAgCQkJCWNhc2UgTF9OQU1FOgo+IEBAIC0xODM1LDggKzE4MTgs NyBAQCBtYWluKAo+ICAJCQkJCWJyZWFrOwo+ICAJCQkJY2FzZSBMX1ZFUlNJT046Cj4gIAkJCQkJ c2JfZmVhdC5sb2dfdmVyc2lvbiA9Cj4gLQkJCQkJCWdldG51bV9jaGVja2VkKHZhbHVlLCAmbG9w dHMsCj4gLQkJCQkJCQkgICAgICAgTF9WRVJTSU9OKTsKPiArCQkJCQkJZ2V0bnVtKHZhbHVlLCAm bG9wdHMsIExfVkVSU0lPTik7Cj4gIAkJCQkJbHZmbGFnID0gMTsKPiAgCQkJCQlicmVhazsKPiAg CQkJCWNhc2UgTF9TSVpFOgo+IEBAIC0xODUxLDggKzE4MzMsOCBAQCBtYWluKAo+ICAJCQkJCWlm IChsc3NmbGFnKQo+ICAJCQkJCQljb25mbGljdCgnbCcsIHN1Ym9wdHMsIExfU0VDVFNJWkUsCj4g IAkJCQkJCQkgTF9TRUNUTE9HKTsKPiAtCQkJCQlsc2VjdG9ybG9nID0gZ2V0bnVtX2NoZWNrZWQo dmFsdWUsCj4gLQkJCQkJCQkmbG9wdHMsIExfU0VDVExPRyk7Cj4gKwkJCQkJbHNlY3RvcmxvZyA9 IGdldG51bSh2YWx1ZSwgJmxvcHRzLAo+ICsJCQkJCQkJICAgIExfU0VDVExPRyk7Cj4gIAkJCQkJ bHNlY3RvcnNpemUgPSAxIDw8IGxzZWN0b3Jsb2c7Cj4gIAkJCQkJbHNsZmxhZyA9IDE7Cj4gIAkJ CQkJYnJlYWs7Cj4gQEAgLTE4NjAsMTUgKzE4NDIsMTUgQEAgbWFpbigKPiAgCQkJCQlpZiAobHNs ZmxhZykKPiAgCQkJCQkJY29uZmxpY3QoJ2wnLCBzdWJvcHRzLCBMX1NFQ1RMT0csCj4gIAkJCQkJ CQkgTF9TRUNUU0laRSk7Cj4gLQkJCQkJbHNlY3RvcnNpemUgPSBnZXRudW1fY2hlY2tlZCh2YWx1 ZSwKPiAtCQkJCQkJCSZsb3B0cywgTF9TRUNUU0laRSk7Cj4gKwkJCQkJbHNlY3RvcnNpemUgPSBn ZXRudW0odmFsdWUsICZsb3B0cywKPiArCQkJCQkJCSAgICAgTF9TRUNUU0laRSk7Cj4gIAkJCQkJ bHNlY3RvcmxvZyA9Cj4gIAkJCQkJCWxpYnhmc19oaWdoYml0MzIobHNlY3RvcnNpemUpOwo+ICAJ CQkJCWxzc2ZsYWcgPSAxOwo+ICAJCQkJCWJyZWFrOwo+ICAJCQkJY2FzZSBMX0xBWllTQkNOVFI6 Cj4gIAkJCQkJc2JfZmVhdC5sYXp5X3NiX2NvdW50ZXJzID0KPiAtCQkJCQkJZ2V0bnVtX2NoZWNr ZWQodmFsdWUsICZsb3B0cywKPiArCQkJCQkJCWdldG51bSh2YWx1ZSwgJmxvcHRzLAo+ICAJCQkJ CQkJICAgICAgIExfTEFaWVNCQ05UUik7Cj4gIAkJCQkJYnJlYWs7Cj4gIAkJCQlkZWZhdWx0Ogo+ IEBAIC0xODkxLDggKzE4NzMsNyBAQCBtYWluKAo+ICAJCQkJCQkgICZ2YWx1ZSkpIHsKPiAgCQkJ CWNhc2UgTV9DUkM6Cj4gIAkJCQkJc2JfZmVhdC5jcmNzX2VuYWJsZWQgPQo+IC0JCQkJCQlnZXRu dW1fY2hlY2tlZCh2YWx1ZSwgJm1vcHRzLAo+IC0JCQkJCQkJICAgICAgIE1fQ1JDKTsKPiArCQkJ CQkJZ2V0bnVtKHZhbHVlLCAmbW9wdHMsIE1fQ1JDKTsKPiAgCQkJCQlpZiAoc2JfZmVhdC5jcmNz X2VuYWJsZWQgJiYgbmZ0eXBlKSB7Cj4gIAkJCQkJCWZwcmludGYoc3RkZXJyLAo+ICBfKCJjYW5u b3Qgc3BlY2lmeSBib3RoIC1tIGNyYz0xIGFuZCAtbiBmdHlwZVxuIikpOwo+IEBAIC0xOTI2LDgg KzE5MDcsOCBAQCBfKCJjYW5ub3Qgc3BlY2lmeSBib3RoIC1tIGNyYz0xIGFuZCAtbiBmdHlwZVxu IikpOwo+ICAJCQkJCWlmIChuc2ZsYWcpCj4gIAkJCQkJCWNvbmZsaWN0KCduJywgc3Vib3B0cywg Tl9TSVpFLAo+ICAJCQkJCQkJIE5fTE9HKTsKPiAtCQkJCQlkaXJibG9ja2xvZyA9IGdldG51bV9j aGVja2VkKHZhbHVlLAo+IC0JCQkJCQkJCSZub3B0cywgTl9MT0cpOwo+ICsJCQkJCWRpcmJsb2Nr bG9nID0gZ2V0bnVtKHZhbHVlLCAmbm9wdHMsCj4gKwkJCQkJCQkgICAgIE5fTE9HKTsKPiAgCQkJ CQlkaXJibG9ja3NpemUgPSAxIDw8IGRpcmJsb2NrbG9nOwo+ICAJCQkJCW5sZmxhZyA9IDE7Cj4g IAkJCQkJYnJlYWs7Cj4gQEAgLTE5MzUsOCArMTkxNiw4IEBAIF8oImNhbm5vdCBzcGVjaWZ5IGJv dGggLW0gY3JjPTEgYW5kIC1uIGZ0eXBlXG4iKSk7Cj4gIAkJCQkJaWYgKG5sZmxhZykKPiAgCQkJ CQkJY29uZmxpY3QoJ24nLCBzdWJvcHRzLCBOX0xPRywKPiAgCQkJCQkJCSBOX1NJWkUpOwo+IC0J CQkJCWRpcmJsb2Nrc2l6ZSA9IGdldG51bV9jaGVja2VkKHZhbHVlLAo+IC0JCQkJCQkJCSZub3B0 cywgTl9TSVpFKTsKPiArCQkJCQlkaXJibG9ja3NpemUgPSBnZXRudW0odmFsdWUsICZub3B0cywK PiArCQkJCQkJCSAgICAgIE5fU0laRSk7Cj4gIAkJCQkJZGlyYmxvY2tsb2cgPQo+ICAJCQkJCQls aWJ4ZnNfaGlnaGJpdDMyKGRpcmJsb2Nrc2l6ZSk7Cj4gIAkJCQkJbnNmbGFnID0gMTsKPiBAQCAt MTk1MSw5ICsxOTMyLDggQEAgXygiY2Fubm90IHNwZWNpZnkgYm90aCAtbSBjcmM9MSBhbmQgLW4g ZnR5cGVcbiIpKTsKPiAgCQkJCQkJc2JfZmVhdC5uY2kgPSB0cnVlOwo+ICAJCQkJCX0gZWxzZSB7 Cj4gIAkJCQkJCXNiX2ZlYXQuZGlyX3ZlcnNpb24gPQo+IC0JCQkJCQkJZ2V0bnVtX2NoZWNrZWQo dmFsdWUsCj4gLQkJCQkJCQkJJm5vcHRzLAo+IC0JCQkJCQkJCU5fVkVSU0lPTik7Cj4gKwkJCQkJ CQlnZXRudW0odmFsdWUsICZub3B0cywKPiArCQkJCQkJCSAgICAgICBOX1ZFUlNJT04pOwo+ICAJ CQkJCX0KPiAgCQkJCQludmZsYWcgPSAxOwo+ICAJCQkJCWJyZWFrOwo+IEBAIC0xOTYzLDggKzE5 NDMsOCBAQCBfKCJjYW5ub3Qgc3BlY2lmeSBib3RoIC1tIGNyYz0xIGFuZCAtbiBmdHlwZVxuIikp Owo+ICBfKCJjYW5ub3Qgc3BlY2lmeSBib3RoIC1tIGNyYz0xIGFuZCAtbiBmdHlwZVxuIikpOwo+ ICAJCQkJCQl1c2FnZSgpOwo+ICAJCQkJCX0KPiAtCQkJCQlzYl9mZWF0LmRpcmZ0eXBlID0gZ2V0 bnVtX2NoZWNrZWQodmFsdWUsCj4gLQkJCQkJCQkJJm5vcHRzLCBOX0ZUWVBFKTsKPiArCQkJCQlz Yl9mZWF0LmRpcmZ0eXBlID0gZ2V0bnVtKHZhbHVlLCAmbm9wdHMsCj4gKwkJCQkJCQkJICBOX0ZU WVBFKTsKPiAgCQkJCQluZnR5cGUgPSAxOwo+ICAJCQkJCWJyZWFrOwo+ICAJCQkJZGVmYXVsdDoK PiBAQCAtMjAwMiw4ICsxOTgyLDggQEAgXygiY2Fubm90IHNwZWNpZnkgYm90aCAtbSBjcmM9MSBh bmQgLW4gZnR5cGVcbiIpKTsKPiAgCQkJCQlydGV4dHNpemUgPSB2YWx1ZTsKPiAgCQkJCQlicmVh azsKPiAgCQkJCWNhc2UgUl9GSUxFOgo+IC0JCQkJCXhpLnJpc2ZpbGUgPSBnZXRudW1fY2hlY2tl ZCh2YWx1ZSwKPiAtCQkJCQkJCQkmcm9wdHMsIFJfRklMRSk7Cj4gKwkJCQkJeGkucmlzZmlsZSA9 IGdldG51bSh2YWx1ZSwgJnJvcHRzLAo+ICsJCQkJCQkJICAgIFJfRklMRSk7Cj4gIAkJCQkJaWYg KHhpLnJpc2ZpbGUpCj4gIAkJCQkJCXhpLnJjcmVhdCA9IDE7Cj4gIAkJCQkJYnJlYWs7Cj4gQEAg LTIwNDMsOCArMjAyMyw4IEBAIF8oImNhbm5vdCBzcGVjaWZ5IGJvdGggLW0gY3JjPTEgYW5kIC1u IGZ0eXBlXG4iKSk7Cj4gIAkJCQkJaWYgKHNzZmxhZyB8fCBsc3NmbGFnKQo+ICAJCQkJCQljb25m bGljdCgncycsIHN1Ym9wdHMsCj4gIAkJCQkJCQkgU19TRUNUU0laRSwgU19TRUNUTE9HKTsKPiAt CQkJCQlzZWN0b3Jsb2cgPSBnZXRudW1fY2hlY2tlZCh2YWx1ZSwgJnNvcHRzLAo+IC0JCQkJCQkJ CSAgIFNfU0VDVExPRyk7Cj4gKwkJCQkJc2VjdG9ybG9nID0gZ2V0bnVtKHZhbHVlLCAmc29wdHMs Cj4gKwkJCQkJCQkgICBTX1NFQ1RMT0cpOwo+ICAJCQkJCWxzZWN0b3Jsb2cgPSBzZWN0b3Jsb2c7 Cj4gIAkJCQkJc2VjdG9yc2l6ZSA9IDEgPDwgc2VjdG9ybG9nOwo+ICAJCQkJCWxzZWN0b3JzaXpl ID0gc2VjdG9yc2l6ZTsKPiBAQCAtMjA1NSw4ICsyMDM1LDggQEAgXygiY2Fubm90IHNwZWNpZnkg Ym90aCAtbSBjcmM9MSBhbmQgLW4gZnR5cGVcbiIpKTsKPiAgCQkJCQlpZiAoc2xmbGFnIHx8IGxz bGZsYWcpCj4gIAkJCQkJCWNvbmZsaWN0KCdzJywgc3Vib3B0cywgU19TRUNUTE9HLAo+ICAJCQkJ CQkJIFNfU0VDVFNJWkUpOwo+IC0JCQkJCXNlY3RvcnNpemUgPSBnZXRudW1fY2hlY2tlZCh2YWx1 ZSwKPiAtCQkJCQkJCSZzb3B0cywgU19TRUNUU0laRSk7Cj4gKwkJCQkJc2VjdG9yc2l6ZSA9IGdl dG51bSh2YWx1ZSwgJnNvcHRzLAo+ICsJCQkJCQkJICAgIFNfU0VDVFNJWkUpOwo+ICAJCQkJCWxz ZWN0b3JzaXplID0gc2VjdG9yc2l6ZTsKPiAgCQkJCQlzZWN0b3Jsb2cgPQo+ICAJCQkJCQlsaWJ4 ZnNfaGlnaGJpdDMyKHNlY3RvcnNpemUpOwo+IEBAIC0yMjkxLDcgKzIyNzEsNyBAQCBfKCJ3YXJu aW5nOiBzcGFyc2UgaW5vZGVzIG5vdCBzdXBwb3J0ZWQgd2l0aG91dCBDUkMgc3VwcG9ydCwgZGlz YWJsZWQuXG4iKSk7Cj4gIAlpZiAoZHNpemUpIHsKPiAgCQlfX3VpbnQ2NF90IGRieXRlczsKPiAg Cj4gLQkJZGJ5dGVzID0gZ2V0bnVtX2NoZWNrZWQoZHNpemUsICZkb3B0cywgRF9TSVpFKTsKPiAr CQlkYnl0ZXMgPSBnZXRudW0oZHNpemUsICZkb3B0cywgRF9TSVpFKTsKPiAgCQlpZiAoZGJ5dGVz ICUgWEZTX01JTl9CTE9DS1NJWkUpIHsKPiAgCQkJZnByaW50ZihzdGRlcnIsCj4gIAkJCV8oImls bGVnYWwgZGF0YSBsZW5ndGggJWxsZCwgbm90IGEgbXVsdGlwbGUgb2YgJWRcbiIpLAo+IEBAIC0y MzI4LDcgKzIzMDgsNyBAQCBfKCJ3YXJuaW5nOiBzcGFyc2UgaW5vZGVzIG5vdCBzdXBwb3J0ZWQg d2l0aG91dCBDUkMgc3VwcG9ydCwgZGlzYWJsZWQuXG4iKSk7Cj4gIAlpZiAobG9nc2l6ZSkgewo+ ICAJCV9fdWludDY0X3QgbG9nYnl0ZXM7Cj4gIAo+IC0JCWxvZ2J5dGVzID0gZ2V0bnVtX2NoZWNr ZWQobG9nc2l6ZSwgJmxvcHRzLCBMX1NJWkUpOwo+ICsJCWxvZ2J5dGVzID0gZ2V0bnVtKGxvZ3Np emUsICZsb3B0cywgTF9TSVpFKTsKPiAgCQlpZiAobG9nYnl0ZXMgJSBYRlNfTUlOX0JMT0NLU0la RSkgewo+ICAJCQlmcHJpbnRmKHN0ZGVyciwKPiAgCQkJXygiaWxsZWdhbCBsb2cgbGVuZ3RoICVs bGQsIG5vdCBhIG11bHRpcGxlIG9mICVkXG4iKSwKPiBAQCAtMjM1MCw3ICsyMzMwLDcgQEAgXygi d2FybmluZzogc3BhcnNlIGlub2RlcyBub3Qgc3VwcG9ydGVkIHdpdGhvdXQgQ1JDIHN1cHBvcnQs IGRpc2FibGVkLlxuIikpOwo+ICAJaWYgKHJ0c2l6ZSkgewo+ICAJCV9fdWludDY0X3QgcnRieXRl czsKPiAgCj4gLQkJcnRieXRlcyA9IGdldG51bV9jaGVja2VkKHJ0c2l6ZSwgJnJvcHRzLCBSX1NJ WkUpOwo+ICsJCXJ0Ynl0ZXMgPSBnZXRudW0ocnRzaXplLCAmcm9wdHMsIFJfU0laRSk7Cj4gIAkJ aWYgKHJ0Ynl0ZXMgJSBYRlNfTUlOX0JMT0NLU0laRSkgewo+ICAJCQlmcHJpbnRmKHN0ZGVyciwK PiAgCQkJXygiaWxsZWdhbCBydCBsZW5ndGggJWxsZCwgbm90IGEgbXVsdGlwbGUgb2YgJWRcbiIp LAo+IEBAIC0yMzcwLDcgKzIzNTAsNyBAQCBfKCJ3YXJuaW5nOiBzcGFyc2UgaW5vZGVzIG5vdCBz dXBwb3J0ZWQgd2l0aG91dCBDUkMgc3VwcG9ydCwgZGlzYWJsZWQuXG4iKSk7Cj4gIAlpZiAocnRl eHRzaXplKSB7Cj4gIAkJX191aW50NjRfdCBydGV4dGJ5dGVzOwo+ICAKPiAtCQlydGV4dGJ5dGVz ID0gZ2V0bnVtX2NoZWNrZWQocnRleHRzaXplLCAmcm9wdHMsIFJfRVhUU0laRSk7Cj4gKwkJcnRl eHRieXRlcyA9IGdldG51bShydGV4dHNpemUsICZyb3B0cywgUl9FWFRTSVpFKTsKPiAgCQlpZiAo cnRleHRieXRlcyAlIGJsb2Nrc2l6ZSkgewo+ICAJCQlmcHJpbnRmKHN0ZGVyciwKPiAgCQlfKCJp bGxlZ2FsIHJ0IGV4dGVudCBzaXplICVsbGQsIG5vdCBhIG11bHRpcGxlIG9mICVkXG4iKSwKPiBA QCAtMzQ2Niw4ICszNDQ2LDggQEAgdW5rbm93bigKPiAgCj4gIGxvbmcgbG9uZwo+ICBjdnRudW0o Cj4gLQl1bnNpZ25lZCBpbnQJYmxvY2tzaXplLAo+IC0JdW5zaWduZWQgaW50CXNlY3RvcnNpemUs Cj4gKwl1bnNpZ25lZCBpbnQJYmxrc2l6ZSwKPiArCXVuc2lnbmVkIGludAlzZWN0c2l6ZSwKPiAg CWNvbnN0IGNoYXIJKnMpCj4gIHsKPiAgCWxvbmcgbG9uZwlpOwo+IEBAIC0zNDgwLDkgKzM0NjAs OSBAQCBjdnRudW0oCj4gIAkJcmV0dXJuIGk7Cj4gIAo+ICAJaWYgKCpzcCA9PSAnYicgJiYgc3Bb MV0gPT0gJ1wwJykKPiAtCQlyZXR1cm4gaSAqIGJsb2Nrc2l6ZTsKPiArCQlyZXR1cm4gaSAqIGJs a3NpemU7Cj4gIAlpZiAoKnNwID09ICdzJyAmJiBzcFsxXSA9PSAnXDAnKQo+IC0JCXJldHVybiBp ICogc2VjdG9yc2l6ZTsKPiArCQlyZXR1cm4gaSAqIHNlY3RzaXplOwo+ICAKPiAgCWlmICgqc3Ag PT0gJ2snICYmIHNwWzFdID09ICdcMCcpCj4gIAkJcmV0dXJuIDEwMjRMTCAqIGk7Cj4gLS0gCj4g Mi4xLjAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Xwo+IHhmcyBtYWlsaW5nIGxpc3QKPiB4ZnNAb3NzLnNnaS5jb20KPiBodHRwOi8vb3NzLnNnaS5j b20vbWFpbG1hbi9saXN0aW5mby94ZnMKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCnhmcyBtYWlsaW5nIGxpc3QKeGZzQG9zcy5zZ2kuY29tCmh0dHA6Ly9v c3Muc2dpLmNvbS9tYWlsbWFuL2xpc3RpbmZvL3hmcwo=