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 46F807F8B for ; Fri, 26 Jun 2015 12:17:25 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 33600304051 for ; Fri, 26 Jun 2015 10:17:25 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id Eul5F39MRYFtmJO9 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 26 Jun 2015 10:17:23 -0700 (PDT) Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (Postfix) with ESMTPS id 397CE329D8D for ; Fri, 26 Jun 2015 17:17:23 +0000 (UTC) Date: Fri, 26 Jun 2015 13:17:21 -0400 From: Brian Foster Subject: Re: [PATCH 11/17] mkfs: table based parsing for converted parameters Message-ID: <20150626171720.GG40750@bfoster.bfoster> References: <1434711726-13092-1-git-send-email-jtulak@redhat.com> <1434711726-13092-12-git-send-email-jtulak@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1434711726-13092-12-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 T24gRnJpLCBKdW4gMTksIDIwMTUgYXQgMDE6MDI6MDBQTSArMDIwMCwgSmFuIMWkdWzDoWsgd3Jv dGU6Cj4gRnJvbTogRGF2ZSBDaGlubmVyIDxkY2hpbm5lckByZWRoYXQuY29tPgo+IAo+IEFsbCB0 aGUgcGFyYW1ldGVycyB0aGF0IGNhbiBiZSBwYXNzZWQgYXMgYmxvY2sgb3Igc2VjdG9yIHNpemVz IG5lZWQKPiB0byBiZSBwYXNzZWQgdGhlIGJsb2NrIGFuZCBzZWN0b3Igc2l6ZXMgdGhhdCB0aGV5 IHNob3VsZCBiZSB1c2luZwo+IGZvciBjb252ZXJzaW9uLiBGb3IgcGFyYW1ldGVyIHBhcnNpbmcs IGl0IGlzIGFsd2F5cyB0aGUgc2FtZSB0d28KPiB2YXJpYWJsZXMsIHNvIHRvIG1ha2UgdGhpbmdz IGVhc3kganVzdCBkZWNsYXJlIHRoZW0gYXMgZ2xvYmFsCj4gdmFyaWFibGVzIHNvIHdlIGNhbiBh dm9pZCBuZWVkaW5nIHRvIHBhc3MgdGhlbSB0byBnZXRudW1fY2hlY2tlZCgpLgo+IAo+IFdlIGFs c28gbmVlZCB0byBtYXJrIHRoZXNlIHBhcmFtZXRlcnMgYXJlIHJlcXVpcmluZyBjb252ZXJzaW9u IHNvCj4gdGhhdCB3ZSBkb24ndCBuZWVkIHRvIHBhc3MgdGhpcyBpbmZvcm1hdGlvbiBtYW51YWxs eSB0bwo+IGdldG51bV9jaGVja2VkKCkuIEZ1cnRoZXIsIHNvbWUgb2YgdGhlc2Ugb3B0aW9ucyBh cmUgcmVxdWlyZWQgdG8KPiBoYXZlIGEgcG93ZXIgb2YgMiB2YWx1ZSwgc28gYWRkIG9wdGlvbmFs IGNoZWNraW5nIGZvciB0aGF0IGFzIHdlbGwuCj4gCj4gU2lnbmVkLW9mZi1ieTogRGF2ZSBDaGlu bmVyIDxkY2hpbm5lckByZWRoYXQuY29tPgo+IFNpZ25lZC1vZmYtYnk6IEphbiDFpHVsw6FrIDxq dHVsYWtAcmVkaGF0LmNvbT4KPiAtLS0KClJldmlld2VkLWJ5OiBCcmlhbiBGb3N0ZXIgPGJmb3N0 ZXJAcmVkaGF0LmNvbT4KCj4gIG1rZnMveGZzX21rZnMuYyB8IDE3MSArKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICAxIGZpbGUgY2hhbmdl ZCwgNjggaW5zZXJ0aW9ucygrKSwgMTAzIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9t a2ZzL3hmc19ta2ZzLmMgYi9ta2ZzL3hmc19ta2ZzLmMKPiBpbmRleCAwYmQ4OTk4Li40ZmMxZjM0 IDEwMDY0NAo+IC0tLSBhL21rZnMveGZzX21rZnMuYwo+ICsrKyBiL21rZnMveGZzX21rZnMuYwo+ IEBAIC01Miw2ICs1MiwxMyBAQCBzdGF0aWMgaW50ICBpc3BvdzIodW5zaWduZWQgaW50IGkpOwo+ ICBzdGF0aWMgbG9uZyBsb25nIGN2dG51bSh1bnNpZ25lZCBpbnQgYmxvY2tzaXplLAo+ICAJCQl1 bnNpZ25lZCBpbnQgc2VjdG9yc2l6ZSwgY29uc3QgY2hhciAqcyk7Cj4gIAo+ICsvKgo+ICsgKiBU aGUgY29uZmlndXJlZCBibG9jayBhbmQgc2VjdG9yIHNpemVzIGFyZSBkZWZpbmVkIGFzIGdsb2Jh bCB2YXJpYWJsZXMgc28KPiArICogdGhhdCB0aGV5IGRvbid0IG5lZWQgdG8gYmUgcGFzc2VkIHRv IGZ1bmN0aW9ucyB0aGF0IHJlcXVpcmUgdGhlbS4KPiArICovCj4gK3Vuc2lnbmVkIGludAkJYmxv Y2tzaXplOwo+ICt1bnNpZ25lZCBpbnQJCXNlY3RvcnNpemU7Cj4gKwo+ICAjZGVmaW5lIE1BWF9T VUJPUFRTCTE2Cj4gICNkZWZpbmUgU1VCT1BUX05FRURTX1ZBTAkoLTFMTCkKPiAgc3RydWN0IG9w dF9wYXJhbXMgewo+IEBAIC02MSw2ICs2OCw4IEBAIHN0cnVjdCBvcHRfcGFyYW1zIHsKPiAgCXN0 cnVjdCBzdWJvcHRfcGFyYW0gewo+ICAJCWludAkJaW5kZXg7Cj4gIAkJYm9vbAkJc2VlbjsKPiAr CQlib29sCQljb252ZXJ0Owo+ICsJCWJvb2wJCWlzX3Bvd2VyXzI7Cj4gIAkJbG9uZyBsb25nCW1p bnZhbDsKPiAgCQlsb25nIGxvbmcJbWF4dmFsOwo+ICAJCWxvbmcgbG9uZwlkZWZhdWx0dmFsOwo+ IEBAIC04Myw2ICs5Miw4IEBAIHN0cnVjdCBvcHRfcGFyYW1zIGJvcHRzID0gewo+ICAJCSAgLmRl ZmF1bHR2YWwgPSBTVUJPUFRfTkVFRFNfVkFMLAo+ICAJCX0sCj4gIAkJeyAuaW5kZXggPSBCX1NJ WkUsCj4gKwkJICAuY29udmVydCA9IHRydWUsCj4gKwkJICAuaXNfcG93ZXJfMiA9IHRydWUsCj4g IAkJICAubWludmFsID0gWEZTX01JTl9CTE9DS1NJWkUsCj4gIAkJICAubWF4dmFsID0gWEZTX01B WF9CTE9DS1NJWkUsCj4gIAkJICAuZGVmYXVsdHZhbCA9IFNVQk9QVF9ORUVEU19WQUwsCj4gQEAg LTE0MCw2ICsxNTEsOSBAQCBzdHJ1Y3Qgb3B0X3BhcmFtcyBkb3B0cyA9IHsKPiAgCQkgIC5kZWZh dWx0dmFsID0gU1VCT1BUX05FRURTX1ZBTCwKPiAgCQl9LAo+ICAJCXsgLmluZGV4ID0gRF9TSVpF LAo+ICsJCSAgLmNvbnZlcnQgPSB0cnVlLAo+ICsJCSAgLm1pbnZhbCA9IFhGU19BR19NSU5fQllU RVMsCj4gKwkJICAubWF4dmFsID0gTExPTkdfTUFYLAo+ICAJCSAgLmRlZmF1bHR2YWwgPSBTVUJP UFRfTkVFRFNfVkFMLAo+ICAJCX0sCj4gIAkJeyAuaW5kZXggPSBEX1NVTklULAo+IEBAIC0xNTMs MTEgKzE2NywxNSBAQCBzdHJ1Y3Qgb3B0X3BhcmFtcyBkb3B0cyA9IHsKPiAgCQkgIC5kZWZhdWx0 dmFsID0gU1VCT1BUX05FRURTX1ZBTCwKPiAgCQl9LAo+ICAJCXsgLmluZGV4ID0gRF9BR1NJWkUs Cj4gKwkJICAuY29udmVydCA9IHRydWUsCj4gIAkJICAubWludmFsID0gWEZTX0FHX01JTl9CWVRF UywKPiAgCQkgIC5tYXh2YWwgPSBYRlNfQUdfTUFYX0JZVEVTLAo+ICAJCSAgLmRlZmF1bHR2YWwg PSBTVUJPUFRfTkVFRFNfVkFMLAo+ICAJCX0sCj4gIAkJeyAuaW5kZXggPSBEX1NVLAo+ICsJCSAg LmNvbnZlcnQgPSB0cnVlLAo+ICsJCSAgLm1pbnZhbCA9IDAsCj4gKwkJICAubWF4dmFsID0gVUlO VF9NQVgsCj4gIAkJICAuZGVmYXVsdHZhbCA9IFNVQk9QVF9ORUVEU19WQUwsCj4gIAkJfSwKPiAg CQl7IC5pbmRleCA9IERfU1csCj4gQEAgLTE3MSw2ICsxODksOCBAQCBzdHJ1Y3Qgb3B0X3BhcmFt cyBkb3B0cyA9IHsKPiAgCQkgIC5kZWZhdWx0dmFsID0gU1VCT1BUX05FRURTX1ZBTCwKPiAgCQl9 LAo+ICAJCXsgLmluZGV4ID0gRF9TRUNUU0laRSwKPiArCQkgIC5jb252ZXJ0ID0gdHJ1ZSwKPiAr CQkgIC5pc19wb3dlcl8yID0gdHJ1ZSwKPiAgCQkgIC5taW52YWwgPSBYRlNfTUlOX1NFQ1RPUlNJ WkUsCj4gIAkJICAubWF4dmFsID0gWEZTX01BWF9TRUNUT1JTSVpFLAo+ICAJCSAgLmRlZmF1bHR2 YWwgPSBTVUJPUFRfTkVFRFNfVkFMLAo+IEBAIC0yMzcsMTEgKzI1NywxMyBAQCBzdHJ1Y3Qgb3B0 X3BhcmFtcyBpb3B0cyA9IHsKPiAgCQkgIC5kZWZhdWx0dmFsID0gU1VCT1BUX05FRURTX1ZBTCwK PiAgCQl9LAo+ICAJCXsgLmluZGV4ID0gSV9QRVJCTE9DSywKPiArCQkgIC5pc19wb3dlcl8yID0g dHJ1ZSwKPiAgCQkgIC5taW52YWwgPSBYRlNfTUlOX0lOT0RFX1BFUkJMT0NLLAo+ICAJCSAgLm1h eHZhbCA9IFhGU19NQVhfQkxPQ0tTSVpFIC8gWEZTX0RJTk9ERV9NSU5fU0laRSwKPiAgCQkgIC5k ZWZhdWx0dmFsID0gU1VCT1BUX05FRURTX1ZBTCwKPiAgCQl9LAo+ICAJCXsgLmluZGV4ID0gSV9T SVpFLAo+ICsJCSAgLmlzX3Bvd2VyXzIgPSB0cnVlLAo+ICAJCSAgLm1pbnZhbCA9IFhGU19ESU5P REVfTUlOX1NJWkUsCj4gIAkJICAubWF4dmFsID0gWEZTX0RJTk9ERV9NQVhfU0laRSwKPiAgCQkg IC5kZWZhdWx0dmFsID0gU1VCT1BUX05FRURTX1ZBTCwKPiBAQCAtMzAwLDYgKzMyMiw5IEBAIHN0 cnVjdCBvcHRfcGFyYW1zIGxvcHRzID0gewo+ICAJCSAgLmRlZmF1bHR2YWwgPSAxLAo+ICAJCX0s Cj4gIAkJeyAuaW5kZXggPSBMX1NJWkUsCj4gKwkJICAuY29udmVydCA9IHRydWUsCj4gKwkJICAu bWludmFsID0gMiAqIDEwMjQgKiAxMDI0TEwsCS8qIFhYWDogWEZTX01JTl9MT0dfQllURVMgKi8K PiArCQkgIC5tYXh2YWwgPSBYRlNfTUFYX0xPR19CWVRFUywKPiAgCQkgIC5kZWZhdWx0dmFsID0g U1VCT1BUX05FRURTX1ZBTCwKPiAgCQl9LAo+ICAJCXsgLmluZGV4ID0gTF9WRVJTSU9OLAo+IEBA IC0zMTMsNiArMzM4LDkgQEAgc3RydWN0IG9wdF9wYXJhbXMgbG9wdHMgPSB7Cj4gIAkJICAuZGVm YXVsdHZhbCA9IFNVQk9QVF9ORUVEU19WQUwsCj4gIAkJfSwKPiAgCQl7IC5pbmRleCA9IExfU1Us Cj4gKwkJICAuY29udmVydCA9IHRydWUsCj4gKwkJICAubWludmFsID0gWExPR19NSU5fUkVDT1JE X0JTSVpFLAo+ICsJCSAgLm1heHZhbCA9IFhMT0dfTUFYX1JFQ09SRF9CU0laRSwKPiAgCQkgIC5k ZWZhdWx0dmFsID0gU1VCT1BUX05FRURTX1ZBTCwKPiAgCQl9LAo+ICAJCXsgLmluZGV4ID0gTF9E RVYsCj4gQEAgLTMyNCw2ICszNTIsOCBAQCBzdHJ1Y3Qgb3B0X3BhcmFtcyBsb3B0cyA9IHsKPiAg CQkgIC5kZWZhdWx0dmFsID0gU1VCT1BUX05FRURTX1ZBTCwKPiAgCQl9LAo+ICAJCXsgLmluZGV4 ID0gTF9TRUNUU0laRSwKPiArCQkgIC5jb252ZXJ0ID0gdHJ1ZSwKPiArCQkgIC5pc19wb3dlcl8y ID0gdHJ1ZSwKPiAgCQkgIC5taW52YWwgPSBYRlNfTUlOX1NFQ1RPUlNJWkUsCj4gIAkJICAubWF4 dmFsID0gWEZTX01BWF9TRUNUT1JTSVpFLAo+ICAJCSAgLmRlZmF1bHR2YWwgPSBTVUJPUFRfTkVF RFNfVkFMLAo+IEBAIC0zNjQsNiArMzk0LDggQEAgc3RydWN0IG9wdF9wYXJhbXMgbm9wdHMgPSB7 Cj4gIAkJICAuZGVmYXVsdHZhbCA9IFNVQk9QVF9ORUVEU19WQUwsCj4gIAkJfSwKPiAgCQl7IC5p bmRleCA9IE5fU0laRSwKPiArCQkgIC5jb252ZXJ0ID0gdHJ1ZSwKPiArCQkgIC5pc19wb3dlcl8y ID0gdHJ1ZSwKPiAgCQkgIC5taW52YWwgPSAxIDw8IFhGU19NSU5fUkVDX0RJUlNJWkUsCj4gIAkJ ICAubWF4dmFsID0gWEZTX01BWF9CTE9DS1NJWkUsCj4gIAkJICAuZGVmYXVsdHZhbCA9IFNVQk9Q VF9ORUVEU19WQUwsCj4gQEAgLTQwMCw5ICs0MzIsMTUgQEAgc3RydWN0IG9wdF9wYXJhbXMgcm9w dHMgPSB7Cj4gIAl9LAo+ICAJLnN1Ym9wdF9wYXJhbXMgPSB7Cj4gIAkJeyAuaW5kZXggPSBSX0VY VFNJWkUsCj4gKwkJICAuY29udmVydCA9IHRydWUsCj4gKwkJICAubWludmFsID0gWEZTX01JTl9S VEVYVFNJWkUsCj4gKwkJICAubWF4dmFsID0gWEZTX01BWF9SVEVYVFNJWkUsCj4gIAkJICAuZGVm YXVsdHZhbCA9IFNVQk9QVF9ORUVEU19WQUwsCj4gIAkJfSwKPiAgCQl7IC5pbmRleCA9IFJfU0la RSwKPiArCQkgIC5jb252ZXJ0ID0gdHJ1ZSwKPiArCQkgIC5taW52YWwgPSAwLAo+ICsJCSAgLm1h eHZhbCA9IExMT05HX01BWCwKPiAgCQkgIC5kZWZhdWx0dmFsID0gU1VCT1BUX05FRURTX1ZBTCwK PiAgCQl9LAo+ICAJCXsgLmluZGV4ID0gUl9ERVYsCj4gQEAgLTQ0NSwxMSArNDgzLDE1IEBAIHN0 cnVjdCBvcHRfcGFyYW1zIHNvcHRzID0gewo+ICAJCSAgLmRlZmF1bHR2YWwgPSBTVUJPUFRfTkVF RFNfVkFMLAo+ICAJCX0sCj4gIAkJeyAuaW5kZXggPSBTX1NJWkUsCj4gKwkJICAuY29udmVydCA9 IHRydWUsCj4gKwkJICAuaXNfcG93ZXJfMiA9IHRydWUsCj4gIAkJICAubWludmFsID0gWEZTX01J Tl9TRUNUT1JTSVpFLAo+ICAJCSAgLm1heHZhbCA9IFhGU19NQVhfU0VDVE9SU0laRSwKPiAgCQkg IC5kZWZhdWx0dmFsID0gU1VCT1BUX05FRURTX1ZBTCwKPiAgCQl9LAo+ICAJCXsgLmluZGV4ID0g U19TRUNUU0laRSwKPiArCQkgIC5jb252ZXJ0ID0gdHJ1ZSwKPiArCQkgIC5pc19wb3dlcl8yID0g dHJ1ZSwKPiAgCQkgIC5taW52YWwgPSBYRlNfTUlOX1NFQ1RPUlNJWkUsCj4gIAkJICAubWF4dmFs ID0gWEZTX01BWF9TRUNUT1JTSVpFLAo+ICAJCSAgLmRlZmF1bHR2YWwgPSBTVUJPUFRfTkVFRFNf VkFMLAo+IEBAIC0xMjkxLDE1ICsxMzMzLDE1IEBAIHNiX3NldF9mZWF0dXJlcygKPiAgbG9uZyBs b25nCj4gIGdldG51bSgKPiAgCWNvbnN0IGNoYXIJKnN0ciwKPiAtCXVuc2lnbmVkIGludAlibG9j a3NpemUsCj4gLQl1bnNpZ25lZCBpbnQJc2VjdG9yc2l6ZSwKPiArCXVuc2lnbmVkIGludAlibGtz aXplLAo+ICsJdW5zaWduZWQgaW50CXNlY3RzaXplLAo+ICAJYm9vbAkJY29udmVydCkKPiAgewo+ ICAJbG9uZyBsb25nCWk7Cj4gIAljaGFyCQkqc3A7Cj4gIAo+ICAJaWYgKGNvbnZlcnQpCj4gLQkJ cmV0dXJuIGN2dG51bShibG9ja3NpemUsIHNlY3RvcnNpemUsIHN0cik7Cj4gKwkJcmV0dXJuIGN2 dG51bShibGtzaXplLCBzZWN0c2l6ZSwgc3RyKTsKPiAgCj4gIAlpID0gc3RydG9sbChzdHIsICZz cCwgMCk7Cj4gIAlpZiAoaSA9PSAwICYmIHNwID09IHN0cikKPiBAQCAtMTM0OCw5ICsxMzkwLDEx IEBAIGdldG51bV9jaGVja2VkKAo+ICAJCXJldHVybiBzcC0+ZGVmYXVsdHZhbDsKPiAgCX0KPiAg Cj4gLQljID0gZ2V0bnVtKHN0ciwgMCwgMCwgZmFsc2UpOwo+ICsJYyA9IGdldG51bShzdHIsIGJs b2Nrc2l6ZSwgc2VjdG9yc2l6ZSwgc3AtPmNvbnZlcnQpOwo+ICAJaWYgKGMgPCBzcC0+bWludmFs IHx8IGMgPiBzcC0+bWF4dmFsKQo+ICAJCWlsbGVnYWxfb3B0aW9uKHN0ciwgb3B0cywgaW5kZXgp Owo+ICsJaWYgKHNwLT5pc19wb3dlcl8yICYmICFpc3BvdzIoYykpCj4gKwkJaWxsZWdhbF9vcHRp b24oc3RyLCBvcHRzLCBpbmRleCk7Cj4gIAlyZXR1cm4gYzsKPiAgfQo+ICAKPiBAQCAtMTM2OCw3 ICsxNDEyLDYgQEAgbWFpbigKPiAgCXN0cnVjdCB4ZnNfYnRyZWVfYmxvY2sJKmJsb2NrOwo+ICAJ aW50CQkJYmxmbGFnOwo+ICAJaW50CQkJYmxvY2tsb2c7Cj4gLQl1bnNpZ25lZCBpbnQJCWJsb2Nr c2l6ZTsKPiAgCWludAkJCWJzZmxhZzsKPiAgCWludAkJCWJzaXplOwo+ICAJeGZzX2J1Zl90CQkq YnVmOwo+IEBAIC0xNDQxLDcgKzE0ODQsNiBAQCBtYWluKAo+ICAJY2hhcgkJCSpydHNpemU7Cj4g IAl4ZnNfc2JfdAkJKnNicDsKPiAgCWludAkJCXNlY3RvcmxvZzsKPiAtCXVuc2lnbmVkIGludAkJ c2VjdG9yc2l6ZTsKPiAgCV9fdWludDY0X3QJCXNlY3Rvcl9tYXNrOwo+ICAJaW50CQkJc2xmbGFn Owo+ICAJaW50CQkJc3NmbGFnOwo+IEBAIC0xNTIwLDE4ICsxNTYyLDExIEBAIG1haW4oCj4gIAkJ CQkJYmxmbGFnID0gMTsKPiAgCQkJCQlicmVhazsKPiAgCQkJCWNhc2UgQl9TSVpFOgo+IC0JCQkJ CWlmICghdmFsdWUgfHwgKnZhbHVlID09ICdcMCcpCj4gLQkJCQkJCXJlcXZhbCgnYicsIHN1Ym9w dHMsIEJfU0laRSk7Cj4gLQkJCQkJaWYgKGJzZmxhZykKPiAtCQkJCQkJcmVzcGVjKCdiJywgc3Vi b3B0cywgQl9TSVpFKTsKPiAgCQkJCQlpZiAoYmxmbGFnKQo+ICAJCQkJCQljb25mbGljdCgnYics IHN1Ym9wdHMsIEJfTE9HLAo+ICAJCQkJCQkJIEJfU0laRSk7Cj4gLQkJCQkJYmxvY2tzaXplID0g Z2V0bnVtKHZhbHVlLCBibG9ja3NpemUsCj4gLQkJCQkJCQlzZWN0b3JzaXplLCB0cnVlKTsKPiAt CQkJCQlpZiAoYmxvY2tzaXplIDw9IDAgfHwKPiAtCQkJCQkgICAgIWlzcG93MihibG9ja3NpemUp KQo+IC0JCQkJCQlpbGxlZ2FsKHZhbHVlLCAiYiBzaXplIik7Cj4gKwkJCQkJYmxvY2tzaXplID0g Z2V0bnVtX2NoZWNrZWQodmFsdWUsICZib3B0cywKPiArCQkJCQkJCQkgIEJfU0laRSk7Cj4gIAkJ CQkJYmxvY2tsb2cgPSBsaWJ4ZnNfaGlnaGJpdDMyKGJsb2Nrc2l6ZSk7Cj4gIAkJCQkJYnNmbGFn ID0gMTsKPiAgCQkJCQlicmVhazsKPiBAQCAtMTU1NCwxNCArMTU4OSw4IEBAIG1haW4oCj4gIAkJ CQkJZGFmbGFnID0gMTsKPiAgCQkJCQlicmVhazsKPiAgCQkJCWNhc2UgRF9BR1NJWkU6Cj4gLQkJ CQkJaWYgKCF2YWx1ZSB8fCAqdmFsdWUgPT0gJ1wwJykKPiAtCQkJCQkJcmVxdmFsKCdkJywgc3Vi b3B0cywgRF9BR1NJWkUpOwo+IC0JCQkJCWlmIChkYXNpemUpCj4gLQkJCQkJCXJlc3BlYygnZCcs IHN1Ym9wdHMsIERfQUdTSVpFKTsKPiAtCQkJCQlhZ3NpemUgPSBnZXRudW0odmFsdWUsIGJsb2Nr c2l6ZSwKPiAtCQkJCQkJCXNlY3RvcnNpemUsIHRydWUpOwo+IC0JCQkJCWlmICgoX19pbnQ2NF90 KWFnc2l6ZSA8PSAwKQo+IC0JCQkJCQlpbGxlZ2FsKHZhbHVlLCAiZCBhZ3NpemUiKTsKPiArCQkJ CQlhZ3NpemUgPSBnZXRudW1fY2hlY2tlZCh2YWx1ZSwgJmRvcHRzLAo+ICsJCQkJCQkJCSBEX0FH U0laRSk7Cj4gIAkJCQkJZGFzaXplID0gMTsKPiAgCQkJCQlicmVhazsKPiAgCQkJCWNhc2UgRF9G SUxFOgo+IEBAIC0xNTk5LDE3ICsxNjI4LDExIEBAIG1haW4oCj4gIAkJCQkJCQkJIERfU1dJRFRI KTsKPiAgCQkJCQlicmVhazsKPiAgCQkJCWNhc2UgRF9TVToKPiAtCQkJCQlpZiAoIXZhbHVlIHx8 ICp2YWx1ZSA9PSAnXDAnKQo+IC0JCQkJCQlyZXF2YWwoJ2QnLCBzdWJvcHRzLCBEX1NVKTsKPiAt CQkJCQlpZiAoZHN1KQo+IC0JCQkJCQlyZXNwZWMoJ2QnLCBzdWJvcHRzLCBEX1NVKTsKPiAgCQkJ CQlpZiAobm9kc2ZsYWcpCj4gIAkJCQkJCWNvbmZsaWN0KCdkJywgc3Vib3B0cywgRF9OT0FMSUdO LAo+ICAJCQkJCQkJIERfU1UpOwo+IC0JCQkJCWRzdSA9IGdldG51bSh2YWx1ZSwgYmxvY2tzaXpl LAo+IC0JCQkJCQkgICAgIHNlY3RvcnNpemUsIHRydWUpOwo+IC0JCQkJCWlmIChkc3UgPCAwKQo+ IC0JCQkJCQlpbGxlZ2FsKHZhbHVlLCAiZCBzdSIpOwo+ICsJCQkJCWRzdSA9IGdldG51bV9jaGVj a2VkKHZhbHVlLCAmZG9wdHMsCj4gKwkJCQkJCQkJIERfU1UpOwo+ICAJCQkJCWJyZWFrOwo+ICAJ CQkJY2FzZSBEX1NXOgo+ICAJCQkJCWlmIChub2RzZmxhZykKPiBAQCAtMTY0MywxOCArMTY2Niwx MSBAQCBtYWluKAo+ICAJCQkJCXNsZmxhZyA9IDE7Cj4gIAkJCQkJYnJlYWs7Cj4gIAkJCQljYXNl IERfU0VDVFNJWkU6Cj4gLQkJCQkJaWYgKCF2YWx1ZSB8fCAqdmFsdWUgPT0gJ1wwJykKPiAtCQkJ CQkJcmVxdmFsKCdkJywgc3Vib3B0cywgRF9TRUNUU0laRSk7Cj4gLQkJCQkJaWYgKHNzZmxhZykK PiAtCQkJCQkJcmVzcGVjKCdkJywgc3Vib3B0cywgRF9TRUNUU0laRSk7Cj4gIAkJCQkJaWYgKHNs ZmxhZykKPiAgCQkJCQkJY29uZmxpY3QoJ2QnLCBzdWJvcHRzLCBEX1NFQ1RMT0csCj4gIAkJCQkJ CQkgRF9TRUNUU0laRSk7Cj4gLQkJCQkJc2VjdG9yc2l6ZSA9IGdldG51bSh2YWx1ZSwgYmxvY2tz aXplLAo+IC0JCQkJCQkJICAgIHNlY3RvcnNpemUsIHRydWUpOwo+IC0JCQkJCWlmIChzZWN0b3Jz aXplIDw9IDAgfHwKPiAtCQkJCQkgICAgIWlzcG93MihzZWN0b3JzaXplKSkKPiAtCQkJCQkJaWxs ZWdhbCh2YWx1ZSwgImQgc2VjdHNpemUiKTsKPiArCQkJCQlzZWN0b3JzaXplID0gZ2V0bnVtX2No ZWNrZWQodmFsdWUsCj4gKwkJCQkJCQkmZG9wdHMsIERfU0VDVFNJWkUpOwo+ICAJCQkJCXNlY3Rv cmxvZyA9Cj4gIAkJCQkJCWxpYnhmc19oaWdoYml0MzIoc2VjdG9yc2l6ZSk7Cj4gIAkJCQkJc3Nm bGFnID0gMTsKPiBAQCAtMTcyMSw4ICsxNzM3LDYgQEAgbWFpbigKPiAgCQkJCQkJCSBJX1BFUkJM T0NLKTsKPiAgCQkJCQlpbm9wYmxvY2sgPSBnZXRudW1fY2hlY2tlZCh2YWx1ZSwgJmlvcHRzLAo+ ICAJCQkJCQkJCSAgIElfUEVSQkxPQ0spOwo+IC0JCQkJCWlmICghaXNwb3cyKGlub3BibG9jaykp Cj4gLQkJCQkJCWlsbGVnYWwodmFsdWUsICJpIHBlcmJsb2NrIik7Cj4gIAkJCQkJaXBmbGFnID0g MTsKPiAgCQkJCQlicmVhazsKPiAgCQkJCWNhc2UgSV9TSVpFOgo+IEBAIC0xNzM0LDggKzE3NDgs NiBAQCBtYWluKAo+ICAJCQkJCQkJIElfU0laRSk7Cj4gIAkJCQkJaXNpemUgPSBnZXRudW1fY2hl Y2tlZCh2YWx1ZSwgJmlvcHRzLAo+ICAJCQkJCQkJICAgICAgIElfU0laRSk7Cj4gLQkJCQkJaWYg KCFpc3BvdzIoaXNpemUpKQo+IC0JCQkJCQlpbGxlZ2FsKHZhbHVlLCAiaSBzaXplIik7Cj4gIAkJ CQkJaW5vZGVsb2cgPSBsaWJ4ZnNfaGlnaGJpdDMyKGlzaXplKTsKPiAgCQkJCQlpc2ZsYWcgPSAx Owo+ICAJCQkJCWJyZWFrOwo+IEBAIC0xNzk3LDE0ICsxODA5LDggQEAgbWFpbigKPiAgCQkJCQls aWZsYWcgPSAxOwo+ICAJCQkJCWJyZWFrOwo+ICAJCQkJY2FzZSBMX1NVOgo+IC0JCQkJCWlmICgh dmFsdWUgfHwgKnZhbHVlID09ICdcMCcpCj4gLQkJCQkJCXJlcXZhbCgnbCcsIHN1Ym9wdHMsIExf U1UpOwo+IC0JCQkJCWlmIChsc3UpCj4gLQkJCQkJCXJlc3BlYygnbCcsIHN1Ym9wdHMsIExfU1Up Owo+IC0JCQkJCWxzdSA9IGdldG51bSh2YWx1ZSwgYmxvY2tzaXplLAo+IC0JCQkJCQkgICAgIHNl Y3RvcnNpemUsIHRydWUpOwo+IC0JCQkJCWlmIChsc3UgPCAwKQo+IC0JCQkJCQlpbGxlZ2FsKHZh bHVlLCAibCBzdSIpOwo+ICsJCQkJCWxzdSA9IGdldG51bV9jaGVja2VkKHZhbHVlLCAmbG9wdHMs Cj4gKwkJCQkJCQkJIExfU1UpOwo+ICAJCQkJCWxzdWZsYWcgPSAxOwo+ICAJCQkJCWJyZWFrOwo+ ICAJCQkJY2FzZSBMX1NVTklUOgo+IEBAIC0xODUxLDE4ICsxODU3LDExIEBAIG1haW4oCj4gIAkJ CQkJbHNsZmxhZyA9IDE7Cj4gIAkJCQkJYnJlYWs7Cj4gIAkJCQljYXNlIExfU0VDVFNJWkU6Cj4g LQkJCQkJaWYgKCF2YWx1ZSB8fCAqdmFsdWUgPT0gJ1wwJykKPiAtCQkJCQkJcmVxdmFsKCdsJywg c3Vib3B0cywgTF9TRUNUU0laRSk7Cj4gLQkJCQkJaWYgKGxzc2ZsYWcpCj4gLQkJCQkJCXJlc3Bl YygnbCcsIHN1Ym9wdHMsIExfU0VDVFNJWkUpOwo+ICAJCQkJCWlmIChsc2xmbGFnKQo+ICAJCQkJ CQljb25mbGljdCgnbCcsIHN1Ym9wdHMsIExfU0VDVExPRywKPiAgCQkJCQkJCSBMX1NFQ1RTSVpF KTsKPiAtCQkJCQlsc2VjdG9yc2l6ZSA9IGdldG51bSh2YWx1ZSwgYmxvY2tzaXplLAo+IC0JCQkJ CQkJICAgICBzZWN0b3JzaXplLCB0cnVlKTsKPiAtCQkJCQlpZiAobHNlY3RvcnNpemUgPD0gMCB8 fAo+IC0JCQkJCSAgICAhaXNwb3cyKGxzZWN0b3JzaXplKSkKPiAtCQkJCQkJaWxsZWdhbCh2YWx1 ZSwgImwgc2VjdHNpemUiKTsKPiArCQkJCQlsc2VjdG9yc2l6ZSA9IGdldG51bV9jaGVja2VkKHZh bHVlLAo+ICsJCQkJCQkJJmxvcHRzLCBMX1NFQ1RTSVpFKTsKPiAgCQkJCQlsc2VjdG9ybG9nID0K PiAgCQkJCQkJbGlieGZzX2hpZ2hiaXQzMihsc2VjdG9yc2l6ZSk7Cj4gIAkJCQkJbHNzZmxhZyA9 IDE7Cj4gQEAgLTE5MzMsMTggKzE5MzIsMTEgQEAgXygiY2Fubm90IHNwZWNpZnkgYm90aCAtbSBj cmM9MSBhbmQgLW4gZnR5cGVcbiIpKTsKPiAgCQkJCQlubGZsYWcgPSAxOwo+ICAJCQkJCWJyZWFr Owo+ICAJCQkJY2FzZSBOX1NJWkU6Cj4gLQkJCQkJaWYgKCF2YWx1ZSB8fCAqdmFsdWUgPT0gJ1ww JykKPiAtCQkJCQkJcmVxdmFsKCduJywgc3Vib3B0cywgTl9TSVpFKTsKPiAtCQkJCQlpZiAobnNm bGFnKQo+IC0JCQkJCQlyZXNwZWMoJ24nLCBzdWJvcHRzLCBOX1NJWkUpOwo+ICAJCQkJCWlmIChu bGZsYWcpCj4gIAkJCQkJCWNvbmZsaWN0KCduJywgc3Vib3B0cywgTl9MT0csCj4gIAkJCQkJCQkg Tl9TSVpFKTsKPiAtCQkJCQlkaXJibG9ja3NpemUgPSBnZXRudW0odmFsdWUsIGJsb2Nrc2l6ZSwK PiAtCQkJCQkJCSAgICAgIHNlY3RvcnNpemUsIHRydWUpOwo+IC0JCQkJCWlmIChkaXJibG9ja3Np emUgPD0gMCB8fAo+IC0JCQkJCSAgICAhaXNwb3cyKGRpcmJsb2Nrc2l6ZSkpCj4gLQkJCQkJCWls bGVnYWwodmFsdWUsICJuIHNpemUiKTsKPiArCQkJCQlkaXJibG9ja3NpemUgPSBnZXRudW1fY2hl Y2tlZCh2YWx1ZSwKPiArCQkJCQkJCQkmbm9wdHMsIE5fU0laRSk7Cj4gIAkJCQkJZGlyYmxvY2ts b2cgPQo+ICAJCQkJCQlsaWJ4ZnNfaGlnaGJpdDMyKGRpcmJsb2Nrc2l6ZSk7Cj4gIAkJCQkJbnNm bGFnID0gMTsKPiBAQCAtMjA2MCwxOCArMjA1MiwxMSBAQCBfKCJjYW5ub3Qgc3BlY2lmeSBib3Ro IC1tIGNyYz0xIGFuZCAtbiBmdHlwZVxuIikpOwo+ICAJCQkJCWJyZWFrOwo+ICAJCQkJY2FzZSBT X1NJWkU6Cj4gIAkJCQljYXNlIFNfU0VDVFNJWkU6Cj4gLQkJCQkJaWYgKCF2YWx1ZSB8fCAqdmFs dWUgPT0gJ1wwJykKPiAtCQkJCQkJcmVxdmFsKCdzJywgc3Vib3B0cywgU19TRUNUU0laRSk7Cj4g LQkJCQkJaWYgKHNzZmxhZyB8fCBsc3NmbGFnKQo+IC0JCQkJCQlyZXNwZWMoJ3MnLCBzdWJvcHRz LCBTX1NFQ1RTSVpFKTsKPiAgCQkJCQlpZiAoc2xmbGFnIHx8IGxzbGZsYWcpCj4gIAkJCQkJCWNv bmZsaWN0KCdzJywgc3Vib3B0cywgU19TRUNUTE9HLAo+ICAJCQkJCQkJIFNfU0VDVFNJWkUpOwo+ IC0JCQkJCXNlY3RvcnNpemUgPSBnZXRudW0odmFsdWUsIGJsb2Nrc2l6ZSwKPiAtCQkJCQkJCSAg ICBzZWN0b3JzaXplLCB0cnVlKTsKPiAtCQkJCQlpZiAoc2VjdG9yc2l6ZSA8PSAwIHx8Cj4gLQkJ CQkJICAgICFpc3BvdzIoc2VjdG9yc2l6ZSkpCj4gLQkJCQkJCWlsbGVnYWwodmFsdWUsICJzIHNl Y3RzaXplIik7Cj4gKwkJCQkJc2VjdG9yc2l6ZSA9IGdldG51bV9jaGVja2VkKHZhbHVlLAo+ICsJ CQkJCQkJJnNvcHRzLCBTX1NFQ1RTSVpFKTsKPiAgCQkJCQlsc2VjdG9yc2l6ZSA9IHNlY3RvcnNp emU7Cj4gIAkJCQkJc2VjdG9ybG9nID0KPiAgCQkJCQkJbGlieGZzX2hpZ2hiaXQzMihzZWN0b3Jz aXplKTsKPiBAQCAtMjMwNiw5ICsyMjkxLDcgQEAgXygid2FybmluZzogc3BhcnNlIGlub2RlcyBu b3Qgc3VwcG9ydGVkIHdpdGhvdXQgQ1JDIHN1cHBvcnQsIGRpc2FibGVkLlxuIikpOwo+ICAJaWYg KGRzaXplKSB7Cj4gIAkJX191aW50NjRfdCBkYnl0ZXM7Cj4gIAo+IC0JCWRieXRlcyA9IGdldG51 bShkc2l6ZSwgYmxvY2tzaXplLCBzZWN0b3JzaXplLCB0cnVlKTsKPiAtCQlpZiAoKF9faW50NjRf dClkYnl0ZXMgPCAwKQo+IC0JCQlpbGxlZ2FsKGRzaXplLCAiZCBzaXplIik7Cj4gKwkJZGJ5dGVz ID0gZ2V0bnVtX2NoZWNrZWQoZHNpemUsICZkb3B0cywgRF9TSVpFKTsKPiAgCQlpZiAoZGJ5dGVz ICUgWEZTX01JTl9CTE9DS1NJWkUpIHsKPiAgCQkJZnByaW50ZihzdGRlcnIsCj4gIAkJCV8oImls bGVnYWwgZGF0YSBsZW5ndGggJWxsZCwgbm90IGEgbXVsdGlwbGUgb2YgJWRcbiIpLAo+IEBAIC0y MzQ1LDkgKzIzMjgsNyBAQCBfKCJ3YXJuaW5nOiBzcGFyc2UgaW5vZGVzIG5vdCBzdXBwb3J0ZWQg d2l0aG91dCBDUkMgc3VwcG9ydCwgZGlzYWJsZWQuXG4iKSk7Cj4gIAlpZiAobG9nc2l6ZSkgewo+ ICAJCV9fdWludDY0X3QgbG9nYnl0ZXM7Cj4gIAo+IC0JCWxvZ2J5dGVzID0gZ2V0bnVtKGxvZ3Np emUsIGJsb2Nrc2l6ZSwgc2VjdG9yc2l6ZSwgdHJ1ZSk7Cj4gLQkJaWYgKChfX2ludDY0X3QpbG9n Ynl0ZXMgPCAwKQo+IC0JCQlpbGxlZ2FsKGxvZ3NpemUsICJsIHNpemUiKTsKPiArCQlsb2dieXRl cyA9IGdldG51bV9jaGVja2VkKGxvZ3NpemUsICZsb3B0cywgTF9TSVpFKTsKPiAgCQlpZiAobG9n Ynl0ZXMgJSBYRlNfTUlOX0JMT0NLU0laRSkgewo+ICAJCQlmcHJpbnRmKHN0ZGVyciwKPiAgCQkJ XygiaWxsZWdhbCBsb2cgbGVuZ3RoICVsbGQsIG5vdCBhIG11bHRpcGxlIG9mICVkXG4iKSwKPiBA QCAtMjM2OSw5ICsyMzUwLDcgQEAgXygid2FybmluZzogc3BhcnNlIGlub2RlcyBub3Qgc3VwcG9y dGVkIHdpdGhvdXQgQ1JDIHN1cHBvcnQsIGRpc2FibGVkLlxuIikpOwo+ICAJaWYgKHJ0c2l6ZSkg ewo+ICAJCV9fdWludDY0X3QgcnRieXRlczsKPiAgCj4gLQkJcnRieXRlcyA9IGdldG51bShydHNp emUsIGJsb2Nrc2l6ZSwgc2VjdG9yc2l6ZSwgdHJ1ZSk7Cj4gLQkJaWYgKChfX2ludDY0X3QpcnRi eXRlcyA8IDApCj4gLQkJCWlsbGVnYWwocnRzaXplLCAiciBzaXplIik7Cj4gKwkJcnRieXRlcyA9 IGdldG51bV9jaGVja2VkKHJ0c2l6ZSwgJnJvcHRzLCBSX1NJWkUpOwo+ICAJCWlmIChydGJ5dGVz ICUgWEZTX01JTl9CTE9DS1NJWkUpIHsKPiAgCQkJZnByaW50ZihzdGRlcnIsCj4gIAkJCV8oImls bGVnYWwgcnQgbGVuZ3RoICVsbGQsIG5vdCBhIG11bHRpcGxlIG9mICVkXG4iKSwKPiBAQCAtMjM5 MSwyNyArMjM3MCwxMyBAQCBfKCJ3YXJuaW5nOiBzcGFyc2UgaW5vZGVzIG5vdCBzdXBwb3J0ZWQg d2l0aG91dCBDUkMgc3VwcG9ydCwgZGlzYWJsZWQuXG4iKSk7Cj4gIAlpZiAocnRleHRzaXplKSB7 Cj4gIAkJX191aW50NjRfdCBydGV4dGJ5dGVzOwo+ICAKPiAtCQlydGV4dGJ5dGVzID0gZ2V0bnVt KHJ0ZXh0c2l6ZSwgYmxvY2tzaXplLCBzZWN0b3JzaXplLCB0cnVlKTsKPiAtCQlpZiAoKF9faW50 NjRfdClydGV4dGJ5dGVzIDwgMCkKPiAtCQkJaWxsZWdhbChydHNpemUsICJyIGV4dHNpemUiKTsK PiArCQlydGV4dGJ5dGVzID0gZ2V0bnVtX2NoZWNrZWQocnRleHRzaXplLCAmcm9wdHMsIFJfRVhU U0laRSk7Cj4gIAkJaWYgKHJ0ZXh0Ynl0ZXMgJSBibG9ja3NpemUpIHsKPiAgCQkJZnByaW50Zihz dGRlcnIsCj4gIAkJXygiaWxsZWdhbCBydCBleHRlbnQgc2l6ZSAlbGxkLCBub3QgYSBtdWx0aXBs ZSBvZiAlZFxuIiksCj4gIAkJCQkobG9uZyBsb25nKXJ0ZXh0Ynl0ZXMsIGJsb2Nrc2l6ZSk7Cj4g IAkJCXVzYWdlKCk7Cj4gIAkJfQo+IC0JCWlmIChydGV4dGJ5dGVzID4gWEZTX01BWF9SVEVYVFNJ WkUpIHsKPiAtCQkJZnByaW50ZihzdGRlcnIsCj4gLQkJCQlfKCJydCBleHRlbnQgc2l6ZSAlcyB0 b28gbGFyZ2UsIG1heGltdW0gJWRcbiIpLAo+IC0JCQkJcnRleHRzaXplLCBYRlNfTUFYX1JURVhU U0laRSk7Cj4gLQkJCXVzYWdlKCk7Cj4gLQkJfQo+IC0JCWlmIChydGV4dGJ5dGVzIDwgWEZTX01J Tl9SVEVYVFNJWkUpIHsKPiAtCQkJZnByaW50ZihzdGRlcnIsCj4gLQkJCQlfKCJydCBleHRlbnQg c2l6ZSAlcyB0b28gc21hbGwsIG1pbmltdW0gJWRcbiIpLAo+IC0JCQkJcnRleHRzaXplLCBYRlNf TUlOX1JURVhUU0laRSk7Cj4gLQkJCXVzYWdlKCk7Cj4gLQkJfQo+ICAJCXJ0ZXh0YmxvY2tzID0g KHhmc19leHRsZW5fdCkocnRleHRieXRlcyA+PiBibG9ja2xvZyk7Cj4gIAl9IGVsc2Ugewo+ICAJ CS8qCj4gLS0gCj4gMi4xLjAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwo+IHhmcyBtYWlsaW5nIGxpc3QKPiB4ZnNAb3NzLnNnaS5jb20KPiBodHRw Oi8vb3NzLnNnaS5jb20vbWFpbG1hbi9saXN0aW5mby94ZnMKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCnhmcyBtYWlsaW5nIGxpc3QKeGZzQG9zcy5zZ2ku Y29tCmh0dHA6Ly9vc3Muc2dpLmNvbS9tYWlsbWFuL2xpc3RpbmZvL3hmcwo=