Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nwTYi-0001Bl-QZ for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Jun 2022 18:59:10 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nwTYf-0003HS-TS for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Jun 2022 18:59:05 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nwTYe-0003FR-Iy for pgsql-hackers@lists.postgresql.org; Wed, 01 Jun 2022 18:59:05 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nwTYL-0004ni-VK for pgsql-hackers@lists.postgresql.org; Wed, 01 Jun 2022 18:59:03 +0000 Received: from [192.168.28.32] (cyclops.postgrespro.ru [93.174.131.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mail.postgrespro.ru (Postfix) with ESMTPSA id E55C921C2811; Wed, 1 Jun 2022 21:58:42 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1654109923; bh=+qaYLRMV1/5qfZT373JrJcwMaVnlzU2/zCY/UZyeKFs=; h=Date:From:Subject:To:Cc:References:In-Reply-To; b=DeamaEGaL/jptWd4fJLgPiv9fCfXugagG5TpNUOF/a+dofonM5ulcdv+OTsGnNTyL wbG4HZjzOPxKdhzRofwSnAIO1B/QtpSNUaPU+/ZSWQ+RGOnu/KJndPVIW0ZZ4ZO0FD z/Io3oNfzlxVPt9oN67xeh6cX0SKrfb5JtCluGwI= Content-Type: multipart/mixed; boundary="------------eM21MGCCSPBFH3Zad9qyj8Cf" Message-ID: <81aa663e-9785-5fc1-f711-10626cdeb365@postgrespro.ru> Date: Wed, 1 Jun 2022 21:58:42 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.9.1 From: Dmitry Koval Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands To: Zhihong Yu Cc: Matthias van de Meent , PostgreSQL Hackers References: <163714495450.16056.3566953095730878367@malur.postgresql.org> <28bcc918-ec5d-5287-963f-86c678db9ae0@postgrespro.ru> Content-Language: en-US In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------eM21MGCCSPBFH3Zad9qyj8Cf Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, 1) > For attachPartTable, the parameter wqueue is missing from comment. > The parameters of CloneRowTriggersToPartition are called parent and partition. > I think it is better to name the parameters to attachPartTable in a similar manner. > > For struct SplitPartContext, SplitPartitionContext would be better name. > > + /* Store partition contect into list. */ > contect -> context Thanks, changed. 2) > For transformPartitionCmdForMerge(), nested loop is used to detect duplicate names. > If the number of partitions in partcmd->partlist, we should utilize map to speed up the check. I'm not sure what we should utilize map in this case because chance that number of merging partitions exceed dozens is low. Is there a function example that uses a map for such a small number of elements? 3) > For check_parent_values_in_new_partitions(): > > + if (!find_value_in_new_partitions(&key->partsupfunc[0], > + key->partcollation, parts, nparts, datum, false)) > + found = false; > > It seems we can break out of the loop when found is false. We have implicit "break" in "for" construction: + for (i = 0; i < boundinfo->ndatums && found; i++) I'll change it to explicit "break;" to avoid confusion. Attached patch with the changes described above. -- With best regards, Dmitry Koval Postgres Professional: http://postgrespro.com --------------eM21MGCCSPBFH3Zad9qyj8Cf Content-Type: text/plain; charset=UTF-8; name="v3-0001-partitions-split-merge.patch" Content-Disposition: attachment; filename="v3-0001-partitions-split-merge.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggMmRlMGViYWNlYzMuLjNhMjUwNmQ5 Yzc5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtNjM0LDYgKzYzNCwxMSBA QCBzdGF0aWMgTGlzdCAqR2V0UGFyZW50ZWRGb3JlaWduS2V5UmVmcyhSZWxhdGlvbiBwYXJ0 aXRpb24pOwogc3RhdGljIHZvaWQgQVREZXRhY2hDaGVja05vRm9yZWlnbktleVJlZnMoUmVs YXRpb24gcGFydGl0aW9uKTsKIHN0YXRpYyBjaGFyIEdldEF0dHJpYnV0ZUNvbXByZXNzaW9u KE9pZCBhdHR0eXBpZCwgY2hhciAqY29tcHJlc3Npb24pOwogCitzdGF0aWMgdm9pZCBBVEV4 ZWNTcGxpdFBhcnRpdGlvbihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIs CisJCQkJCQkJCSBSZWxhdGlvbiByZWwsIFBhcnRpdGlvbkNtZCAqY21kLAorCQkJCQkJCQkg QWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsKK3N0YXRpYyB2b2lkIEFURXhl Y01lcmdlUGFydGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIs IFJlbGF0aW9uIHJlbCwKKwkJCQkJCQkJICBQYXJ0aXRpb25DbWQgKmNtZCwgQWx0ZXJUYWJs ZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCURlZmlu ZVJlbGF0aW9uCkBAIC00MzgzLDYgKzQzODgsMTQgQEAgQWx0ZXJUYWJsZUdldExvY2tMZXZl bChMaXN0ICpjbWRzKQogCQkJCWNtZF9sb2NrbW9kZSA9IFNoYXJlVXBkYXRlRXhjbHVzaXZl TG9jazsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBBVF9TcGxpdFBhcnRpdGlvbjoKKwkJCQlj bWRfbG9ja21vZGUgPSBBY2Nlc3NFeGNsdXNpdmVMb2NrOworCQkJCWJyZWFrOworCisJCQlj YXNlIEFUX01lcmdlUGFydGl0aW9uczoKKwkJCQljbWRfbG9ja21vZGUgPSBBY2Nlc3NFeGNs dXNpdmVMb2NrOworCQkJCWJyZWFrOworCiAJCQljYXNlIEFUX0NoZWNrTm90TnVsbDoKIAog CQkJCS8qCkBAIC00ODAzLDYgKzQ4MTYsMTYgQEAgQVRQcmVwQ21kKExpc3QgKip3cXVldWUs IFJlbGF0aW9uIHJlbCwgQWx0ZXJUYWJsZUNtZCAqY21kLAogCQkJLyogTm8gY29tbWFuZC1z cGVjaWZpYyBwcmVwIG5lZWRlZCAqLwogCQkJcGFzcyA9IEFUX1BBU1NfTUlTQzsKIAkJCWJy ZWFrOworCQljYXNlIEFUX1NwbGl0UGFydGl0aW9uOgorCQkJQVRTaW1wbGVQZXJtaXNzaW9u cyhjbWQtPnN1YnR5cGUsIHJlbCwgQVRUX1RBQkxFKTsKKwkJCS8qIE5vIGNvbW1hbmQtc3Bl Y2lmaWMgcHJlcCBuZWVkZWQgKi8KKwkJCXBhc3MgPSBBVF9QQVNTX01JU0M7CisJCQlicmVh azsKKwkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CisJCQlBVFNpbXBsZVBlcm1pc3Npb25z KGNtZC0+c3VidHlwZSwgcmVsLCBBVFRfVEFCTEUpOworCQkJLyogTm8gY29tbWFuZC1zcGVj aWZpYyBwcmVwIG5lZWRlZCAqLworCQkJcGFzcyA9IEFUX1BBU1NfTUlTQzsKKwkJCWJyZWFr OwogCQlkZWZhdWx0OgkJCQkvKiBvb3BzICovCiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25p emVkIGFsdGVyIHRhYmxlIHR5cGU6ICVkIiwKIAkJCQkgKGludCkgY21kLT5zdWJ0eXBlKTsK QEAgLTUyMDgsNiArNTIzMSwyMiBAQCBBVEV4ZWNDbWQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJl ZFRhYmxlSW5mbyAqdGFiLAogCQljYXNlIEFUX0RldGFjaFBhcnRpdGlvbkZpbmFsaXplOgog CQkJQVRFeGVjRGV0YWNoUGFydGl0aW9uRmluYWxpemUocmVsLCAoKFBhcnRpdGlvbkNtZCAq KSBjbWQtPmRlZiktPm5hbWUpOwogCQkJYnJlYWs7CisJCWNhc2UgQVRfU3BsaXRQYXJ0aXRp b246CisJCQljbWQgPSBBVFBhcnNlVHJhbnNmb3JtQ21kKHdxdWV1ZSwgdGFiLCByZWwsIGNt ZCwgZmFsc2UsIGxvY2ttb2RlLAorCQkJCQkJCQkJICBjdXJfcGFzcywgY29udGV4dCk7CisJ CQlBc3NlcnQoY21kICE9IE5VTEwpOworCQkJQXNzZXJ0KHJlbC0+cmRfcmVsLT5yZWxraW5k ID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpOworCQkJQVRFeGVjU3BsaXRQYXJ0aXRp b24od3F1ZXVlLCB0YWIsIHJlbCwgKFBhcnRpdGlvbkNtZCAqKSBjbWQtPmRlZiwKKwkJCQkJ CQkJIGNvbnRleHQpOworCQkJYnJlYWs7CisJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgor CQkJY21kID0gQVRQYXJzZVRyYW5zZm9ybUNtZCh3cXVldWUsIHRhYiwgcmVsLCBjbWQsIGZh bHNlLCBsb2NrbW9kZSwKKwkJCQkJCQkJCSAgY3VyX3Bhc3MsIGNvbnRleHQpOworCQkJQXNz ZXJ0KGNtZCAhPSBOVUxMKTsKKwkJCUFzc2VydChyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBS RUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKTsKKwkJCUFURXhlY01lcmdlUGFydGl0aW9ucyh3 cXVldWUsIHRhYiwgcmVsLCAoUGFydGl0aW9uQ21kICopIGNtZC0+ZGVmLAorCQkJCQkJCQkg IGNvbnRleHQpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CQkJCS8qIG9vcHMgKi8KIAkJCWVs b2coRVJST1IsICJ1bnJlY29nbml6ZWQgYWx0ZXIgdGFibGUgdHlwZTogJWQiLAogCQkJCSAo aW50KSBjbWQtPnN1YnR5cGUpOwpAQCAtNjE5NSw2ICs2MjM0LDEwIEBAIGFsdGVyX3RhYmxl X3R5cGVfdG9fc3RyaW5nKEFsdGVyVGFibGVUeXBlIGNtZHR5cGUpCiAJCQlyZXR1cm4gIkRF VEFDSCBQQVJUSVRJT04iOwogCQljYXNlIEFUX0RldGFjaFBhcnRpdGlvbkZpbmFsaXplOgog CQkJcmV0dXJuICJERVRBQ0ggUEFSVElUSU9OIC4uLiBGSU5BTElaRSI7CisJCWNhc2UgQVRf U3BsaXRQYXJ0aXRpb246CisJCQlyZXR1cm4gIlNQTElUIFBBUlRJVElPTiI7CisJCWNhc2Ug QVRfTWVyZ2VQYXJ0aXRpb25zOgorCQkJcmV0dXJuICJNRVJHRSBQQVJUSVRJT05TIjsKIAkJ Y2FzZSBBVF9BZGRJZGVudGl0eToKIAkJCXJldHVybiAiQUxURVIgQ09MVU1OIC4uLiBBREQg SURFTlRJVFkiOwogCQljYXNlIEFUX1NldElkZW50aXR5OgpAQCAtMTc2NDksNiArMTc2OTIs MzcgQEAgUXVldWVQYXJ0aXRpb25Db25zdHJhaW50VmFsaWRhdGlvbihMaXN0ICoqd3F1ZXVl LCBSZWxhdGlvbiBzY2FucmVsLAogCX0KIH0KIAorLyoKKyAqIGF0dGFjaFBhcnRUYWJsZTog YXR0YWNoIG5ldyBwYXJ0aXRpb24gdG8gcGFydGl0aW9uZWQgdGFibGUKKyAqCisgKiB3cXVl dWU6IHRoZSBBTFRFUiBUQUJMRSB3b3JrIHF1ZXVlOyBjYW4gYmUgTlVMTCB3aGVuIG5vdCBy dW5uaW5nIGFzIHBhcnQKKyAqICAgb2YgYW4gQUxURVIgVEFCTEUgc2VxdWVuY2UuCisgKiBy ZWw6IHBhcnRpdGlvbmVkIHJlbGF0aW9uOworICogcGFydGl0aW9uOiByZWxhdGlvbiBvZiBh dHRhY2hlZCBwYXJ0aXRpb247CisgKiBib3VuZDogYm91bmRzIG9mIGF0dGFjaGVkIHJlbGF0 aW9uLgorICovCitzdGF0aWMgdm9pZAorYXR0YWNoUGFydFRhYmxlKExpc3QgKip3cXVldWUs IFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gcGFydGl0aW9uLCBQYXJ0aXRpb25Cb3VuZFNwZWMg KmJvdW5kKQoreworCS8qIE9LIHRvIGNyZWF0ZSBpbmhlcml0YW5jZS4gIFJlc3Qgb2YgdGhl IGNoZWNrcyBwZXJmb3JtZWQgdGhlcmUgKi8KKwlDcmVhdGVJbmhlcml0YW5jZShwYXJ0aXRp b24sIHJlbCk7CisKKwkvKiBVcGRhdGUgdGhlIHBnX2NsYXNzIGVudHJ5LiAqLworCVN0b3Jl UGFydGl0aW9uQm91bmQocGFydGl0aW9uLCByZWwsIGJvdW5kKTsKKworCS8qIEVuc3VyZSB0 aGVyZSBleGlzdHMgYSBjb3JyZWN0IHNldCBvZiBpbmRleGVzIGluIHRoZSBwYXJ0aXRpb24u ICovCisJQXR0YWNoUGFydGl0aW9uRW5zdXJlSW5kZXhlcyhyZWwsIHBhcnRpdGlvbik7CisK KwkvKiBhbmQgdHJpZ2dlcnMgKi8KKwlDbG9uZVJvd1RyaWdnZXJzVG9QYXJ0aXRpb24ocmVs LCBwYXJ0aXRpb24pOworCisJLyoKKwkgKiBDbG9uZSBmb3JlaWduIGtleSBjb25zdHJhaW50 cy4gIENhbGxlZSBpcyByZXNwb25zaWJsZSBmb3Igc2V0dGluZyB1cAorCSAqIGZvciBwaGFz ZSAzIGNvbnN0cmFpbnQgdmVyaWZpY2F0aW9uLgorCSAqLworCUNsb25lRm9yZWlnbktleUNv bnN0cmFpbnRzKHdxdWV1ZSwgcmVsLCBwYXJ0aXRpb24pOworfQorCiAvKgogICogQUxURVIg VEFCTEUgPG5hbWU+IEFUVEFDSCBQQVJUSVRJT04gPHBhcnRpdGlvbi1uYW1lPiBGT1IgVkFM VUVTCiAgKgpAQCAtMTc4NDEsMjMgKzE3OTE1LDggQEAgQVRFeGVjQXR0YWNoUGFydGl0aW9u KExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgUGFydGl0aW9uQ21kICpjbWQsCiAJY2hl Y2tfbmV3X3BhcnRpdGlvbl9ib3VuZChSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhdHRhY2hy ZWwpLCByZWwsCiAJCQkJCQkJICBjbWQtPmJvdW5kLCBwc3RhdGUpOwogCi0JLyogT0sgdG8g Y3JlYXRlIGluaGVyaXRhbmNlLiAgUmVzdCBvZiB0aGUgY2hlY2tzIHBlcmZvcm1lZCB0aGVy ZSAqLwotCUNyZWF0ZUluaGVyaXRhbmNlKGF0dGFjaHJlbCwgcmVsKTsKLQotCS8qIFVwZGF0 ZSB0aGUgcGdfY2xhc3MgZW50cnkuICovCi0JU3RvcmVQYXJ0aXRpb25Cb3VuZChhdHRhY2hy ZWwsIHJlbCwgY21kLT5ib3VuZCk7Ci0KLQkvKiBFbnN1cmUgdGhlcmUgZXhpc3RzIGEgY29y cmVjdCBzZXQgb2YgaW5kZXhlcyBpbiB0aGUgcGFydGl0aW9uLiAqLwotCUF0dGFjaFBhcnRp dGlvbkVuc3VyZUluZGV4ZXMocmVsLCBhdHRhY2hyZWwpOwotCi0JLyogYW5kIHRyaWdnZXJz ICovCi0JQ2xvbmVSb3dUcmlnZ2Vyc1RvUGFydGl0aW9uKHJlbCwgYXR0YWNocmVsKTsKLQot CS8qCi0JICogQ2xvbmUgZm9yZWlnbiBrZXkgY29uc3RyYWludHMuICBDYWxsZWUgaXMgcmVz cG9uc2libGUgZm9yIHNldHRpbmcgdXAKLQkgKiBmb3IgcGhhc2UgMyBjb25zdHJhaW50IHZl cmlmaWNhdGlvbi4KLQkgKi8KLQlDbG9uZUZvcmVpZ25LZXlDb25zdHJhaW50cyh3cXVldWUs IHJlbCwgYXR0YWNocmVsKTsKKwkvKiBBdHRhY2ggcGFydGl0aW9uIHRvIHBhcnRpdGlvbmVk IHRhYmxlLiAqLworCWF0dGFjaFBhcnRUYWJsZSh3cXVldWUsIHJlbCwgYXR0YWNocmVsLCBj bWQtPmJvdW5kKTsKIAogCS8qCiAJICogR2VuZXJhdGUgcGFydGl0aW9uIGNvbnN0cmFpbnQg ZnJvbSB0aGUgcGFydGl0aW9uIGJvdW5kIHNwZWNpZmljYXRpb24uCkBAIC0xOTI4OCwzICsx OTM0Nyw2NjMgQEAgR2V0QXR0cmlidXRlQ29tcHJlc3Npb24oT2lkIGF0dHR5cGlkLCBjaGFy ICpjb21wcmVzc2lvbikKIAogCXJldHVybiBjbWV0aG9kOwogfQorCisvKgorICogU3RydWN0 IHdpdGggY29udGV4dCBvZiBuZXcgcGFydGl0aW9uIGZvciBpbnNlcnQgcm93cyBmcm9tIHNw bGl0ZWQgcGFydGl0aW9uCisgKi8KK3R5cGVkZWYgc3RydWN0IFNwbGl0UGFydGl0aW9uQ29u dGV4dAoreworCUV4cHJTdGF0ZSAgKnBhcnRxdWFsc3RhdGU7CS8qIGV4cHJlc3Npb24gZm9y IGNoZWNrIHNsb3QgZm9yIHBhcnRpdGlvbgorCQkJCQkJCQkgKiAoTlVMTCBmb3IgREVGQVVM VCBwYXJ0aXRpb24pICovCisJQnVsa0luc2VydFN0YXRlIGJpc3RhdGU7CS8qIHN0YXRlIG9m IGJ1bGsgaW5zZXJ0cyBmb3IgcGFydGl0aW9uICovCisJVHVwbGVUYWJsZVNsb3QgKmRzdHNs b3Q7CS8qIHNsb3QgZm9yIGluc2VydCByb3cgaW50byBwYXJ0aXRpb24gKi8KKwlSZWxhdGlv bglwYXJ0UmVsOwkJLyogcmVsYXRpb24gZm9yIHBhcnRpdGlvbiAqLworfQkJCVNwbGl0UGFy dGl0aW9uQ29udGV4dDsKKworCisvKgorICogY3JlYXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0 OiBjcmVhdGUgY29udGV4dCBmb3IgcGFydGl0aW9uIGFuZCBmaWxsIGl0CisgKi8KK3N0YXRp YyBTcGxpdFBhcnRpdGlvbkNvbnRleHQgKgorY3JlYXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0 KFJlbGF0aW9uIHBhcnRSZWwpCit7CisJU3BsaXRQYXJ0aXRpb25Db250ZXh0ICpwYzsKKwor CXBjID0gKFNwbGl0UGFydGl0aW9uQ29udGV4dCAqKSBwYWxsb2MwKHNpemVvZihTcGxpdFBh cnRpdGlvbkNvbnRleHQpKTsKKwlwYy0+cGFydFJlbCA9IHBhcnRSZWw7CisKKwkvKgorCSAq IFByZXBhcmUgYSBCdWxrSW5zZXJ0U3RhdGUgZm9yIHRhYmxlX3R1cGxlX2luc2VydC4gVGhl IEZTTSBpcyBlbXB0eSwgc28KKwkgKiBkb24ndCBib3RoZXIgdXNpbmcgaXQuCisJICovCisJ cGMtPmJpc3RhdGUgPSBHZXRCdWxrSW5zZXJ0U3RhdGUoKTsKKworCS8qIENyZWF0ZSB0dXBs ZSBzbG90IGZvciBuZXcgcGFydGl0aW9uLiAqLworCXBjLT5kc3RzbG90ID0gTWFrZVNpbmds ZVR1cGxlVGFibGVTbG90KFJlbGF0aW9uR2V0RGVzY3IocGMtPnBhcnRSZWwpLAorCQkJCQkJ CQkJCSAgIHRhYmxlX3Nsb3RfY2FsbGJhY2tzKHBjLT5wYXJ0UmVsKSk7CisJRXhlY1N0b3Jl QWxsTnVsbFR1cGxlKHBjLT5kc3RzbG90KTsKKworCXJldHVybiBwYzsKK30KKworLyoKKyAq IGRlbGV0ZVNwbGl0UGFydGl0aW9uQ29udGV4dDogZGVsZXRlIGNvbnRleHQgZm9yIHBhcnRp dGlvbgorICovCitzdGF0aWMgdm9pZAorZGVsZXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0KFNw bGl0UGFydGl0aW9uQ29udGV4dCAqIHBjLCBpbnQgdGlfb3B0aW9ucykKK3sKKwlFeGVjRHJv cFNpbmdsZVR1cGxlVGFibGVTbG90KHBjLT5kc3RzbG90KTsKKwlGcmVlQnVsa0luc2VydFN0 YXRlKHBjLT5iaXN0YXRlKTsKKworCXRhYmxlX2ZpbmlzaF9idWxrX2luc2VydChwYy0+cGFy dFJlbCwgdGlfb3B0aW9ucyk7CisKKwlwZnJlZShwYyk7Cit9CisKKy8qCisgKiBtb3ZlU3Bs aXRUYWJsZVJvd3M6IHNjYW4gc3BsaXQgcGFydGl0aW9uIChzcGxpdFJlbCkgb2YgcGFydGl0 aW9uZWQgdGFibGUKKyAqIChyZWwpIGFuZCBtb3ZlIHJvd3MgaW50byBuZXcgcGFydGl0aW9u cy4KKyAqCisgKiBOZXcgcGFydGl0aW9ucyBkZXNjcmlwdGlvbjoKKyAqIHBhcnRsaXN0OiBs aXN0IG9mIHBvaW50ZXJzIHRvIFNpbmdsZVBhcnRpdGlvblNwZWMgc3RydWN0dXJlcy4KKyAq IG5ld1BhcnRSZWxzOiBsaXN0IG9mIFJlbGF0aW9uJ3MuCisgKiBkZWZhdWx0UGFydE9pZDog b2lkIG9mIERFRkFVTFQgcGFydGl0aW9uLCBmb3IgdGFibGUgcmVsLgorICovCitzdGF0aWMg dm9pZAorbW92ZVNwbGl0VGFibGVSb3dzKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gc3BsaXRS ZWwsIExpc3QgKnBhcnRsaXN0LCBMaXN0ICpuZXdQYXJ0UmVscywgT2lkIGRlZmF1bHRQYXJ0 T2lkKQoreworCS8qIFRoZSBGU00gaXMgZW1wdHksIHNvIGRvbid0IGJvdGhlciB1c2luZyBp dC4gKi8KKwlpbnQJCQl0aV9vcHRpb25zID0gVEFCTEVfSU5TRVJUX1NLSVBfRlNNOworCUNv bW1hbmRJZAlteWNpZDsKKwlFU3RhdGUJICAgKmVzdGF0ZTsKKwlMaXN0Q2VsbCAgICpsaXN0 cHRyLAorCQkJICAgKmxpc3RwdHIyOworCVR1cGxlVGFibGVTbG90ICpzcmNzbG90OworCUV4 cHJDb250ZXh0ICplY29udGV4dDsKKwlUYWJsZVNjYW5EZXNjIHNjYW47CisJU25hcHNob3QJ c25hcHNob3Q7CisJTWVtb3J5Q29udGV4dCBvbGRDeHQ7CisJTGlzdAkgICAqcGFydENvbnRl eHRzID0gTklMOworCVR1cGxlQ29udmVyc2lvbk1hcCAqdHVwbGVfbWFwOworCVNwbGl0UGFy dGl0aW9uQ29udGV4dCAqZGVmYXVsdFBhcnRDdHggPSBOVUxMLAorCQkJICAgKnBjOworCWJv b2wJCWlzT2xkRGVmYXVsdFBhcnQgPSBmYWxzZTsKKworCW15Y2lkID0gR2V0Q3VycmVudENv bW1hbmRJZCh0cnVlKTsKKworCWVzdGF0ZSA9IENyZWF0ZUV4ZWN1dG9yU3RhdGUoKTsKKwor CWZvcmJvdGgobGlzdHB0ciwgcGFydGxpc3QsIGxpc3RwdHIyLCBuZXdQYXJ0UmVscykKKwl7 CisJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwcyA9IChTaW5nbGVQYXJ0aXRpb25TcGVjICop IGxmaXJzdChsaXN0cHRyKTsKKworCQlwYyA9IGNyZWF0ZVNwbGl0UGFydGl0aW9uQ29udGV4 dCgoUmVsYXRpb24pIGxmaXJzdChsaXN0cHRyMikpOworCisJCWlmIChzcHMtPmJvdW5kLT5p c19kZWZhdWx0KQorCQl7CisJCQkvKiBXZSBzaG91bGQgbm90IGNyZWF0ZSBjb25zdHJhaW50 IGZvciBkZXRhY2hlZCBERUZBVUxUIHBhcnRpdGlvbi4gKi8KKwkJCWRlZmF1bHRQYXJ0Q3R4 ID0gcGM7CisJCX0KKwkJZWxzZQorCQl7CisJCQlMaXN0CSAgICpwYXJ0Q29uc3RyYWludDsK KworCQkJLyogQnVpbGQgZXhwcmVzc2lvbiBleGVjdXRpb24gc3RhdGVzIGZvciBwYXJ0aXRp b24gY2hlY2sgcXVhbHMuICovCisJCQlwYXJ0Q29uc3RyYWludCA9IGdldF9xdWFsX2Zyb21f cGFydGJvdW5kKHJlbCwgc3BzLT5ib3VuZCk7CisJCQlwYXJ0Q29uc3RyYWludCA9CisJCQkJ KExpc3QgKikgZXZhbF9jb25zdF9leHByZXNzaW9ucyhOVUxMLAorCQkJCQkJCQkJCQkJKE5v ZGUgKikgcGFydENvbnN0cmFpbnQpOworCQkJLyogTWFrZSBib29sZWFuIGV4cHJlc3Npb24g Zm9yIEV4ZWNDaGVjaygpLiAqLworCQkJcGFydENvbnN0cmFpbnQgPSBsaXN0X21ha2UxKG1h a2VfYW5kc19leHBsaWNpdChwYXJ0Q29uc3RyYWludCkpOworCisJCQkvKgorCQkJICogTWFw IHRoZSB2YXJzIGluIHRoZSBjb25zdHJhaW50IGV4cHJlc3Npb24gZnJvbSByZWwncyBhdHRu b3MgdG8KKwkJCSAqIHNwbGl0UmVsJ3MuCisJCQkgKi8KKwkJCXBhcnRDb25zdHJhaW50ID0g bWFwX3BhcnRpdGlvbl92YXJhdHRub3MocGFydENvbnN0cmFpbnQsCisJCQkJCQkJCQkJCQkJ IDEsIHNwbGl0UmVsLCByZWwpOworCisJCQlwYy0+cGFydHF1YWxzdGF0ZSA9CisJCQkJRXhl Y1ByZXBhcmVFeHByKChFeHByICopIGxpbml0aWFsKHBhcnRDb25zdHJhaW50KSwgZXN0YXRl KTsKKwkJCUFzc2VydChwYy0+cGFydHF1YWxzdGF0ZSAhPSBOVUxMKTsKKwkJfQorCisJCS8q IFN0b3JlIHBhcnRpdGlvbiBjb250ZXh0IGludG8gbGlzdC4gKi8KKwkJcGFydENvbnRleHRz ID0gbGFwcGVuZChwYXJ0Q29udGV4dHMsIHBjKTsKKwl9CisKKwkvKgorCSAqIENyZWF0ZSBw YXJ0aXRpb24gY29udGV4dCBmb3IgREVGQVVMVCBwYXJ0aXRpb24uIFdlIGNhbiBpbnNlcnQg dmFsdWVzCisJICogaW50byB0aGlzIHBhcnRpdGlvbiBpbiBjYXNlIHNwYWNlcyB3aXRoIHZh bHVlcyBiZXR3ZWVuIG5ldyBwYXJ0aXRpb25zLgorCSAqLworCWlmICghZGVmYXVsdFBhcnRD dHggJiYgT2lkSXNWYWxpZChkZWZhdWx0UGFydE9pZCkpCisJeworCQlwYyA9IGNyZWF0ZVNw bGl0UGFydGl0aW9uQ29udGV4dCh0YWJsZV9vcGVuKGRlZmF1bHRQYXJ0T2lkLCBBY2Nlc3NF eGNsdXNpdmVMb2NrKSk7CisKKwkJLyogSW5kaWNhdGUgdGhhdCB3ZSBhbGxvY2F0ZSBjb250 ZXh0IGZvciBvbGQgREVGQVVMVCBwYXJ0aXRpb24gKi8KKwkJaXNPbGREZWZhdWx0UGFydCA9 IHRydWU7CisJCWRlZmF1bHRQYXJ0Q3R4ID0gcGM7CisJfQorCisJZWNvbnRleHQgPSBHZXRQ ZXJUdXBsZUV4cHJDb250ZXh0KGVzdGF0ZSk7CisKKwkvKiBDcmVhdGUgbmVjZXNzYXJ5IHR1 cGxlIHNsb3QuICovCisJc3Jjc2xvdCA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdChSZWxh dGlvbkdldERlc2NyKHNwbGl0UmVsKSwKKwkJCQkJCQkJCSAgIHRhYmxlX3Nsb3RfY2FsbGJh Y2tzKHNwbGl0UmVsKSk7CisKKwkvKgorCSAqIE1hcCBjb21wdXRpbmcgZm9yIG1vdmluZyBh dHRyaWJ1dGVzIG9mIHNwbGl0IHBhcnRpdGlvbiB0byBuZXcgcGFydGl0aW9uCisJICogKGZv ciBmaXJzdCBuZXcgcGFydGl0aW9uIGJ1dCBvdGhlciBuZXcgcGFydGl0aW9ucyBjYW4gdXNl IHRoZSBzYW1lCisJICogbWFwKS4KKwkgKi8KKwlwYyA9IChTcGxpdFBhcnRpdGlvbkNvbnRl eHQgKikgbGZpcnN0KGxpc3RfaGVhZChwYXJ0Q29udGV4dHMpKTsKKwl0dXBsZV9tYXAgPSBj b252ZXJ0X3R1cGxlc19ieV9uYW1lKFJlbGF0aW9uR2V0RGVzY3Ioc3BsaXRSZWwpLAorCQkJ CQkJCQkJICAgUmVsYXRpb25HZXREZXNjcihwYy0+cGFydFJlbCkpOworCisJLyogU2NhbiB0 aHJvdWdoIHRoZSByb3dzLiAqLworCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRM YXRlc3RTbmFwc2hvdCgpKTsKKwlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHNwbGl0UmVsLCBz bmFwc2hvdCwgMCwgTlVMTCk7CisKKwkvKgorCSAqIFN3aXRjaCB0byBwZXItdHVwbGUgbWVt b3J5IGNvbnRleHQgYW5kIHJlc2V0IGl0IGZvciBlYWNoIHR1cGxlCisJICogcHJvZHVjZWQs IHNvIHdlIGRvbid0IGxlYWsgbWVtb3J5LgorCSAqLworCW9sZEN4dCA9IE1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhHZXRQZXJUdXBsZU1lbW9yeUNvbnRleHQoZXN0YXRlKSk7CisKKwl3aGls ZSAodGFibGVfc2Nhbl9nZXRuZXh0c2xvdChzY2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwg c3Jjc2xvdCkpCisJeworCQlTcGxpdFBhcnRpdGlvbkNvbnRleHQgKnBjOworCQlib29sCQlm b3VuZCA9IGZhbHNlOworCQlUdXBsZVRhYmxlU2xvdCAqaW5zZXJ0c2xvdDsKKworCQkvKiBF eHRyYWN0IGRhdGEgZnJvbSBvbGQgdHVwbGUuICovCisJCXNsb3RfZ2V0YWxsYXR0cnMoc3Jj c2xvdCk7CisKKwkJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0gc3Jjc2xvdDsKKworCQkv KiBTZWFyY2ggcGFydGl0aW9uIGZvciBjdXJyZW50IHNsb3Qgc3Jjc2xvdC4gKi8KKwkJZm9y ZWFjaChsaXN0cHRyLCBwYXJ0Q29udGV4dHMpCisJCXsKKwkJCXBjID0gKFNwbGl0UGFydGl0 aW9uQ29udGV4dCAqKSBsZmlyc3QobGlzdHB0cik7CisKKwkJCWlmIChwYy0+cGFydHF1YWxz dGF0ZSAvKiBza2lwIERFRkFVTFQgcGFydGl0aW9uICovICYmCisJCQkJRXhlY0NoZWNrKHBj LT5wYXJ0cXVhbHN0YXRlLCBlY29udGV4dCkpCisJCQl7CisJCQkJZm91bmQgPSB0cnVlOwor CQkJCWJyZWFrOworCQkJfQorCQkJUmVzZXRFeHByQ29udGV4dChlY29udGV4dCk7CisJCX0K KwkJaWYgKCFmb3VuZCkKKwkJeworCQkJLyogVXNlIERFRkFVTFQgcGFydGl0aW9uIGlmIGl0 IGV4aXN0cy4gKi8KKwkJCWlmIChkZWZhdWx0UGFydEN0eCkKKwkJCQlwYyA9IGRlZmF1bHRQ YXJ0Q3R4OworCQkJZWxzZQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShF UlJDT0RFX0NIRUNLX1ZJT0xBVElPTiksCisJCQkJCQkgZXJybXNnKCJjYW4gbm90IGZpbmQg cGFydGl0aW9uIGZvciBzcGxpdCBwYXJ0aXRpb24gcm93IiksCisJCQkJCQkgZXJydGFibGUo c3BsaXRSZWwpKSk7CisJCX0KKworCQlpZiAodHVwbGVfbWFwKQorCQl7CisJCQkvKiBOZWVk IHRvIHVzZSBtYXAgZm9yIGNvcHkgYXR0cmlidXRlcy4gKi8KKwkJCWluc2VydHNsb3QgPSBl eGVjdXRlX2F0dHJfbWFwX3Nsb3QodHVwbGVfbWFwLT5hdHRyTWFwLCBzcmNzbG90LCBwYy0+ ZHN0c2xvdCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKiBDb3B5IGF0dHJpYnV0ZXMgZGly ZWN0bHkuICovCisJCQlpbnNlcnRzbG90ID0gcGMtPmRzdHNsb3Q7CisKKwkJCUV4ZWNDbGVh clR1cGxlKGluc2VydHNsb3QpOworCisJCQltZW1jcHkoaW5zZXJ0c2xvdC0+dHRzX3ZhbHVl cywgc3Jjc2xvdC0+dHRzX3ZhbHVlcywKKwkJCQkgICBzaXplb2YoRGF0dW0pICogc3Jjc2xv dC0+dHRzX252YWxpZCk7CisJCQltZW1jcHkoaW5zZXJ0c2xvdC0+dHRzX2lzbnVsbCwgc3Jj c2xvdC0+dHRzX2lzbnVsbCwKKwkJCQkgICBzaXplb2YoYm9vbCkgKiBzcmNzbG90LT50dHNf bnZhbGlkKTsKKworCQkJRXhlY1N0b3JlVmlydHVhbFR1cGxlKGluc2VydHNsb3QpOworCQl9 CisKKwkJLyogV3JpdGUgdGhlIHR1cGxlIG91dCB0byB0aGUgbmV3IHJlbGF0aW9uLiAqLwor CQl0YWJsZV90dXBsZV9pbnNlcnQocGMtPnBhcnRSZWwsIGluc2VydHNsb3QsIG15Y2lkLCB0 aV9vcHRpb25zLCBwYy0+YmlzdGF0ZSk7CisKKwkJUmVzZXRFeHByQ29udGV4dChlY29udGV4 dCk7CisKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwl9CisKKwlNZW1vcnlDb250ZXh0 U3dpdGNoVG8ob2xkQ3h0KTsKKworCXRhYmxlX2VuZHNjYW4oc2Nhbik7CisJVW5yZWdpc3Rl clNuYXBzaG90KHNuYXBzaG90KTsKKworCWlmICh0dXBsZV9tYXApCisJCWZyZWVfY29udmVy c2lvbl9tYXAodHVwbGVfbWFwKTsKKworCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qo c3Jjc2xvdCk7CisKKwlGcmVlRXhlY3V0b3JTdGF0ZShlc3RhdGUpOworCisJZm9yZWFjaChs aXN0cHRyLCBwYXJ0Q29udGV4dHMpCisJCWRlbGV0ZVNwbGl0UGFydGl0aW9uQ29udGV4dCgo U3BsaXRQYXJ0aXRpb25Db250ZXh0ICopIGxmaXJzdChsaXN0cHRyKSwgdGlfb3B0aW9ucyk7 CisKKwkvKiBOZWVkIHRvIGNsb3NlIHRhYmxlIGFuZCBmcmVlIGJ1ZmZlcnMgZm9yIERFRkFV TFQgcGFydGl0aW9uLiAqLworCWlmIChpc09sZERlZmF1bHRQYXJ0KQorCXsKKwkJLyogS2Vl cCB0aGUgbG9jayB1bnRpbCBjb21taXQuICovCisJCXRhYmxlX2Nsb3NlKGRlZmF1bHRQYXJ0 Q3R4LT5wYXJ0UmVsLCBOb0xvY2spOworCQlkZWxldGVTcGxpdFBhcnRpdGlvbkNvbnRleHQo ZGVmYXVsdFBhcnRDdHgsIHRpX29wdGlvbnMpOworCX0KK30KKworLyoKKyAqIGNyZWF0ZVBh cnRpdGlvblRhYmxlOiBjcmVhdGUgdGFibGUgZm9yIG5ldyBwYXJ0aXRpb24gd2l0aCBnaXZl biBuYW1lCisgKiAobmV3UGFydE5hbWUpIGxpa2UgdGFibGUgKG1vZGVsUmVsTmFtZSkKKyAq CisgKiBFbXVsYXRlcyBjb21tYW5kOiBDUkVBVEUgVEFCTEUgPG5ld1BhcnROYW1lPiAoTElL RSA8bW9kZWxSZWxOYW1lPgorICogSU5DTFVESU5HIEFMTCBFWENMVURJTkcgSU5ERVhFUykK KyAqLworc3RhdGljIHZvaWQKK2NyZWF0ZVBhcnRpdGlvblRhYmxlKFJhbmdlVmFyICpuZXdQ YXJ0TmFtZSwgUmFuZ2VWYXIgKm1vZGVsUmVsTmFtZSwKKwkJCQkJIEFsdGVyVGFibGVVdGls aXR5Q29udGV4dCAqY29udGV4dCkKK3sKKwlDcmVhdGVTdG10ICpjcmVhdGVTdG10OworCVRh YmxlTGlrZUNsYXVzZSAqdGxjOworCVBsYW5uZWRTdG10ICp3cmFwcGVyOworCisJY3JlYXRl U3RtdCA9IG1ha2VOb2RlKENyZWF0ZVN0bXQpOworCWNyZWF0ZVN0bXQtPnJlbGF0aW9uID0g bmV3UGFydE5hbWU7CisJY3JlYXRlU3RtdC0+dGFibGVFbHRzID0gTklMOworCWNyZWF0ZVN0 bXQtPmluaFJlbGF0aW9ucyA9IE5JTDsKKwljcmVhdGVTdG10LT5jb25zdHJhaW50cyA9IE5J TDsKKwljcmVhdGVTdG10LT5vcHRpb25zID0gTklMOworCWNyZWF0ZVN0bXQtPm9uY29tbWl0 ID0gT05DT01NSVRfTk9PUDsKKwljcmVhdGVTdG10LT50YWJsZXNwYWNlbmFtZSA9IE5VTEw7 CisJY3JlYXRlU3RtdC0+aWZfbm90X2V4aXN0cyA9IGZhbHNlOworCisJdGxjID0gbWFrZU5v ZGUoVGFibGVMaWtlQ2xhdXNlKTsKKwl0bGMtPnJlbGF0aW9uID0gbW9kZWxSZWxOYW1lOwor CisJLyoKKwkgKiBJbmRleGVzIHdpbGwgYmUgaW5oZXJpdGVkIG9uICJhdHRhY2ggbmV3IHBh cnRpdGlvbnMiIHN0YWdlLCBhZnRlciBkYXRhCisJICogbW92aW5nLgorCSAqLworCXRsYy0+ b3B0aW9ucyA9IENSRUFURV9UQUJMRV9MSUtFX0FMTCAmIH5DUkVBVEVfVEFCTEVfTElLRV9J TkRFWEVTOworCXRsYy0+cmVsYXRpb25PaWQgPSBJbnZhbGlkT2lkOworCWNyZWF0ZVN0bXQt PnRhYmxlRWx0cyA9IGxhcHBlbmQoY3JlYXRlU3RtdC0+dGFibGVFbHRzLCB0bGMpOworCisJ LyogTmVlZCB0byBtYWtlIGEgd3JhcHBlciBQbGFubmVkU3RtdC4gKi8KKwl3cmFwcGVyID0g bWFrZU5vZGUoUGxhbm5lZFN0bXQpOworCXdyYXBwZXItPmNvbW1hbmRUeXBlID0gQ01EX1VU SUxJVFk7CisJd3JhcHBlci0+Y2FuU2V0VGFnID0gZmFsc2U7CisJd3JhcHBlci0+dXRpbGl0 eVN0bXQgPSAoTm9kZSAqKSBjcmVhdGVTdG10OworCXdyYXBwZXItPnN0bXRfbG9jYXRpb24g PSBjb250ZXh0LT5wc3RtdC0+c3RtdF9sb2NhdGlvbjsKKwl3cmFwcGVyLT5zdG10X2xlbiA9 IGNvbnRleHQtPnBzdG10LT5zdG10X2xlbjsKKworCVByb2Nlc3NVdGlsaXR5KHdyYXBwZXIs CisJCQkJICAgY29udGV4dC0+cXVlcnlTdHJpbmcsCisJCQkJICAgZmFsc2UsCisJCQkJICAg UFJPQ0VTU19VVElMSVRZX1NVQkNPTU1BTkQsCisJCQkJICAgTlVMTCwKKwkJCQkgICBOVUxM LAorCQkJCSAgIE5vbmVfUmVjZWl2ZXIsCisJCQkJICAgTlVMTCk7Cit9CisKKy8qCisgKiBB TFRFUiBUQUJMRSA8bmFtZT4gU1BMSVQgUEFSVElUSU9OIDxwYXJ0aXRpb24tbmFtZT4gSU5U TyA8cGFydGl0aW9uLWxpc3Q+CisgKi8KK3N0YXRpYyB2b2lkCitBVEV4ZWNTcGxpdFBhcnRp dGlvbihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJl bCwKKwkJCQkJIFBhcnRpdGlvbkNtZCAqY21kLCBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQg KmNvbnRleHQpCit7CisJUmVsYXRpb24Jc3BsaXRSZWw7CisJT2lkCQkJc3BsaXRSZWxPaWQ7 CisJY2hhcgkJcmVsbmFtZVtOQU1FREFUQUxFTl07CisJT2lkCQkJbmFtZXNwYWNlSWQ7CisJ TGlzdENlbGwgICAqbGlzdHB0ciwKKwkJCSAgICpsaXN0cHRyMjsKKwlib29sCQlpc1NhbWVO YW1lID0gZmFsc2U7CisJY2hhcgkJdG1wUmVsTmFtZVtOQU1FREFUQUxFTl07CisJTGlzdAkg ICAqbmV3UGFydFJlbHMgPSBOSUw7CisJT2JqZWN0QWRkcmVzcyBvYmplY3Q7CisJUmFuZ2VW YXIgICAqc3BsaXRQYXJ0TmFtZSA9IGNtZC0+bmFtZTsKKwlPaWQJCQlkZWZhdWx0UGFydE9p ZDsKKworCWRlZmF1bHRQYXJ0T2lkID0gZ2V0X2RlZmF1bHRfb2lkX2Zyb21fcGFydGRlc2Mo UmVsYXRpb25HZXRQYXJ0aXRpb25EZXNjKHJlbCwgdHJ1ZSkpOworCisJLyoKKwkgKiBXZSBh cmUgZ29pbmcgdG8gZGV0YWNoIGFuZCByZW1vdmUgdGhpcyBwYXJ0aXRpb246IG5lZWQgdG8g dXNlIGV4Y2x1c2l2ZQorCSAqIGxvY2sgZm9yIHByZXZlbnQgRE1MLXF1ZXJpZXMgdG8gdGhl IHBhcnRpdGlvbi4KKwkgKi8KKwlzcGxpdFJlbCA9IHRhYmxlX29wZW5ydihzcGxpdFBhcnRO YW1lLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCWlmIChzcGxpdFJlbC0+cmRfcmVsLT5y ZWxraW5kICE9IFJFTEtJTkRfUkVMQVRJT04pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVy cmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJIGVycm1zZygiY2Fubm90 IHNwbGl0IG5vbi10YWJsZSBwYXJ0aXRpb24gXCIlc1wiIiwKKwkJCQkJCVJlbGF0aW9uR2V0 UmVsYXRpb25OYW1lKHNwbGl0UmVsKSkpKTsKKworCXNwbGl0UmVsT2lkID0gUmVsYXRpb25H ZXRSZWxpZChzcGxpdFJlbCk7CisKKwkvKiBDaGVjayBkZXNjcmlwdGlvbnMgb2YgbmV3IHBh cnRpdGlvbnMuICovCisJZm9yZWFjaChsaXN0cHRyLCBjbWQtPnBhcnRsaXN0KQorCXsKKwkJ T2lkCQkJZXhpc3RpbmdfcmVsaWQ7CisJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwcyA9IChT aW5nbGVQYXJ0aXRpb25TcGVjICopIGxmaXJzdChsaXN0cHRyKTsKKworCQlzdHJsY3B5KHJl bG5hbWUsIHNwcy0+bmFtZS0+cmVsbmFtZSwgTkFNRURBVEFMRU4pOworCisJCS8qCisJCSAq IExvb2sgdXAgdGhlIG5hbWVzcGFjZSBpbiB3aGljaCB3ZSBhcmUgc3VwcG9zZWQgdG8gY3Jl YXRlIHRoZQorCQkgKiBwYXJ0aXRpb24sIGNoZWNrIHdlIGhhdmUgcGVybWlzc2lvbiB0byBj cmVhdGUgdGhlcmUsIGxvY2sgaXQKKwkJICogYWdhaW5zdCBjb25jdXJyZW50IGRyb3AsIGFu ZCBtYXJrIHN0bXQtPnJlbGF0aW9uIGFzCisJCSAqIFJFTFBFUlNJU1RFTkNFX1RFTVAgaWYg YSB0ZW1wb3JhcnkgbmFtZXNwYWNlIGlzIHNlbGVjdGVkLgorCQkgKi8KKwkJbmFtZXNwYWNl SWQgPQorCQkJUmFuZ2VWYXJHZXRBbmRDaGVja0NyZWF0aW9uTmFtZXNwYWNlKHNwcy0+bmFt ZSwgTm9Mb2NrLCBOVUxMKTsKKworCQkvKgorCQkgKiBUaGlzIHdvdWxkIGZhaWwgbGF0ZXIg b24gYW55d2F5LCBpZiB0aGUgcmVsYXRpb24gYWxyZWFkeSBleGlzdHMuCisJCSAqIEJ1dCBi eSBjYXRjaGluZyBpdCBoZXJlIHdlIGNhbiBlbWl0IGEgbmljZXIgZXJyb3IgbWVzc2FnZS4K KwkJICovCisJCWV4aXN0aW5nX3JlbGlkID0gZ2V0X3JlbG5hbWVfcmVsaWQocmVsbmFtZSwg bmFtZXNwYWNlSWQpOworCQlpZiAoZXhpc3RpbmdfcmVsaWQgPT0gc3BsaXRSZWxPaWQgJiYg IWlzU2FtZU5hbWUpCisJCQkvKiBPbmUgbmV3IHBhcnRpdGlvbiBjYW4gaGF2ZSB0aGUgc2Ft ZSBuYW1lIGFzIHNwbGl0IHBhcnRpdGlvbi4gKi8KKwkJCWlzU2FtZU5hbWUgPSB0cnVlOwor CQllbHNlIGlmIChleGlzdGluZ19yZWxpZCAhPSBJbnZhbGlkT2lkKQorCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfVEFCTEUpLAorCQkJCQkg ZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgYWxyZWFkeSBleGlzdHMiLCByZWxuYW1lKSkpOwor CX0KKworCS8qIERldGFjaCBzcGxpdCBwYXJ0aXRpb24uICovCisJUmVtb3ZlSW5oZXJpdGFu Y2Uoc3BsaXRSZWwsIHJlbCwgZmFsc2UpOworCS8qIERvIHRoZSBmaW5hbCBwYXJ0IG9mIGRl dGFjaGluZy4gKi8KKwlEZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZShyZWwsIHNwbGl0UmVsLCBm YWxzZSwgZGVmYXVsdFBhcnRPaWQpOworCisJLyoKKwkgKiBJZiBuZXcgcGFydGl0aW9uIGhh cyB0aGUgc2FtZSBuYW1lIGFzIHNwbGl0IHBhcnRpdGlvbiB0aGVuIHdlIHNob3VsZAorCSAq IHJlbmFtZSBzcGxpdCBwYXJ0aXRpb24gZm9yIHJldXNlIG5hbWUuCisJICovCisJaWYgKGlz U2FtZU5hbWUpCisJeworCQkvKgorCQkgKiBXZSBtdXN0IGJ1bXAgdGhlIGNvbW1hbmQgY291 bnRlciB0byBtYWtlIHRoZSBzcGxpdCBwYXJ0aXRpb24gdHVwbGUKKwkJICogdmlzaWJsZSBm b3IgcmVuYW1lLgorCQkgKi8KKwkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKwkJLyog UmVuYW1lIHBhcnRpdGlvbi4gKi8KKwkJc3ByaW50Zih0bXBSZWxOYW1lLCAic3BsaXQtJXUt JVgtdG1wIiwgUmVsYXRpb25HZXRSZWxpZChyZWwpLCBNeVByb2NQaWQpOworCQlSZW5hbWVS ZWxhdGlvbkludGVybmFsKHNwbGl0UmVsT2lkLCB0bXBSZWxOYW1lLCBmYWxzZSwgZmFsc2Up OworCQlzcGxpdFBhcnROYW1lID0gbWFrZVJhbmdlVmFyKAorCQkJCQkJCQkJIGdldF9uYW1l c3BhY2VfbmFtZShSZWxhdGlvbkdldE5hbWVzcGFjZShzcGxpdFJlbCkpLAorCQkJCQkJCQkJ IHRtcFJlbE5hbWUsIC0xKTsKKworCQkvKgorCQkgKiBXZSBtdXN0IGJ1bXAgdGhlIGNvbW1h bmQgY291bnRlciB0byBtYWtlIHRoZSBzcGxpdCBwYXJ0aXRpb24gdHVwbGUKKwkJICogdmlz aWJsZSBhZnRlciByZW5hbWUuCisJCSAqLworCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgp OworCX0KKworCS8qIENyZWF0ZSBuZXcgcGFydGl0aW9ucyAobGlrZSBzcGxpdCBwYXJ0aXRp b24pLCB3aXRob3V0IGluZGV4ZXMuICovCisJZm9yZWFjaChsaXN0cHRyLCBjbWQtPnBhcnRs aXN0KQorCXsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0gKFNpbmdsZVBhcnRpdGlv blNwZWMgKikgbGZpcnN0KGxpc3RwdHIpOworCQlSZWxhdGlvbgluZXdQYXJ0UmVsOworCisJ CWNyZWF0ZVBhcnRpdGlvblRhYmxlKHNwcy0+bmFtZSwgc3BsaXRQYXJ0TmFtZSwgY29udGV4 dCk7CisKKwkJLyogT3BlbiB0aGUgbmV3IHBhcnRpdGlvbiBhbmQgYWNxdWlyZSBleGNsdXNp dmUgbG9jayBvbiBpdC4gKi8KKwkJbmV3UGFydFJlbCA9IHRhYmxlX29wZW5ydihzcHMtPm5h bWUsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJCW5ld1BhcnRSZWxzID0gbGFwcGVuZChu ZXdQYXJ0UmVscywgbmV3UGFydFJlbCk7CisJfQorCisJLyogQ29weSBkYXRhIGZyb20gc3Bs aXQgcGFydGl0aW9uIHRvIG5ldyBwYXJ0aXRpb25zLiAqLworCW1vdmVTcGxpdFRhYmxlUm93 cyhyZWwsIHNwbGl0UmVsLCBjbWQtPnBhcnRsaXN0LCBuZXdQYXJ0UmVscywgZGVmYXVsdFBh cnRPaWQpOworCS8qIEtlZXAgdGhlIGxvY2sgdW50aWwgY29tbWl0LiAqLworCXRhYmxlX2Ns b3NlKHNwbGl0UmVsLCBOb0xvY2spOworCisJLyogQXR0YWNoIG5ldyBwYXJ0aXRpb25zIHRv IHBhcnRpdGlvbmVkIHRhYmxlLiAqLworCWZvcmJvdGgobGlzdHB0ciwgY21kLT5wYXJ0bGlz dCwgbGlzdHB0cjIsIG5ld1BhcnRSZWxzKQorCXsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAq c3BzID0gKFNpbmdsZVBhcnRpdGlvblNwZWMgKikgbGZpcnN0KGxpc3RwdHIpOworCQlSZWxh dGlvbgluZXdQYXJ0UmVsID0gKFJlbGF0aW9uKSBsZmlyc3QobGlzdHB0cjIpOworCisJCS8q IHdxdWV1ZSA9IE5VTEw6IHZlcmlmaWNhdGlvbiBmb3IgZWFjaCBjbG9uZWQgY29uc3RyYWlu dCBpcyBub3QgbmVlZC4gKi8KKwkJYXR0YWNoUGFydFRhYmxlKE5VTEwsIHJlbCwgbmV3UGFy dFJlbCwgc3BzLT5ib3VuZCk7CisJCS8qIFVubG9jayBuZXcgcGFydGl0aW9uLiAqLworCQl0 YWJsZV9jbG9zZShuZXdQYXJ0UmVsLCBOb0xvY2spOworCX0KKworCS8qIERyb3Agc3BsaXR0 ZWQgcGFydGl0aW9uLiAqLworCW9iamVjdC5jbGFzc0lkID0gUmVsYXRpb25SZWxhdGlvbklk OworCW9iamVjdC5vYmplY3RJZCA9IHNwbGl0UmVsT2lkOworCW9iamVjdC5vYmplY3RTdWJJ ZCA9IDA7CisJLyogUHJvYmFibHkgRFJPUF9DQVNDQURFIGlzIG5vdCBuZWVkZWQuICovCisJ cGVyZm9ybURlbGV0aW9uKCZvYmplY3QsIERST1BfUkVTVFJJQ1QsIDApOworfQorCisvKgor ICogU3RydWN0IHdpdGggY29udGV4dCBvZiBtZXJnZWQgcGFydGl0aW9uCisgKi8KK3R5cGVk ZWYgc3RydWN0IE1lcmdlZFBhcnRDb250ZXh0Cit7CisJUmVsYXRpb24JcGFydFJlbDsJCS8q IHJlbGF0aW9uIGZvciBwYXJ0aXRpb24gKi8KK30JCQlNZXJnZWRQYXJ0Q29udGV4dDsKKwor LyoKKyAqIG1vdmVNZXJnZWRUYWJsZXNSb3dzOiBzY2FuIG1lcmdlZCBwYXJ0aXRpb25zIChw YXJ0Q29udGV4dCkgb2YgcGFydGl0aW9uZWQKKyAqIHRhYmxlIChyZWwpIGFuZCBtb3ZlIHJv d3MgaW50byBuZXcgcGFydGl0aW9uIChuZXdQYXJ0UmVsKS4KKyAqLworc3RhdGljIHZvaWQK K21vdmVNZXJnZWRUYWJsZXNSb3dzKFJlbGF0aW9uIHJlbCwgTGlzdCAqcGFydENvbnRleHQs IFJlbGF0aW9uIG5ld1BhcnRSZWwpCit7CisJQ29tbWFuZElkCW15Y2lkOworCisJLyogVGhl IEZTTSBpcyBlbXB0eSwgc28gZG9uJ3QgYm90aGVyIHVzaW5nIGl0LiAqLworCWludAkJCXRp X29wdGlvbnMgPSBUQUJMRV9JTlNFUlRfU0tJUF9GU007CisJTGlzdENlbGwgICAqbGlzdHB0 cjsKKwlCdWxrSW5zZXJ0U3RhdGUgYmlzdGF0ZTsJLyogc3RhdGUgb2YgYnVsayBpbnNlcnRz IGZvciBwYXJ0aXRpb24gKi8KKwlUdXBsZVRhYmxlU2xvdCAqZHN0c2xvdDsKKworCW15Y2lk ID0gR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKTsKKworCS8qIFByZXBhcmUgYSBCdWxrSW5z ZXJ0U3RhdGUgZm9yIHRhYmxlX3R1cGxlX2luc2VydC4gKi8KKwliaXN0YXRlID0gR2V0QnVs a0luc2VydFN0YXRlKCk7CisKKwkvKiBDcmVhdGUgbmVjZXNzYXJ5IHR1cGxlIHNsb3QuICov CisJZHN0c2xvdCA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdChSZWxhdGlvbkdldERlc2Ny KG5ld1BhcnRSZWwpLAorCQkJCQkJCQkJICAgdGFibGVfc2xvdF9jYWxsYmFja3MobmV3UGFy dFJlbCkpOworCUV4ZWNTdG9yZUFsbE51bGxUdXBsZShkc3RzbG90KTsKKworCWZvcmVhY2go bGlzdHB0ciwgcGFydENvbnRleHQpCisJeworCQlNZXJnZWRQYXJ0Q29udGV4dCAqcGMgPSAo TWVyZ2VkUGFydENvbnRleHQgKikgbGZpcnN0KGxpc3RwdHIpOworCQlUdXBsZVRhYmxlU2xv dCAqc3Jjc2xvdDsKKwkJVHVwbGVDb252ZXJzaW9uTWFwICp0dXBsZV9tYXA7CisJCVRhYmxl U2NhbkRlc2Mgc2NhbjsKKwkJU25hcHNob3QJc25hcHNob3Q7CisKKwkJLyogQ3JlYXRlIHR1 cGxlIHNsb3QgZm9yIG5ldyBwYXJ0aXRpb24uICovCisJCXNyY3Nsb3QgPSBNYWtlU2luZ2xl VHVwbGVUYWJsZVNsb3QoUmVsYXRpb25HZXREZXNjcihwYy0+cGFydFJlbCksCisJCQkJCQkJ CQkJICAgdGFibGVfc2xvdF9jYWxsYmFja3MocGMtPnBhcnRSZWwpKTsKKworCQkvKgorCQkg KiBNYXAgY29tcHV0aW5nIGZvciBtb3ZpbmcgYXR0cmlidXRlcyBvZiBtZXJnZWQgcGFydGl0 aW9uIHRvIG5ldworCQkgKiBwYXJ0aXRpb24uCisJCSAqLworCQl0dXBsZV9tYXAgPSBjb252 ZXJ0X3R1cGxlc19ieV9uYW1lKFJlbGF0aW9uR2V0RGVzY3IocGMtPnBhcnRSZWwpLAorCQkJ CQkJCQkJCSAgIFJlbGF0aW9uR2V0RGVzY3IobmV3UGFydFJlbCkpOworCisJCS8qIFNjYW4g dGhyb3VnaCB0aGUgcm93cy4gKi8KKwkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdl dExhdGVzdFNuYXBzaG90KCkpOworCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHBjLT5wYXJ0 UmVsLCBzbmFwc2hvdCwgMCwgTlVMTCk7CisKKwkJd2hpbGUgKHRhYmxlX3NjYW5fZ2V0bmV4 dHNsb3Qoc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIHNyY3Nsb3QpKQorCQl7CisJCQlU dXBsZVRhYmxlU2xvdCAqaW5zZXJ0c2xvdDsKKworCQkJLyogRXh0cmFjdCBkYXRhIGZyb20g b2xkIHR1cGxlLiAqLworCQkJc2xvdF9nZXRhbGxhdHRycyhzcmNzbG90KTsKKworCQkJaWYg KHR1cGxlX21hcCkKKwkJCXsKKwkJCQkvKiBOZWVkIHRvIHVzZSBtYXAgZm9yIGNvcHkgYXR0 cmlidXRlcy4gKi8KKwkJCQlpbnNlcnRzbG90ID0gZXhlY3V0ZV9hdHRyX21hcF9zbG90KHR1 cGxlX21hcC0+YXR0ck1hcCwgc3Jjc2xvdCwgZHN0c2xvdCk7CisJCQl9CisJCQllbHNlCisJ CQl7CisJCQkJLyogQ29weSBhdHRyaWJ1dGVzIGRpcmVjdGx5LiAqLworCQkJCWluc2VydHNs b3QgPSBkc3RzbG90OworCisJCQkJRXhlY0NsZWFyVHVwbGUoaW5zZXJ0c2xvdCk7CisKKwkJ CQltZW1jcHkoaW5zZXJ0c2xvdC0+dHRzX3ZhbHVlcywgc3Jjc2xvdC0+dHRzX3ZhbHVlcywK KwkJCQkJICAgc2l6ZW9mKERhdHVtKSAqIHNyY3Nsb3QtPnR0c19udmFsaWQpOworCQkJCW1l bWNweShpbnNlcnRzbG90LT50dHNfaXNudWxsLCBzcmNzbG90LT50dHNfaXNudWxsLAorCQkJ CQkgICBzaXplb2YoYm9vbCkgKiBzcmNzbG90LT50dHNfbnZhbGlkKTsKKworCQkJCUV4ZWNT dG9yZVZpcnR1YWxUdXBsZShpbnNlcnRzbG90KTsKKwkJCX0KKworCQkJLyogV3JpdGUgdGhl IHR1cGxlIG91dCB0byB0aGUgbmV3IHJlbGF0aW9uLiAqLworCQkJdGFibGVfdHVwbGVfaW5z ZXJ0KG5ld1BhcnRSZWwsIGluc2VydHNsb3QsIG15Y2lkLCB0aV9vcHRpb25zLCBiaXN0YXRl KTsKKworCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwkJfQorCisJCXRhYmxlX2VuZHNj YW4oc2Nhbik7CisJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CisKKwkJaWYgKHR1 cGxlX21hcCkKKwkJCWZyZWVfY29udmVyc2lvbl9tYXAodHVwbGVfbWFwKTsKKworCQlFeGVj RHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNyY3Nsb3QpOworCX0KKworCUV4ZWNEcm9wU2lu Z2xlVHVwbGVUYWJsZVNsb3QoZHN0c2xvdCk7CisJRnJlZUJ1bGtJbnNlcnRTdGF0ZShiaXN0 YXRlKTsKKworCXRhYmxlX2ZpbmlzaF9idWxrX2luc2VydChuZXdQYXJ0UmVsLCB0aV9vcHRp b25zKTsKK30KKworLyoKKyAqIEFMVEVSIFRBQkxFIDxuYW1lPiBNRVJHRSBQQVJUSVRJT05T IDxwYXJ0aXRpb24tbGlzdD4gSU5UTyA8cGFydGl0aW9uLW5hbWU+CisgKi8KK3N0YXRpYyB2 b2lkCitBVEV4ZWNNZXJnZVBhcnRpdGlvbnMoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxl SW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCisJCQkJCSAgUGFydGl0aW9uQ21kICpjbWQsIEFs dGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCkKK3sKKwlSZWxhdGlvbgluZXdQYXJ0 UmVsOworCUxpc3RDZWxsICAgKmxpc3RwdHI7CisJTGlzdAkgICAqcGFydENvbnRleHRzID0g TklMOworCU9pZAkJCWRlZmF1bHRQYXJ0T2lkOworCWNoYXIJCXRtcFJlbE5hbWVbTkFNRURB VEFMRU5dOworCVJhbmdlVmFyICAgKm1lcmdlUGFydE5hbWUgPSBjbWQtPm5hbWU7CisJYm9v bAkJaXNTYW1lTmFtZSA9IGZhbHNlOworCisJLyoKKwkgKiBMb2NrIGFsbCBtZXJnZWQgcGFy dGl0aW9ucywgY2hlY2sgdGhlbSBhbmQgY3JlYXRlIGxpc3Qgd2l0aCBwYXJ0aXRpb25zCisJ ICogY29udGV4dHMuCisJICovCisJZm9yZWFjaChsaXN0cHRyLCBjbWQtPnBhcnRsaXN0KQor CXsKKwkJUmFuZ2VWYXIgICAqbmFtZSA9IChSYW5nZVZhciAqKSBsZmlyc3QobGlzdHB0cik7 CisJCU1lcmdlZFBhcnRDb250ZXh0ICpwYzsKKworCQlwYyA9IChNZXJnZWRQYXJ0Q29udGV4 dCAqKSBwYWxsb2MwKHNpemVvZihNZXJnZWRQYXJ0Q29udGV4dCkpOworCisJCS8qCisJCSAq IFdlIGFyZSBnb2luZyB0byBkZXRhY2ggYW5kIHJlbW92ZSB0aGlzIHBhcnRpdGlvbjogbmVl ZCB0byB1c2UKKwkJICogZXhjbHVzaXZlIGxvY2sgZm9yIHByZXZlbnQgRE1MLXF1ZXJpZXMg dG8gdGhlIHBhcnRpdGlvbi4KKwkJICovCisJCXBjLT5wYXJ0UmVsID0gdGFibGVfb3BlbnJ2 KG5hbWUsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJCWlmIChwYy0+cGFydFJlbC0+cmRf cmVsLT5yZWxraW5kICE9IFJFTEtJTkRfUkVMQVRJT04pCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkJIGVycm1z ZygiY2Fubm90IG1lcmdlIG5vbi10YWJsZSBwYXJ0aXRpb24gXCIlc1wiIiwKKwkJCQkJCQlS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYy0+cGFydFJlbCkpKSk7CisKKwkJaWYgKGVxdWFs KG5hbWUsIGNtZC0+bmFtZSkpCisJCQkvKiBPbmUgbmV3IHBhcnRpdGlvbiBjYW4gaGF2ZSB0 aGUgc2FtZSBuYW1lIGFzIG1lcmdlZCBwYXJ0aXRpb24uICovCisJCQlpc1NhbWVOYW1lID0g dHJ1ZTsKKworCQkvKiBTdG9yZSBwYXJ0aXRpb24gY29udGV4dCBpbnRvIHBhcnRpdGlvbnMg bGlzdC4gKi8KKwkJcGFydENvbnRleHRzID0gbGFwcGVuZChwYXJ0Q29udGV4dHMsIHBjKTsK Kwl9CisKKwkvKiBEZXRhY2ggYWxsIG1lcmdlZCBwYXJ0aXRpb25zLiAqLworCWRlZmF1bHRQ YXJ0T2lkID0KKwkJZ2V0X2RlZmF1bHRfb2lkX2Zyb21fcGFydGRlc2MoUmVsYXRpb25HZXRQ YXJ0aXRpb25EZXNjKHJlbCwgdHJ1ZSkpOworCWZvcmVhY2gobGlzdHB0ciwgcGFydENvbnRl eHRzKQorCXsKKwkJTWVyZ2VkUGFydENvbnRleHQgKnBjID0gKE1lcmdlZFBhcnRDb250ZXh0 ICopIGxmaXJzdChsaXN0cHRyKTsKKworCQlSZW1vdmVJbmhlcml0YW5jZShwYy0+cGFydFJl bCwgcmVsLCBmYWxzZSk7CisJCS8qIERvIHRoZSBmaW5hbCBwYXJ0IG9mIGRldGFjaGluZy4g Ki8KKwkJRGV0YWNoUGFydGl0aW9uRmluYWxpemUocmVsLCBwYy0+cGFydFJlbCwgZmFsc2Us IGRlZmF1bHRQYXJ0T2lkKTsKKwl9CisKKwkvKiBDcmVhdGUgdGFibGUgZm9yIG5ldyBwYXJ0 aXRpb24sIHVzZSBwYXJ0aXRpb25lZCB0YWJsZSBhcyBtb2RlbC4gKi8KKwlpZiAoaXNTYW1l TmFtZSkKKwl7CisJCS8qIENyZWF0ZSBwYXJ0aXRpb24gdGFibGUgd2l0aCBnZW5lcmF0ZWQg dGVtcGFyYXJ5IG5hbWUuICovCisJCXNwcmludGYodG1wUmVsTmFtZSwgIm1lcmdlLSV1LSVY LXRtcCIsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgTXlQcm9jUGlkKTsKKwkJbWVyZ2VQYXJ0 TmFtZSA9IG1ha2VSYW5nZVZhcihnZXRfbmFtZXNwYWNlX25hbWUoUmVsYXRpb25HZXROYW1l c3BhY2UocmVsKSksCisJCQkJCQkJCQkgdG1wUmVsTmFtZSwgLTEpOworCX0KKwljcmVhdGVQ YXJ0aXRpb25UYWJsZShtZXJnZVBhcnROYW1lLAorCQkJCQkJIG1ha2VSYW5nZVZhcihnZXRf bmFtZXNwYWNlX25hbWUoUmVsYXRpb25HZXROYW1lc3BhY2UocmVsKSksCisJCQkJCQkJCQkg IFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksIC0xKSwKKwkJCQkJCSBjb250ZXh0KTsK KworCS8qIE9wZW4gdGhlIG5ldyBwYXJ0aXRpb24gYW5kIGFjcXVpcmUgZXhjbHVzaXZlIGxv Y2sgb24gaXQuICovCisJbmV3UGFydFJlbCA9IHRhYmxlX29wZW5ydihtZXJnZVBhcnROYW1l LCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCS8qIENvcHkgZGF0YSBmcm9tIG1lcmdlZCBw YXJ0aXRpb25zIHRvIG5ldyBwYXJ0aXRpb24uICovCisJbW92ZU1lcmdlZFRhYmxlc1Jvd3Mo cmVsLCBwYXJ0Q29udGV4dHMsIG5ld1BhcnRSZWwpOworCisJLyoKKwkgKiBBdHRhY2ggbmV3 IHBhcnRpdGlvbiB0byBwYXJ0aXRpb25lZCB0YWJsZS4gd3F1ZXVlID0gTlVMTDogdmVyaWZp Y2F0aW9uCisJICogZm9yIGVhY2ggY2xvbmVkIGNvbnN0cmFpbnQgaXMgbm90IG5lZWQuCisJ ICovCisJYXR0YWNoUGFydFRhYmxlKE5VTEwsIHJlbCwgbmV3UGFydFJlbCwgY21kLT5ib3Vu ZCk7CisKKwkvKiBVbmxvY2sgYW5kIGRyb3AgbWVyZ2VkIHBhcnRpdGlvbnMuICovCisJZm9y ZWFjaChsaXN0cHRyLCBwYXJ0Q29udGV4dHMpCisJeworCQlPYmplY3RBZGRyZXNzIG9iamVj dDsKKwkJTWVyZ2VkUGFydENvbnRleHQgKnBjID0gKE1lcmdlZFBhcnRDb250ZXh0ICopIGxm aXJzdChsaXN0cHRyKTsKKworCQkvKiBVbmxvY2sgcGFydGl0aW9uLiAqLworCQl0YWJsZV9j bG9zZShwYy0+cGFydFJlbCwgTm9Mb2NrKTsKKworCQlvYmplY3QuY2xhc3NJZCA9IFJlbGF0 aW9uUmVsYXRpb25JZDsKKwkJb2JqZWN0Lm9iamVjdElkID0gUmVsYXRpb25HZXRSZWxpZChw Yy0+cGFydFJlbCk7CisJCW9iamVjdC5vYmplY3RTdWJJZCA9IDA7CisJCXBlcmZvcm1EZWxl dGlvbigmb2JqZWN0LCBEUk9QX1JFU1RSSUNULCAwKTsKKworCQlwZnJlZShwYyk7CisJfQor CisJLyogUmVuYW1lIG5ldyBwYXJ0aXRpb24gaWYgaXQgaXMgbmVlZC4gKi8KKwlpZiAoaXNT YW1lTmFtZSkKKwl7CisJCS8qCisJCSAqIFdlIG11c3QgYnVtcCB0aGUgY29tbWFuZCBjb3Vu dGVyIHRvIG1ha2UgdGhlIG5ldyBwYXJ0aXRpb24gdHVwbGUKKwkJICogdmlzaWJsZSBmb3Ig cmVuYW1lLgorCQkgKi8KKwkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKwkJLyogUmVu YW1lIHBhcnRpdGlvbi4gKi8KKwkJUmVuYW1lUmVsYXRpb25JbnRlcm5hbChSZWxhdGlvbkdl dFJlbGlkKG5ld1BhcnRSZWwpLAorCQkJCQkJCSAgIGNtZC0+bmFtZS0+cmVsbmFtZSwgZmFs c2UsIGZhbHNlKTsKKwl9CisJLyogS2VlcCB0aGUgbG9jayB1bnRpbCBjb21taXQuICovCisJ dGFibGVfY2xvc2UobmV3UGFydFJlbCwgTm9Mb2NrKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNz LmMKaW5kZXggNTFkNjMwZmE4OTIuLjQxNmFkNjVkNTI4IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVu Y3MuYwpAQCAtNTM1MCw2ICs1MzUwLDE3IEBAIF9jb3B5UGFydGl0aW9uUmFuZ2VEYXR1bShj b25zdCBQYXJ0aXRpb25SYW5nZURhdHVtICpmcm9tKQogCXJldHVybiBuZXdub2RlOwogfQog CitzdGF0aWMgU2luZ2xlUGFydGl0aW9uU3BlYyAqCitfY29weVNpbmdsZVBhcnRpdGlvblNw ZWMoY29uc3QgU2luZ2xlUGFydGl0aW9uU3BlYyAqZnJvbSkKK3sKKwlTaW5nbGVQYXJ0aXRp b25TcGVjICpuZXdub2RlID0gbWFrZU5vZGUoU2luZ2xlUGFydGl0aW9uU3BlYyk7CisKKwlD T1BZX05PREVfRklFTEQobmFtZSk7CisJQ09QWV9OT0RFX0ZJRUxEKGJvdW5kKTsKKworCXJl dHVybiBuZXdub2RlOworfQorCiBzdGF0aWMgUGFydGl0aW9uQ21kICoKIF9jb3B5UGFydGl0 aW9uQ21kKGNvbnN0IFBhcnRpdGlvbkNtZCAqZnJvbSkKIHsKQEAgLTUzNTcsNiArNTM2OCw3 IEBAIF9jb3B5UGFydGl0aW9uQ21kKGNvbnN0IFBhcnRpdGlvbkNtZCAqZnJvbSkKIAogCUNP UFlfTk9ERV9GSUVMRChuYW1lKTsKIAlDT1BZX05PREVfRklFTEQoYm91bmQpOworCUNPUFlf Tk9ERV9GSUVMRChwYXJ0bGlzdCk7CiAJQ09QWV9TQ0FMQVJfRklFTEQoY29uY3VycmVudCk7 CiAKIAlyZXR1cm4gbmV3bm9kZTsKQEAgLTY1NjAsNiArNjU3Miw5IEBAIGNvcHlPYmplY3RJ bXBsKGNvbnN0IHZvaWQgKmZyb20pCiAJCWNhc2UgVF9QYXJ0aXRpb25SYW5nZURhdHVtOgog CQkJcmV0dmFsID0gX2NvcHlQYXJ0aXRpb25SYW5nZURhdHVtKGZyb20pOwogCQkJYnJlYWs7 CisJCWNhc2UgVF9TaW5nbGVQYXJ0aXRpb25TcGVjOgorCQkJcmV0dmFsID0gX2NvcHlTaW5n bGVQYXJ0aXRpb25TcGVjKGZyb20pOworCQkJYnJlYWs7CiAJCWNhc2UgVF9QYXJ0aXRpb25D bWQ6CiAJCQlyZXR2YWwgPSBfY29weVBhcnRpdGlvbkNtZChmcm9tKTsKIAkJCWJyZWFrOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jIGIvc3JjL2JhY2tl bmQvbm9kZXMvZXF1YWxmdW5jcy5jCmluZGV4IGU3NDdlMTY2N2QwLi43ZTIxN2YzZTJhOSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCisrKyBiL3NyYy9i YWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwpAQCAtMzQ0MywxMSArMzQ0MywyMSBAQCBfZXF1 YWxQYXJ0aXRpb25SYW5nZURhdHVtKGNvbnN0IFBhcnRpdGlvblJhbmdlRGF0dW0gKmEsIGNv bnN0IFBhcnRpdGlvblJhbmdlRGF0dQogCXJldHVybiB0cnVlOwogfQogCitzdGF0aWMgYm9v bAorX2VxdWFsU2luZ2xlUGFydGl0aW9uU3BlYyhjb25zdCBTaW5nbGVQYXJ0aXRpb25TcGVj ICphLCBjb25zdCBTaW5nbGVQYXJ0aXRpb25TcGVjICpiKQoreworCUNPTVBBUkVfTk9ERV9G SUVMRChuYW1lKTsKKwlDT01QQVJFX05PREVfRklFTEQoYm91bmQpOworCisJcmV0dXJuIHRy dWU7Cit9CisKIHN0YXRpYyBib29sCiBfZXF1YWxQYXJ0aXRpb25DbWQoY29uc3QgUGFydGl0 aW9uQ21kICphLCBjb25zdCBQYXJ0aXRpb25DbWQgKmIpCiB7CiAJQ09NUEFSRV9OT0RFX0ZJ RUxEKG5hbWUpOwogCUNPTVBBUkVfTk9ERV9GSUVMRChib3VuZCk7CisJQ09NUEFSRV9OT0RF X0ZJRUxEKHBhcnRsaXN0KTsKIAlDT01QQVJFX1NDQUxBUl9GSUVMRChjb25jdXJyZW50KTsK IAogCXJldHVybiB0cnVlOwpAQCAtNDM2Myw2ICs0MzczLDkgQEAgZXF1YWwoY29uc3Qgdm9p ZCAqYSwgY29uc3Qgdm9pZCAqYikKIAkJY2FzZSBUX1BhcnRpdGlvblJhbmdlRGF0dW06CiAJ CQlyZXR2YWwgPSBfZXF1YWxQYXJ0aXRpb25SYW5nZURhdHVtKGEsIGIpOwogCQkJYnJlYWs7 CisJCWNhc2UgVF9TaW5nbGVQYXJ0aXRpb25TcGVjOgorCQkJcmV0dmFsID0gX2VxdWFsU2lu Z2xlUGFydGl0aW9uU3BlYyhhLCBiKTsKKwkJCWJyZWFrOwogCQljYXNlIFRfUGFydGl0aW9u Q21kOgogCQkJcmV0dmFsID0gX2VxdWFsUGFydGl0aW9uQ21kKGEsIGIpOwogCQkJYnJlYWs7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQv cGFyc2VyL2dyYW0ueQppbmRleCA5ODlkYjBkYmVjZS4uZDg2MGY5MDIxYTEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueQpAQCAtMjczLDYgKzI3Myw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZl Vmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7 CiAJUGFydGl0aW9uRWxlbSAqcGFydGVsZW07CiAJUGFydGl0aW9uU3BlYyAqcGFydHNwZWM7 CiAJUGFydGl0aW9uQm91bmRTcGVjICpwYXJ0Ym91bmRzcGVjOworCVNpbmdsZVBhcnRpdGlv blNwZWMgKnNpbmdsZXBhcnRzcGVjOwogCVJvbGVTcGVjICAgKnJvbGVzcGVjOwogCVB1Ymxp Y2F0aW9uT2JqU3BlYyAqcHVibGljYXRpb25vYmplY3RzcGVjOwogCXN0cnVjdCBTZWxlY3RM aW1pdCAqc2VsZWN0bGltaXQ7CkBAIC02NDQsNiArNjQ1LDggQEAgc3RhdGljIE5vZGUgKm1h a2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5v ZGUgKnF1ZXJ5KTsKICV0eXBlIDxwYXJ0ZWxlbT4JcGFydF9lbGVtCiAldHlwZSA8bGlzdD4J CXBhcnRfcGFyYW1zCiAldHlwZSA8cGFydGJvdW5kc3BlYz4gUGFydGl0aW9uQm91bmRTcGVj CisldHlwZSA8c2luZ2xlcGFydHNwZWM+CVNpbmdsZVBhcnRpdGlvblNwZWMKKyV0eXBlIDxs aXN0PgkJcGFydGl0aW9uc19saXN0CiAldHlwZSA8bGlzdD4JCWhhc2hfcGFydGJvdW5kCiAl dHlwZSA8ZGVmZWx0PgkJaGFzaF9wYXJ0Ym91bmRfZWxlbQogCkBAIC04MjYsNyArODI5LDcg QEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUs IExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlPUkRFUiBPUkRJTkFMSVRZIE9USEVS UyBPVVRfUCBPVVRFUl9QCiAJT1ZFUiBPVkVSTEFQUyBPVkVSTEFZIE9WRVJSSURJTkcgT1dO RUQgT1dORVIKIAotCVBBUkFMTEVMIFBBUkFNRVRFUiBQQVJTRVIgUEFSVElBTCBQQVJUSVRJ T04gUEFTU0lORyBQQVNTV09SRCBQQVRICisJUEFSQUxMRUwgUEFSQU1FVEVSIFBBUlNFUiBQ QVJUSUFMIFBBUlRJVElPTiBQQVJUSVRJT05TIFBBU1NJTkcgUEFTU1dPUkQgUEFUSAogCVBM QUNJTkcgUExBTiBQTEFOUyBQT0xJQ1kKIAlQT1NJVElPTiBQUkVDRURJTkcgUFJFQ0lTSU9O IFBSRVNFUlZFIFBSRVBBUkUgUFJFUEFSRUQgUFJJTUFSWQogCVBSSU9SIFBSSVZJTEVHRVMg UFJPQ0VEVVJBTCBQUk9DRURVUkUgUFJPQ0VEVVJFUyBQUk9HUkFNIFBVQkxJQ0FUSU9OCkBA IC04NDAsNyArODQzLDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0 KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAogCVNBVkVQ T0lOVCBTQ0FMQVIgU0NIRU1BIFNDSEVNQVMgU0NST0xMIFNFQVJDSCBTRUNPTkRfUCBTRUNV UklUWSBTRUxFQ1QKIAlTRVFVRU5DRSBTRVFVRU5DRVMgU0VSSUFMSVpBQkxFIFNFUlZFUiBT RVNTSU9OIFNFU1NJT05fVVNFUiBTRVQgU0VUUyBTRVRPRgotCVNIQVJFIFNIT1cgU0lNSUxB UiBTSU1QTEUgU0tJUCBTTUFMTElOVCBTTkFQU0hPVCBTT01FIFNRTF9QIFNUQUJMRSBTVEFO REFMT05FX1AKKwlTSEFSRSBTSE9XIFNJTUlMQVIgU0lNUExFIFNLSVAgU01BTExJTlQgU05B UFNIT1QgU09NRSBTUExJVCBTUUxfUCBTVEFCTEUgU1RBTkRBTE9ORV9QCiAJU1RBUlQgU1RB VEVNRU5UIFNUQVRJU1RJQ1MgU1RESU4gU1RET1VUIFNUT1JBR0UgU1RPUkVEIFNUUklDVF9Q IFNUUklORyBTVFJJUF9QCiAJU1VCU0NSSVBUSU9OIFNVQlNUUklORyBTVVBQT1JUIFNZTU1F VFJJQyBTWVNJRCBTWVNURU1fUAogCkBAIC0yMzQyLDYgKzIzNDUsMjMgQEAgYWx0ZXJfdGFi bGVfY21kczoKIAkJCXwgYWx0ZXJfdGFibGVfY21kcyAnLCcgYWx0ZXJfdGFibGVfY21kCXsg JCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KIAkJOwogCitwYXJ0aXRpb25zX2xpc3Q6CisJCQlT aW5nbGVQYXJ0aXRpb25TcGVjCQkJCQkJCXsgJCQgPSBsaXN0X21ha2UxKCQxKTsgfQorCQkJ fCBwYXJ0aXRpb25zX2xpc3QgJywnIFNpbmdsZVBhcnRpdGlvblNwZWMJeyAkJCA9IGxhcHBl bmQoJDEsICQzKTsgfQorCQk7CisKK1NpbmdsZVBhcnRpdGlvblNwZWM6CisJCQlQQVJUSVRJ T04gcXVhbGlmaWVkX25hbWUgUGFydGl0aW9uQm91bmRTcGVjCisJCQkJeworCQkJCQlTaW5n bGVQYXJ0aXRpb25TcGVjICpuID0gbWFrZU5vZGUoU2luZ2xlUGFydGl0aW9uU3BlYyk7CisK KwkJCQkJbi0+bmFtZSA9ICQyOworCQkJCQluLT5ib3VuZCA9ICQzOworCisJCQkJCSQkID0g bjsKKwkJCQl9CisJCTsKKwogcGFydGl0aW9uX2NtZDoKIAkJCS8qIEFMVEVSIFRBQkxFIDxu YW1lPiBBVFRBQ0ggUEFSVElUSU9OIDx0YWJsZV9uYW1lPiBGT1IgVkFMVUVTICovCiAJCQlB VFRBQ0ggUEFSVElUSU9OIHF1YWxpZmllZF9uYW1lIFBhcnRpdGlvbkJvdW5kU3BlYwpAQCAt MjM1Miw2ICsyMzcyLDcgQEAgcGFydGl0aW9uX2NtZDoKIAkJCQkJbi0+c3VidHlwZSA9IEFU X0F0dGFjaFBhcnRpdGlvbjsKIAkJCQkJY21kLT5uYW1lID0gJDM7CiAJCQkJCWNtZC0+Ym91 bmQgPSAkNDsKKwkJCQkJY21kLT5wYXJ0bGlzdCA9IE5VTEw7CiAJCQkJCWNtZC0+Y29uY3Vy cmVudCA9IGZhbHNlOwogCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CiAKQEAgLTIzNjYs NiArMjM4Nyw3IEBAIHBhcnRpdGlvbl9jbWQ6CiAJCQkJCW4tPnN1YnR5cGUgPSBBVF9EZXRh Y2hQYXJ0aXRpb247CiAJCQkJCWNtZC0+bmFtZSA9ICQzOwogCQkJCQljbWQtPmJvdW5kID0g TlVMTDsKKwkJCQkJY21kLT5wYXJ0bGlzdCA9IE5VTEw7CiAJCQkJCWNtZC0+Y29uY3VycmVu dCA9ICQ0OwogCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CiAKQEAgLTIzNzksNiArMjQw MSwzNSBAQCBwYXJ0aXRpb25fY21kOgogCQkJCQluLT5zdWJ0eXBlID0gQVRfRGV0YWNoUGFy dGl0aW9uRmluYWxpemU7CiAJCQkJCWNtZC0+bmFtZSA9ICQzOwogCQkJCQljbWQtPmJvdW5k ID0gTlVMTDsKKwkJCQkJY21kLT5wYXJ0bGlzdCA9IE5VTEw7CisJCQkJCWNtZC0+Y29uY3Vy cmVudCA9IGZhbHNlOworCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CisJCQkJCSQkID0g KE5vZGUgKikgbjsKKwkJCQl9CisJCQkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gU1BMSVQgUEFS VElUSU9OIDxwYXJ0aXRpb25fbmFtZT4gSU5UTyAoKSAqLworCQkJfCBTUExJVCBQQVJUSVRJ T04gcXVhbGlmaWVkX25hbWUgSU5UTyAnKCcgcGFydGl0aW9uc19saXN0ICcpJworCQkJCXsK KwkJCQkJQWx0ZXJUYWJsZUNtZCAqbiA9IG1ha2VOb2RlKEFsdGVyVGFibGVDbWQpOworCQkJ CQlQYXJ0aXRpb25DbWQgKmNtZCA9IG1ha2VOb2RlKFBhcnRpdGlvbkNtZCk7CisKKwkJCQkJ bi0+c3VidHlwZSA9IEFUX1NwbGl0UGFydGl0aW9uOworCQkJCQljbWQtPm5hbWUgPSAkMzsK KwkJCQkJY21kLT5ib3VuZCA9IE5VTEw7CisJCQkJCWNtZC0+cGFydGxpc3QgPSAkNjsKKwkJ CQkJY21kLT5jb25jdXJyZW50ID0gZmFsc2U7CisJCQkJCW4tPmRlZiA9IChOb2RlICopIGNt ZDsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJCS8qIEFMVEVSIFRBQkxFIDxu YW1lPiBNRVJHRSBQQVJUSVRJT05TICgpIElOVE8gPHBhcnRpdGlvbl9uYW1lPiAqLworCQkJ fCBNRVJHRSBQQVJUSVRJT05TICcoJyBxdWFsaWZpZWRfbmFtZV9saXN0ICcpJyBJTlRPIHF1 YWxpZmllZF9uYW1lCisJCQkJeworCQkJCQlBbHRlclRhYmxlQ21kICpuID0gbWFrZU5vZGUo QWx0ZXJUYWJsZUNtZCk7CisJCQkJCVBhcnRpdGlvbkNtZCAqY21kID0gbWFrZU5vZGUoUGFy dGl0aW9uQ21kKTsKKworCQkJCQluLT5zdWJ0eXBlID0gQVRfTWVyZ2VQYXJ0aXRpb25zOwor CQkJCQljbWQtPm5hbWUgPSAkNzsKKwkJCQkJY21kLT5ib3VuZCA9IE5VTEw7CisJCQkJCWNt ZC0+cGFydGxpc3QgPSAkNDsKIAkJCQkJY21kLT5jb25jdXJyZW50ID0gZmFsc2U7CiAJCQkJ CW4tPmRlZiA9IChOb2RlICopIGNtZDsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwpAQCAtMjM5 NSw2ICsyNDQ2LDcgQEAgaW5kZXhfcGFydGl0aW9uX2NtZDoKIAkJCQkJbi0+c3VidHlwZSA9 IEFUX0F0dGFjaFBhcnRpdGlvbjsKIAkJCQkJY21kLT5uYW1lID0gJDM7CiAJCQkJCWNtZC0+ Ym91bmQgPSBOVUxMOworCQkJCQljbWQtPnBhcnRsaXN0ID0gTlVMTDsKIAkJCQkJY21kLT5j b25jdXJyZW50ID0gZmFsc2U7CiAJCQkJCW4tPmRlZiA9IChOb2RlICopIGNtZDsKIApAQCAt MTc4NjIsNiArMTc5MTQsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IFBBUlNFUgog CQkJfCBQQVJUSUFMCiAJCQl8IFBBUlRJVElPTgorCQkJfCBQQVJUSVRJT05TCiAJCQl8IFBB U1NJTkcKIAkJCXwgUEFTU1dPUkQKIAkJCXwgUEFUSApAQCAtMTc5MjksNiArMTc5ODIsNyBA QCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IFNJTVBMRQogCQkJfCBTS0lQCiAJCQl8IFNO QVBTSE9UCisJCQl8IFNQTElUCiAJCQl8IFNRTF9QCiAJCQl8IFNUQUJMRQogCQkJfCBTVEFO REFMT05FX1AKQEAgLTE4NDgwLDYgKzE4NTM0LDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgog CQkJfCBQQVJTRVIKIAkJCXwgUEFSVElBTAogCQkJfCBQQVJUSVRJT04KKwkJCXwgUEFSVElU SU9OUwogCQkJfCBQQVNTSU5HCiAJCQl8IFBBU1NXT1JECiAJCQl8IFBBVEgKQEAgLTE4NTU5 LDYgKzE4NjE0LDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBTTUFMTElOVAogCQkJ fCBTTkFQU0hPVAogCQkJfCBTT01FCisJCQl8IFNQTElUCiAJCQl8IFNRTF9QCiAJCQl8IFNU QUJMRQogCQkJfCBTVEFOREFMT05FX1AKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV91dGlsY21kLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5j CmluZGV4IDFhNjRhNTIyNzk4Li5lYmYyYTg2MDViMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfdXRpbGNtZC5jCkBAIC01OCw2ICs1OCw4IEBACiAjaW5jbHVkZSAicGFyc2VyL3BhcnNl X3R5cGUuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdXRpbGNtZC5oIgogI2luY2x1ZGUg InBhcnNlci9wYXJzZXIuaCIKKyNpbmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydGRlc2MuaCIK KyNpbmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oIgogI2luY2x1ZGUgInJld3Jp dGUvcmV3cml0ZU1hbmlwLmgiCiAjaW5jbHVkZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAi dXRpbHMvYnVpbHRpbnMuaCIKQEAgLTEzNSw3ICsxMzcsNyBAQCBzdGF0aWMgdm9pZCB0cmFu c2Zvcm1Db25zdHJhaW50QXR0cnMoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwKIAkJCQkJCQkJ CSBMaXN0ICpjb25zdHJhaW50TGlzdCk7CiBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1Db2x1bW5U eXBlKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIENvbHVtbkRlZiAqY29sdW1uKTsKIHN0YXRp YyB2b2lkIHNldFNjaGVtYU5hbWUoY2hhciAqY29udGV4dF9zY2hlbWEsIGNoYXIgKipzdG10 X3NjaGVtYV9uYW1lKTsKLXN0YXRpYyB2b2lkIHRyYW5zZm9ybVBhcnRpdGlvbkNtZChDcmVh dGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKmNtZCk7CitzdGF0aWMgdm9pZCB0 cmFuc2Zvcm1QYXJ0aXRpb25DbWQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9u Qm91bmRTcGVjICpib3VuZCk7CiBzdGF0aWMgTGlzdCAqdHJhbnNmb3JtUGFydGl0aW9uUmFu Z2VCb3VuZHMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpibGlzdCwKIAkJCQkJCQkJCQkg ICBSZWxhdGlvbiBwYXJlbnQpOwogc3RhdGljIHZvaWQgdmFsaWRhdGVJbmZpbml0ZUJvdW5k cyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKmJsaXN0KTsKQEAgLTMyNzMsNiArMzI3NSwx MTYgQEAgdHJhbnNmb3JtUnVsZVN0bXQoUnVsZVN0bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1 ZXJ5U3RyaW5nLAogfQogCiAKKy8qCisgKiB0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JTcGxp dAorICoJCUFuYWx5emUgdGhlIEFMVEVSIFRBQkxMRSAuLi4gU1BMSVQgUEFSVElUSU9OIGNv bW1hbmQKKyAqCisgKiBGb3IgZWFjaCBuZXcgcGFydGl0aW9uIHNwcy0+Ym91bmQgaXMgc2V0 IHRvIHRoZSB0cmFuc2Zvcm1lZCB2YWx1ZSBvZiBib3VuZC4KKyAqLworc3RhdGljIHZvaWQK K3RyYW5zZm9ybVBhcnRpdGlvbkNtZEZvclNwbGl0KENyZWF0ZVN0bXRDb250ZXh0ICpjeHQs IFBhcnRpdGlvbkNtZCAqcGFydGNtZCkKK3sKKwlSZWxhdGlvbglwYXJlbnQgPSBjeHQtPnJl bDsKKwlPaWQJCQlzcGxpdFBhcnRPaWQ7CisJTGlzdENlbGwgICAqbGlzdHB0cjsKKworCWlm IChwYXJlbnQtPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxF KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpF Q1RfREVGSU5JVElPTiksCisJCQkJIGVycm1zZygiXCIlc1wiIGlzIG5vdCBhIHBhcnRpdGlv bmVkIHRhYmxlIiwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocGFyZW50KSkpKTsKKworCS8q IFRyYW5zZm9ybSBwYXJ0aXRpb24gYm91bmRzIGZvciBhbGwgcGFydGl0aW9ucyBpbiB0aGUg bGlzdDogKi8KKwlmb3JlYWNoKGxpc3RwdHIsIHBhcnRjbWQtPnBhcnRsaXN0KQorCXsKKwkJ U2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0gKFNpbmdsZVBhcnRpdGlvblNwZWMgKikgbGZp cnN0KGxpc3RwdHIpOworCisJCWN4dC0+cGFydGJvdW5kID0gTlVMTDsKKwkJdHJhbnNmb3Jt UGFydGl0aW9uQ21kKGN4dCwgc3BzLT5ib3VuZCk7CisJCS8qIEFzc2lnbiB0cmFuc2Zvcm1l ZCB2YWx1ZSBvZiB0aGUgcGFydGl0aW9uIGJvdW5kICovCisJCXNwcy0+Ym91bmQgPSBjeHQt PnBhcnRib3VuZDsKKwl9CisKKwlzcGxpdFBhcnRPaWQgPSBSYW5nZVZhckdldFJlbGlkKHBh cnRjbWQtPm5hbWUsIE5vTG9jaywgZmFsc2UpOworCisJLyogVGhlbiB3ZSBzaG91bGQgY2hl Y2sgcGFydGl0aW9ucyB3aXRoIHRyYW5zZm9ybWVkIGJvdW5kcyAqLworCWNoZWNrX3BhcnRp dGlvbnNfZm9yX3NwbGl0KHBhcmVudCwgc3BsaXRQYXJ0T2lkLCBwYXJ0Y21kLT5wYXJ0bGlz dCwgY3h0LT5wc3RhdGUpOworfQorCisKKy8qCisgKiB0cmFuc2Zvcm1QYXJ0aXRpb25DbWRG b3JNZXJnZQorICoJCUFuYWx5emUgdGhlIEFMVEVSIFRBQkxMRSAuLi4gTUVSR0UgUEFSVElU SU9OUyBjb21tYW5kCisgKgorICogRG9lcyBzaW1wbGUgY2hlY2tzIGZvciBtZXJnZWQgcGFy dGl0aW9ucy4gQ2FsY3VsYXRlcyBib3VuZCBvZiByZXN1bHQKKyAqIHBhcnRpdGlvbi4KKyAq Lworc3RhdGljIHZvaWQKK3RyYW5zZm9ybVBhcnRpdGlvbkNtZEZvck1lcmdlKENyZWF0ZVN0 bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqcGFydGNtZCkKK3sKKwlPaWQJCQlkZWZh dWx0UGFydE9pZDsKKwlPaWQJCQlwYXJ0T2lkOworCVJlbGF0aW9uCXBhcmVudCA9IGN4dC0+ cmVsOworCVBhcnRpdGlvbktleSBrZXk7CisJY2hhcgkJc3RyYXRlZ3k7CisJTGlzdENlbGwg ICAqbGlzdHB0ciwKKwkJCSAgICpsaXN0cHRyMjsKKwlib29sCQlpc0RlZmF1bHRQYXJ0ID0g ZmFsc2U7CisJTGlzdAkgICAqcGFydE9pZHMgPSBOSUw7CisKKwlpZiAocGFyZW50LT5yZF9y ZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04p LAorCQkJCSBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSBwYXJ0aXRpb25lZCB0YWJsZSIsIFJl bGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcmVudCkpKSk7CisKKwlrZXkgPSBSZWxhdGlvbkdl dFBhcnRpdGlvbktleShwYXJlbnQpOworCXN0cmF0ZWd5ID0gZ2V0X3BhcnRpdGlvbl9zdHJh dGVneShrZXkpOworCisJaWYgKHN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9IQVNI KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1Rf U1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJwYXJ0aXRpb24gb2YgaGFzaC1wYXJ0aXRpb25l ZCB0YWJsZSBjYW5ub3QgYmUgbWVyZ2VkIikpKTsKKworCS8qIElzIGN1cnJlbnQgcGFydGl0 aW9uIGEgREVGQVVMVCBwYXJ0aXRpb24/ICovCisJZGVmYXVsdFBhcnRPaWQgPSBnZXRfZGVm YXVsdF9vaWRfZnJvbV9wYXJ0ZGVzYygKKwkJCQkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0UGFy dGl0aW9uRGVzYyhwYXJlbnQsIHRydWUpKTsKKworCWZvcmVhY2gobGlzdHB0ciwgcGFydGNt ZC0+cGFydGxpc3QpCisJeworCQlSYW5nZVZhciAgICpuYW1lID0gKFJhbmdlVmFyICopIGxm aXJzdChsaXN0cHRyKTsKKworCQkvKiBQYXJ0aXRpb25zIGluIHRoZSBsaXN0IHNob3VsZCBo YXZlIGRpZmZlcmVudCBuYW1lcy4gKi8KKwkJZm9yX2VhY2hfY2VsbChsaXN0cHRyMiwgcGFy dGNtZC0+cGFydGxpc3QsIGxuZXh0KHBhcnRjbWQtPnBhcnRsaXN0LCBsaXN0cHRyKSkKKwkJ eworCQkJUmFuZ2VWYXIgICAqbmFtZTIgPSAoUmFuZ2VWYXIgKikgbGZpcnN0KGxpc3RwdHIy KTsKKworCQkJaWYgKGVxdWFsKG5hbWUsIG5hbWUyKSkKKwkJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfVEFCTEUpLAorCQkJCQkJIGVycm1z ZygicGFydGl0aW9uIHdpdGggbmFtZSBcIiVzXCIgYWxyZWFkeSB1c2VkIiwgbmFtZS0+cmVs bmFtZSkpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBuYW1lMi0+ bG9jYXRpb24pKTsKKwkJfQorCisJCS8qIFNlYXJjaCBERUZBVUxUIHBhcnRpdGlvbiBpbiB0 aGUgbGlzdC4gKi8KKwkJcGFydE9pZCA9IFJhbmdlVmFyR2V0UmVsaWQobmFtZSwgTm9Mb2Nr LCBmYWxzZSk7CisJCWlmIChwYXJ0T2lkID09IGRlZmF1bHRQYXJ0T2lkKQorCQkJaXNEZWZh dWx0UGFydCA9IHRydWU7CisJCXBhcnRPaWRzID0gbGFwcGVuZF9vaWQocGFydE9pZHMsIHBh cnRPaWQpOworCX0KKworCS8qIEFsbG9jYXRlIGJvdW5kIG9mIHJlc3VsdCBwYXJ0aXRpb24u ICovCisJQXNzZXJ0KHBhcnRjbWQtPmJvdW5kID09IE5VTEwpOworCXBhcnRjbWQtPmJvdW5k ID0gbWFrZU5vZGUoUGFydGl0aW9uQm91bmRTcGVjKTsKKworCS8qIEZpbGwgcGFydGl0aW9u IGJvdW5kLiAqLworCXBhcnRjbWQtPmJvdW5kLT5zdHJhdGVneSA9IHN0cmF0ZWd5OworCXBh cnRjbWQtPmJvdW5kLT5sb2NhdGlvbiA9IC0xOworCXBhcnRjbWQtPmJvdW5kLT5pc19kZWZh dWx0ID0gaXNEZWZhdWx0UGFydDsKKwlpZiAoIWlzRGVmYXVsdFBhcnQpCisJCWNhbGN1bGF0 ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKHBhcmVudCwgcGFydGNtZC0+cGFydGxpc3Qs CisJCQkJCQkJCQkJCXBhcnRPaWRzLCBwYXJ0Y21kLT5ib3VuZCwKKwkJCQkJCQkJCQkJY3h0 LT5wc3RhdGUpOworfQorCiAvKgogICogdHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQgLQogICoJ CXBhcnNlIGFuYWx5c2lzIGZvciBBTFRFUiBUQUJMRQpAQCAtMzUzNiw3ICszNjQ4LDcgQEAg dHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQoT2lkIHJlbGlkLCBBbHRlclRhYmxlU3RtdCAqc3Rt dCwKIAkJCQl7CiAJCQkJCVBhcnRpdGlvbkNtZCAqcGFydGNtZCA9IChQYXJ0aXRpb25DbWQg KikgY21kLT5kZWY7CiAKLQkJCQkJdHJhbnNmb3JtUGFydGl0aW9uQ21kKCZjeHQsIHBhcnRj bWQpOworCQkJCQl0cmFuc2Zvcm1QYXJ0aXRpb25DbWQoJmN4dCwgcGFydGNtZC0+Ym91bmQp OwogCQkJCQkvKiBhc3NpZ24gdHJhbnNmb3JtZWQgdmFsdWUgb2YgdGhlIHBhcnRpdGlvbiBi b3VuZCAqLwogCQkJCQlwYXJ0Y21kLT5ib3VuZCA9IGN4dC5wYXJ0Ym91bmQ7CiAJCQkJfQpA QCAtMzU0NCw2ICszNjU2LDI0IEBAIHRyYW5zZm9ybUFsdGVyVGFibGVTdG10KE9pZCByZWxp ZCwgQWx0ZXJUYWJsZVN0bXQgKnN0bXQsCiAJCQkJbmV3Y21kcyA9IGxhcHBlbmQobmV3Y21k cywgY21kKTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBBVF9TcGxpdFBhcnRpdGlvbjoKKwkJ CWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgorCQkJCXsKKwkJCQkJUGFydGl0aW9uQ21kICpw YXJ0Y21kID0gKFBhcnRpdGlvbkNtZCAqKSBjbWQtPmRlZjsKKworCQkJCQlpZiAobGlzdF9s ZW5ndGgocGFydGNtZC0+cGFydGxpc3QpIDwgMikKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJ CQkJCQkJCSBlcnJtc2coImxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW5z IGF0IGxlYXN0IHR3byBpdGVtcyIpKSk7CisKKwkJCQkJaWYgKGNtZC0+c3VidHlwZSA9PSBB VF9TcGxpdFBhcnRpdGlvbikKKwkJCQkJCXRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvclNwbGl0 KCZjeHQsIHBhcnRjbWQpOworCQkJCQllbHNlCisJCQkJCQl0cmFuc2Zvcm1QYXJ0aXRpb25D bWRGb3JNZXJnZSgmY3h0LCBwYXJ0Y21kKTsKKwkJCQkJbmV3Y21kcyA9IGxhcHBlbmQobmV3 Y21kcywgY21kKTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCiAJCQlkZWZhdWx0OgogCiAJCQkJ LyoKQEAgLTM5MzUsMTMgKzQwNjUsMTMgQEAgc2V0U2NoZW1hTmFtZShjaGFyICpjb250ZXh0 X3NjaGVtYSwgY2hhciAqKnN0bXRfc2NoZW1hX25hbWUpCiAKIC8qCiAgKiB0cmFuc2Zvcm1Q YXJ0aXRpb25DbWQKLSAqCQlBbmFseXplIHRoZSBBVFRBQ0gvREVUQUNIIFBBUlRJVElPTiBj b21tYW5kCisgKgkJQW5hbHl6ZSB0aGUgQVRUQUNIL0RFVEFDSC9TUExJVCBQQVJUSVRJT04g Y29tbWFuZAogICoKLSAqIEluIGNhc2Ugb2YgdGhlIEFUVEFDSCBQQVJUSVRJT04gY29tbWFu ZCwgY3h0LT5wYXJ0Ym91bmQgaXMgc2V0IHRvIHRoZQotICogdHJhbnNmb3JtZWQgdmFsdWUg b2YgY21kLT5ib3VuZC4KKyAqIEluIGNhc2Ugb2YgdGhlIEFUVEFDSC9TUExJVCBQQVJUSVRJ T04gY29tbWFuZCwgY3h0LT5wYXJ0Ym91bmQgaXMgc2V0IHRvIHRoZQorICogdHJhbnNmb3Jt ZWQgdmFsdWUgb2YgYm91bmQuCiAgKi8KIHN0YXRpYyB2b2lkCi10cmFuc2Zvcm1QYXJ0aXRp b25DbWQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21kICpjbWQpCit0cmFu c2Zvcm1QYXJ0aXRpb25DbWQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQm91 bmRTcGVjICpib3VuZCkKIHsKIAlSZWxhdGlvbglwYXJlbnRSZWwgPSBjeHQtPnJlbDsKIApA QCAtMzk1MCw5ICs0MDgwLDkgQEAgdHJhbnNmb3JtUGFydGl0aW9uQ21kKENyZWF0ZVN0bXRD b250ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqY21kKQogCQljYXNlIFJFTEtJTkRfUEFSVElU SU9ORURfVEFCTEU6CiAJCQkvKiB0cmFuc2Zvcm0gdGhlIHBhcnRpdGlvbiBib3VuZCwgaWYg YW55ICovCiAJCQlBc3NlcnQoUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50UmVsKSAh PSBOVUxMKTsKLQkJCWlmIChjbWQtPmJvdW5kICE9IE5VTEwpCisJCQlpZiAoYm91bmQgIT0g TlVMTCkKIAkJCQljeHQtPnBhcnRib3VuZCA9IHRyYW5zZm9ybVBhcnRpdGlvbkJvdW5kKGN4 dC0+cHN0YXRlLCBwYXJlbnRSZWwsCi0JCQkJCQkJCQkJCQkJCSBjbWQtPmJvdW5kKTsKKwkJ CQkJCQkJCQkJCQkJIGJvdW5kKTsKIAkJCWJyZWFrOwogCQljYXNlIFJFTEtJTkRfUEFSVElU SU9ORURfSU5ERVg6CiAKQEAgLTM5NjAsNyArNDA5MCw3IEBAIHRyYW5zZm9ybVBhcnRpdGlv bkNtZChDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKmNtZCkKIAkJCSAq IEEgcGFydGl0aW9uZWQgaW5kZXggY2Fubm90IGhhdmUgYSBwYXJ0aXRpb24gYm91bmQgc2V0 LiAgQUxURVIKIAkJCSAqIElOREVYIHByZXZlbnRzIHRoYXQgd2l0aCBpdHMgZ3JhbW1hciwg YnV0IG5vdCBBTFRFUiBUQUJMRS4KIAkJCSAqLwotCQkJaWYgKGNtZC0+Ym91bmQgIT0gTlVM TCkKKwkJCWlmIChib3VuZCAhPSBOVUxMKQogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQko ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAogCQkJCQkJIGVy cm1zZygiXCIlc1wiIGlzIG5vdCBhIHBhcnRpdGlvbmVkIHRhYmxlIiwKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMgYi9zcmMvYmFja2VuZC9w YXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCmluZGV4IDZiMzUxMTFlYmI2Li5hYTMzMmU4MjA3 ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYwor KysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCkBAIC00OTk4LDMg KzQ5OTgsODQ2IEBAIHNhdGlzZmllc19oYXNoX3BhcnRpdGlvbihQR19GVU5DVElPTl9BUkdT KQogCiAJUEdfUkVUVVJOX0JPT0wocm93SGFzaCAlIG1vZHVsdXMgPT0gcmVtYWluZGVyKTsK IH0KKworLyoKKyAqIGNoZWNrX3BhcnRpdGlvbnNfbm90X292ZXJsYXBfcmFuZ2UKKyAqCisg KiBDaGVja3MgdGhhdCBib3VuZHMgb2YgcGFydGl0aW9ucyAobmFtZSwgYm91bmQpIGFuZCAo cHJldl9uYW1lLCBwcmV2X2JvdW5kKQorICogZG8gbm90IG92ZXJsYXAuIExvd2VyIGJvdW5k IG9mIHBhcnRpdGlvbiAicHJldl9uYW1lIiBzaG91bGQgYmUgbGVzcyBvciBlcXVhbAorICog dGhhbiBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gIm5hbWUiLgorICogSW4gY2FzZSBkZWZh dWx0UGFydD10cnVlIGNhbiBiZSBmcmVlIHNwYWNlIGJldHdlZW4gYm91bmQgYW5kIHByZXZf Ym91bmQuCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19wYXJ0aXRpb25zX25vdF9vdmVybGFw X3JhbmdlKFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJICAgUmFuZ2VWYXIgKm5hbWUsCisJ CQkJCQkJCSAgIFBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQsCisJCQkJCQkJCSAgIFJhbmdl VmFyICpwcmV2X25hbWUsCisJCQkJCQkJCSAgIFBhcnRpdGlvbkJvdW5kU3BlYyAqcHJldl9i b3VuZCwKKwkJCQkJCQkJICAgYm9vbCBkZWZhdWx0UGFydCwKKwkJCQkJCQkJICAgUGFyc2VT dGF0ZSAqcHN0YXRlKQoreworCVBhcnRpdGlvbktleSBrZXkgPSBSZWxhdGlvbkdldFBhcnRp dGlvbktleShwYXJlbnQpOworCVBhcnRpdGlvblJhbmdlQm91bmQgKmxvd2VyOworCVBhcnRp dGlvblJhbmdlQm91bmQgKnByZXZ1cHBlcjsKKwlpbnQJCQljbXB2YWw7CisKKwlBc3NlcnQo a2V5LT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0UpOworCisJbG93ZXIg PSBtYWtlX29uZV9wYXJ0aXRpb25fcmJvdW5kKGtleSwgLTEsIGJvdW5kLT5sb3dlcmRhdHVt cywgdHJ1ZSk7CisJcHJldnVwcGVyID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChrZXks IC0xLCBwcmV2X2JvdW5kLT51cHBlcmRhdHVtcywgZmFsc2UpOworCisJLyogbG93ZXIxPWZh bHNlIGZvciBjb3JyZWN0IGNvbXBhcmlzb24gbG93ZXIgYW5kIHVwcGVyIGJvdW5kcyAqLwor CWNtcHZhbCA9IHBhcnRpdGlvbl9yYm91bmRfY21wKGtleS0+cGFydG5hdHRzLAorCQkJCQkJ CQkgIGtleS0+cGFydHN1cGZ1bmMsCisJCQkJCQkJCSAga2V5LT5wYXJ0Y29sbGF0aW9uLAor CQkJCQkJCQkgIGxvd2VyLT5kYXR1bXMsIGxvd2VyLT5raW5kLAorCQkJCQkJCQkgIGZhbHNl LCBwcmV2dXBwZXIpOworCWlmICgoIWRlZmF1bHRQYXJ0ICYmIGNtcHZhbCkgfHwgKGRlZmF1 bHRQYXJ0ICYmIGNtcHZhbCA8IDApKQorCXsKKwkJUGFydGl0aW9uUmFuZ2VEYXR1bSAqZGF0 dW0gPSBsaW5pdGlhbChib3VuZC0+bG93ZXJkYXR1bXMpOworCisJCWVyZXBvcnQoRVJST1Is CisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJ CQkgZXJybXNnKCJsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIGNvbmZsaWN0cyB3 aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkJ bmFtZS0+cmVsbmFtZSwgcHJldl9uYW1lLT5yZWxuYW1lKSwKKwkJCQkgcGFyc2VyX2VycnBv c2l0aW9uKHBzdGF0ZSwgZGF0dW0tPmxvY2F0aW9uKSkpOworCX0KK30KKworLyoKKyAqIGNo ZWNrX3BhcnRpdGlvbnNfbm90X292ZXJsYXBfbGlzdAorICoKKyAqIENoZWNrcyB0aGF0IHZh bHVlcyBvZiBuZXcgcGFydGl0aW9ucyBkbyBub3Qgb3ZlcmxhcC4KKyAqIHBhcnRzOiBhcnJh eSBvZiBTaW5nbGVQYXJ0aXRpb25TcGVjIHN0cnVjdHMKKyAqIG5wYXJ0czogc2l6ZSBvZiBh cnJheSAicGFydHMiLgorICovCitzdGF0aWMgdm9pZAorY2hlY2tfcGFydGl0aW9uc19ub3Rf b3ZlcmxhcF9saXN0KFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJICBTaW5nbGVQYXJ0aXRp b25TcGVjICogKnBhcnRzLAorCQkJCQkJCQkgIGludCBucGFydHMsCisJCQkJCQkJCSAgUGFy c2VTdGF0ZSAqcHN0YXRlKQoreworCVBhcnRpdGlvbktleSBrZXkgUEdfVVNFRF9GT1JfQVNT RVJUU19PTkxZID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlpbnQJCQlv dmVybGFwX2xvY2F0aW9uID0gLTE7CisJaW50CQkJaSwKKwkJCQlqOworCVNpbmdsZVBhcnRp dGlvblNwZWMgKnNwczEsCisJCQkgICAqc3BzMjsKKwlMaXN0CSAgICpvdmVybGFwOworCisJ QXNzZXJ0KGtleS0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1QpOworCisJ Zm9yIChpID0gMDsgaSA8IG5wYXJ0czsgaSsrKQorCXsKKwkJc3BzMSA9IHBhcnRzW2ldOwor CisJCWZvciAoaiA9IGkgKyAxOyBqIDwgbnBhcnRzOyBqKyspCisJCXsKKwkJCXNwczIgPSBw YXJ0c1tqXTsKKworCQkJLyoKKwkJCSAqIENhbGN1bGF0ZSBpbnRlcnNlY3Rpb24gYmV0d2Vl biB2YWx1ZXMgb2YgdHdvIHBhcnRpdGlvbnMuCisJCQkgKi8KKwkJCW92ZXJsYXAgPSBsaXN0 X2ludGVyc2VjdGlvbihzcHMxLT5ib3VuZC0+bGlzdGRhdHVtcywKKwkJCQkJCQkJCQlzcHMy LT5ib3VuZC0+bGlzdGRhdHVtcyk7CisJCQlpZiAobGlzdF9sZW5ndGgob3ZlcmxhcCkgPiAw KQorCQkJeworCQkJCUNvbnN0CSAgICp2YWwgPSAoQ29uc3QgKikgbGZpcnN0KGxpc3RfaGVh ZChvdmVybGFwKSk7CisKKwkJCQlvdmVybGFwX2xvY2F0aW9uID0gdmFsLT5sb2NhdGlvbjsK KwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09C SkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCSBlcnJtc2coIm5ldyBwYXJ0aXRpb24gXCIlc1wi IHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIG5ldyBwYXJ0aXRpb24gXCIlc1wiIiwKKwkJ CQkJCQkJc3BzMS0+bmFtZS0+cmVsbmFtZSwgc3BzMi0+bmFtZS0+cmVsbmFtZSksCisJCQkJ CQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgb3ZlcmxhcF9sb2NhdGlvbikpKTsKKwkJ CX0KKwkJfQorCX0KK30KKworLyoKKyAqIGNoZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9yX3Nw bGl0X3JhbmdlCisgKgorICogQ2hlY2tzIHRoYXQgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb24g aXMgaW5zaWRlIGJvdW5kcyBvZiBzcGxpdCBwYXJ0aXRpb24KKyAqICh3aXRoIHNwbGl0UGFy dE9pZCkuIElmIGZpcnN0PXRydWUgdGhlbiBsb3dlciBib3VuZHMgb2YgcGFydGl0aW9ucyBz aG91bGQKKyAqIGJlIGVxdWFscy4gSWYgbGFzdD10cnVlIHRoZW4gdXBwZXIgYm91bmRzIG9m IHBhcnRpdGlvbnMgc2hvdWxkIGJlIGVxdWFscy4KKyAqIElmIGRlZmluZWQgc3BzUHJldiB0 aGVuIGZ1bmN0aW9uIGNvbXBhcmVzIGxvd2VyIGJvdW5kIG9mIHNwZWMgd2l0aCB1cHBlcgor ICogYm91bmQgb2Ygc3BzUHJldi4KKyAqIGRlZmF1bHRQYXJ0PXRydWUgaW4gY2FzZSBwYXJ0 aXRpb25lZCB0YWJsZSBoYXMgREVGQVVMVCBwYXJ0aXRpb24uCisgKi8KK3N0YXRpYyB2b2lk CitjaGVja19wYXJ0aXRpb25fYm91bmRzX2Zvcl9zcGxpdF9yYW5nZShjaGFyICpyZWxuYW1l LCBSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJCQkgICBQYXJ0aXRpb25Cb3VuZFNwZWMgKnNw ZWMsCisJCQkJCQkJCQkgICBPaWQgc3BsaXRQYXJ0T2lkLAorCQkJCQkJCQkJICAgYm9vbCBm aXJzdCwKKwkJCQkJCQkJCSAgIGJvb2wgbGFzdCwKKwkJCQkJCQkJCSAgIGJvb2wgZGVmYXVs dFBhcnQsCisJCQkJCQkJCQkgICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFydGl0aW9u S2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJUGFydGl0aW9u RGVzYyBwYXJ0ZGVzYyA9IFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhwYXJlbnQsIGZhbHNl KTsKKwlQYXJ0aXRpb25Cb3VuZEluZm8gYm91bmRpbmZvID0gcGFydGRlc2MtPmJvdW5kaW5m bzsKKwlpbnQJCQl3aXRoID0gLTE7CisJYm9vbAkJb3ZlcmxhcCA9IGZhbHNlOworCWludAkJ CW92ZXJsYXBfbG9jYXRpb24gPSAtMTsKKwlQYXJ0aXRpb25SYW5nZUJvdW5kICpsb3dlciwK KwkJCSAgICp1cHBlcjsKKwlpbnQJCQljbXB2YWw7CisKKwlBc3NlcnQoa2V5LT5zdHJhdGVn eSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0UpOworCUFzc2VydChzcGVjLT5zdHJhdGVn eSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0UpOworCisJbG93ZXIgPSBtYWtlX29uZV9w YXJ0aXRpb25fcmJvdW5kKGtleSwgLTEsIHNwZWMtPmxvd2VyZGF0dW1zLCB0cnVlKTsKKwl1 cHBlciA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCAtMSwgc3BlYy0+dXBwZXJk YXR1bXMsIGZhbHNlKTsKKworCS8qCisJICogRmlyc3QgY2hlY2sgaWYgdGhlIHJlc3VsdGlu ZyByYW5nZSB3b3VsZCBiZSBlbXB0eSB3aXRoIHNwZWNpZmllZCBsb3dlcgorCSAqIGFuZCB1 cHBlciBib3VuZHMuICBwYXJ0aXRpb25fcmJvdW5kX2NtcCBjYW5ub3QgcmV0dXJuIHplcm8g aGVyZSwgc2luY2UKKwkgKiB0aGUgbG93ZXItYm91bmQgZmxhZ3MgYXJlIGRpZmZlcmVudC4K KwkgKi8KKwljbXB2YWwgPSBwYXJ0aXRpb25fcmJvdW5kX2NtcChrZXktPnBhcnRuYXR0cywK KwkJCQkJCQkJICBrZXktPnBhcnRzdXBmdW5jLAorCQkJCQkJCQkgIGtleS0+cGFydGNvbGxh dGlvbiwKKwkJCQkJCQkJICBsb3dlci0+ZGF0dW1zLCBsb3dlci0+a2luZCwKKwkJCQkJCQkJ ICB0cnVlLCB1cHBlcik7CisJQXNzZXJ0KGNtcHZhbCAhPSAwKTsKKwlpZiAoY21wdmFsID4g MCkKKwl7CisJCS8qIFBvaW50IHRvIHByb2JsZW1hdGljIGtleSBpbiB0aGUgbG93ZXIgZGF0 dW1zIGxpc3QuICovCisJCVBhcnRpdGlvblJhbmdlRGF0dW0gKmRhdHVtID0gbGlzdF9udGgo c3BlYy0+bG93ZXJkYXR1bXMsCisJCQkJCQkJCQkJCSAgY21wdmFsIC0gMSk7CisKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklO SVRJT04pLAorCQkJCSBlcnJtc2coImVtcHR5IHJhbmdlIGJvdW5kIHNwZWNpZmllZCBmb3Ig cGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCQlyZWxuYW1lKSwKKwkJCQkgZXJyZGV0YWlsKCJT cGVjaWZpZWQgbG93ZXIgYm91bmQgJXMgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHVw cGVyIGJvdW5kICVzLiIsCisJCQkJCQkgICBnZXRfcmFuZ2VfcGFydGJvdW5kX3N0cmluZyhz cGVjLT5sb3dlcmRhdHVtcyksCisJCQkJCQkgICBnZXRfcmFuZ2VfcGFydGJvdW5kX3N0cmlu ZyhzcGVjLT51cHBlcmRhdHVtcykpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRl LCBkYXR1bS0+bG9jYXRpb24pKSk7CisJfQorCisJaWYgKHBhcnRkZXNjLT5ucGFydHMgPiAw KQorCXsKKwkJaW50CQkJb2Zmc2V0OworCisJCUFzc2VydChib3VuZGluZm8gJiYKKwkJCSAg IGJvdW5kaW5mby0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFICYmCisJ CQkgICAoYm91bmRpbmZvLT5uZGF0dW1zID4gMCB8fAorCQkJCXBhcnRpdGlvbl9ib3VuZF9o YXNfZGVmYXVsdChib3VuZGluZm8pKSk7CisKKwkJLyoKKwkJICogVGVzdCB3aGV0aGVyIHRo ZSBuZXcgbG93ZXIgYm91bmQgKHdoaWNoIGlzIHRyZWF0ZWQgaW5jbHVzaXZlbHkgYXMKKwkJ ICogcGFydCBvZiB0aGUgbmV3IHBhcnRpdGlvbikgbGllcyBpbnNpZGUgYW4gZXhpc3Rpbmcg cGFydGl0aW9uLCBvciBpbgorCQkgKiBhIGdhcC4KKwkJICoKKwkJICogSWYgaXQncyBpbnNp ZGUgYW4gZXhpc3RpbmcgcGFydGl0aW9uLCB0aGUgYm91bmQgYXQgb2Zmc2V0ICsgMSB3aWxs CisJCSAqIGJlIHRoZSB1cHBlciBib3VuZCBvZiB0aGF0IHBhcnRpdGlvbiwgYW5kIGl0cyBp bmRleCB3aWxsIGJlID49IDAuCisJCSAqCisJCSAqIElmIGl0J3MgaW4gYSBnYXAsIHRoZSBi b3VuZCBhdCBvZmZzZXQgKyAxIHdpbGwgYmUgdGhlIGxvd2VyIGJvdW5kCisJCSAqIG9mIHRo ZSBuZXh0IHBhcnRpdGlvbiwgYW5kIGl0cyBpbmRleCB3aWxsIGJlIC0xLiBUaGlzIGlzIGFs c28gdHJ1ZQorCQkgKiBpZiB0aGVyZSBpcyBubyBuZXh0IHBhcnRpdGlvbiwgc2luY2UgdGhl IGluZGV4IGFycmF5IGlzIGluaXRpYWxpc2VkCisJCSAqIHdpdGggYW4gZXh0cmEgLTEgYXQg dGhlIGVuZC4KKwkJICovCisJCW9mZnNldCA9IHBhcnRpdGlvbl9yYW5nZV9ic2VhcmNoKGtl eS0+cGFydG5hdHRzLAorCQkJCQkJCQkJCSBrZXktPnBhcnRzdXBmdW5jLAorCQkJCQkJCQkJ CSBrZXktPnBhcnRjb2xsYXRpb24sCisJCQkJCQkJCQkJIGJvdW5kaW5mbywgbG93ZXIsCisJ CQkJCQkJCQkJICZjbXB2YWwpOworCisJCWlmIChib3VuZGluZm8tPmluZGV4ZXNbb2Zmc2V0 ICsgMV0gPCAwKQorCQl7CisJCQlQYXJ0aXRpb25SYW5nZURhdHVtICpkYXR1bSA9IGxpc3Rf bnRoKHNwZWMtPmxvd2VyZGF0dW1zLCBBYnMoY21wdmFsKSAtIDEpOworCisJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJ T04pLAorCQkJCQkgZXJybXNnKCJib3VuZHMgb2YgcGFydGl0aW9uIFwiJXNcIiBhcmUgb3V0 c2lkZSBib3VuZHMgb2Ygc3BsaXQgcGFydGl0aW9uIiwKKwkJCQkJCQlyZWxuYW1lKSwKKwkJ CQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5sb2NhdGlvbikpKTsKKwkJ fQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBUaGUgbmV3IHBhcnRpdGlvbiBvdmVybGFw cyB3aXRoIHRoZSBleGlzdGluZyBwYXJ0aXRpb24gYmV0d2VlbgorCQkJICogb2Zmc2V0IGFu ZCBvZmZzZXQgKyAxLgorCQkJICovCisJCQlQYXJ0aXRpb25SYW5nZURhdHVtICpkYXR1bTsK KworCQkJLyoKKwkJCSAqIFBvaW50IHRvIHByb2JsZW1hdGljIGtleSBpbiB0aGUgbG93ZXIg ZGF0dW1zIGxpc3Q7IGlmIHdlIGhhdmUKKwkJCSAqIGVxdWFsaXR5LCBwb2ludCB0byB0aGUg Zmlyc3Qgb25lLgorCQkJICovCisJCQlkYXR1bSA9IGNtcHZhbCA9PSAwID8gbGluaXRpYWwo c3BlYy0+bG93ZXJkYXR1bXMpIDoKKwkJCQlsaXN0X250aChzcGVjLT5sb3dlcmRhdHVtcywg QWJzKGNtcHZhbCkgLSAxKTsKKwkJCW92ZXJsYXBfbG9jYXRpb24gPSBkYXR1bS0+bG9jYXRp b247CisJCQl3aXRoID0gYm91bmRpbmZvLT5pbmRleGVzW29mZnNldCArIDFdOworCQkJaWYg KHBhcnRkZXNjLT5vaWRzW3dpdGhdICE9IHNwbGl0UGFydE9pZCkKKwkJCQlvdmVybGFwID0g dHJ1ZTsKKwkJCWVsc2UgaWYgKGZpcnN0IHx8IGxhc3QpCisJCQl7CisJCQkJLyoKKwkJCQkg KiBMb3dlciBib3VuZCBvZiBmaXJzdCBwYXJ0aXRpb24gc2hvdWxkIGJlIGVxdWFscyB0byBs b3dlcgorCQkJCSAqIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbi4gVXBwZXIgYm91bmQgb2Yg bGFzdCBwYXJ0aXRpb24KKwkJCQkgKiBzaG91bGQgYmUgZXF1YWxzIHRvIHVwcGVyIGJvdW5k IG9mIHNwbGl0IHBhcnRpdGlvbi4KKwkJCQkgKgorCQkJCSAqIE5lZWQgdG8gZG8gZXhhY3Qg Y2hlY2sgb2YgdGhpcyBjb25kaXRpb24gaWYgbm90IGV4aXN0cworCQkJCSAqIERFRkFVTFQg cGFydGl0aW9uLiBPdGhlcndpc2UgY2FuIGJlIHNwYWNlcyBiZXR3ZWVuCisJCQkJICogcGFy dGl0aW9ucy4KKwkJCQkgKi8KKwkJCQlEYXR1bQkgICAqZGF0dW1zOworCQkJCVBhcnRpdGlv blJhbmdlRGF0dW1LaW5kICpraW5kOworCQkJCWludAkJCWN1cm9mZnNldCA9IG9mZnNldCAr IChsYXN0ID8gMSA6IDApOworCisJCQkJZGF0dW1zID0gYm91bmRpbmZvLT5kYXR1bXNbY3Vy b2Zmc2V0XTsKKwkJCQlraW5kID0gYm91bmRpbmZvLT5raW5kW2N1cm9mZnNldF07CisKKwkJ CQljbXB2YWwgPSBwYXJ0aXRpb25fcmJvdW5kX2NtcChrZXktPnBhcnRuYXR0cywKKwkJCQkJ CQkJCQkJICBrZXktPnBhcnRzdXBmdW5jLAorCQkJCQkJCQkJCQkgIGtleS0+cGFydGNvbGxh dGlvbiwKKwkJCQkJCQkJCQkJICBkYXR1bXMsIGtpbmQsCisJCQkJCQkJCQkJCSAgZmlyc3Qs CisJCQkJCQkJCQkJCSAgZmlyc3QgPyBsb3dlciA6IHVwcGVyKTsKKwkJCQlpZiAoKCFkZWZh dWx0UGFydCAmJiBjbXB2YWwpIHx8CisJCQkJLyogSXMgcGFydGl0aW9uIGJvdW5kIG91dHNp ZGUgb2Ygc3BsaXQgcGFydGl0aW9uIGJvdW5kPyAqLworCQkJCQkoZGVmYXVsdFBhcnQgJiYg Zmlyc3QgJiYgY21wdmFsID4gMCkgfHwKKwkJCQkJKGRlZmF1bHRQYXJ0ICYmIGxhc3QgJiYg Y21wdmFsIDwgMCkpCisJCQkJeworCQkJCQlQYXJ0aXRpb25SYW5nZURhdHVtICpkYXR1bSA9 IGxpc3RfbnRoKGZpcnN0ID8KKwkJCQkJCQkJCQkJCQkJICBzcGVjLT5sb3dlcmRhdHVtcyA6 IHNwZWMtPnVwcGVyZGF0dW1zLAorCQkJCQkJCQkJCQkJCQkgIEFicyhjbXB2YWwpIC0gMSk7 CisKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFM SURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCSBlcnJtc2coIiVzIGJvdW5kIG9mIHBh cnRpdGlvbiBcIiVzXCIgaXMgbm90IGVxdWFscyB0byAlcyBib3VuZCBvZiBzcGxpdCBwYXJ0 aXRpb24iLAorCQkJCQkJCQkJZmlyc3QgPyAibG93ZXIiIDogInVwcGVyIiwKKwkJCQkJCQkJ CXJlbG5hbWUsCisJCQkJCQkJCQlmaXJzdCA/ICJsb3dlciIgOiAidXBwZXIiKSwKKwkJCQkJ CQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGF0dW0tPmxvY2F0aW9uKSkpOworCQkJ CX0KKwkJCX0KKwkJfQorCX0KKworCWlmIChvdmVybGFwKQorCXsKKwkJQXNzZXJ0KHdpdGgg Pj0gMCk7CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElE X09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkgZXJybXNnKCJuZXcgcGFydGl0aW9uIFwiJXNc IiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciAobm90IHNwbGl0KSBwYXJ0aXRpb24gXCIl c1wiIiwKKwkJCQkJCXJlbG5hbWUsIGdldF9yZWxfbmFtZShwYXJ0ZGVzYy0+b2lkc1t3aXRo XSkpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvdmVybGFwX2xvY2F0aW9u KSkpOworCX0KK30KKworLyoKKyAqIGNoZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9yX3NwbGl0 X2xpc3QKKyAqCisgKiBDaGVja3MgdGhhdCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbiBpcyBp bnNpZGUgYm91bmRzIG9mIHNwbGl0IHBhcnRpdGlvbgorICogKHdpdGggc3BsaXRQYXJ0T2lk KS4KKyAqLworc3RhdGljIHZvaWQKK2NoZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9yX3NwbGl0 X2xpc3QoY2hhciAqcmVsbmFtZSwgUmVsYXRpb24gcGFyZW50LAorCQkJCQkJCQkJICBQYXJ0 aXRpb25Cb3VuZFNwZWMgKnNwZWMsCisJCQkJCQkJCQkgIE9pZCBzcGxpdFBhcnRPaWQsCisJ CQkJCQkJCQkgIFBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkga2V5ID0g UmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlQYXJ0aXRpb25EZXNjIHBhcnRk ZXNjID0gUmVsYXRpb25HZXRQYXJ0aXRpb25EZXNjKHBhcmVudCwgZmFsc2UpOworCVBhcnRp dGlvbkJvdW5kSW5mbyBib3VuZGluZm8gPSBwYXJ0ZGVzYy0+Ym91bmRpbmZvOworCWludAkJ CXdpdGggPSAtMTsKKwlib29sCQlvdmVybGFwID0gZmFsc2U7CisJaW50CQkJb3ZlcmxhcF9s b2NhdGlvbiA9IC0xOworCUxpc3RDZWxsICAgKmNlbGw7CisKKwlBc3NlcnQoa2V5LT5zdHJh dGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVCk7CisJQXNzZXJ0KHNwZWMtPnN0cmF0 ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNUKTsKKworCS8qIFNob3VsZCBiZSBleGlz dHMgYXQgbGVhc3Qgb25lIHBhcnRpdGlvbiBmb3Igc3BsaXQ6ICovCisJQXNzZXJ0KHBhcnRk ZXNjLT5ucGFydHMgPiAwKTsKKworCUFzc2VydChib3VuZGluZm8gJiYKKwkJICAgYm91bmRp bmZvLT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVCAmJgorCQkgICAoYm91 bmRpbmZvLT5uZGF0dW1zID4gMCB8fAorCQkJcGFydGl0aW9uX2JvdW5kX2FjY2VwdHNfbnVs bHMoYm91bmRpbmZvKSB8fAorCQkJcGFydGl0aW9uX2JvdW5kX2hhc19kZWZhdWx0KGJvdW5k aW5mbykpKTsKKworCWZvcmVhY2goY2VsbCwgc3BlYy0+bGlzdGRhdHVtcykKKwl7CisJCUNv bnN0CSAgICp2YWwgPSBsZmlyc3Rfbm9kZShDb25zdCwgY2VsbCk7CisKKwkJb3ZlcmxhcF9s b2NhdGlvbiA9IHZhbC0+bG9jYXRpb247CisJCWlmICghdmFsLT5jb25zdGlzbnVsbCkKKwkJ eworCQkJaW50CQkJb2Zmc2V0OworCQkJYm9vbAkJZXF1YWw7CisKKwkJCW9mZnNldCA9IHBh cnRpdGlvbl9saXN0X2JzZWFyY2goJmtleS0+cGFydHN1cGZ1bmNbMF0sCisJCQkJCQkJCQkJ CWtleS0+cGFydGNvbGxhdGlvbiwKKwkJCQkJCQkJCQkJYm91bmRpbmZvLAorCQkJCQkJCQkJ CQl2YWwtPmNvbnN0dmFsdWUsCisJCQkJCQkJCQkJCSZlcXVhbCk7CisJCQlpZiAob2Zmc2V0 ID49IDAgJiYgZXF1YWwpCisJCQl7CisJCQkJd2l0aCA9IGJvdW5kaW5mby0+aW5kZXhlc1tv ZmZzZXRdOworCQkJCWlmIChwYXJ0ZGVzYy0+b2lkc1t3aXRoXSAhPSBzcGxpdFBhcnRPaWQp CisJCQkJeworCQkJCQlvdmVybGFwID0gdHJ1ZTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJ fQorCQkJZWxzZQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RF X0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJIGVycm1zZygibmV3IHBhcnRp dGlvbiBcIiVzXCIgY2Fubm90IGhhdmUgdGhpcyB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRp dGlvbiBkb2VzIG5vdCBoYXZlIiwKKwkJCQkJCQkJcmVsbmFtZSksCisJCQkJCQkgcGFyc2Vy X2VycnBvc2l0aW9uKHBzdGF0ZSwgb3ZlcmxhcF9sb2NhdGlvbikpKTsKKwkJfQorCQllbHNl IGlmIChwYXJ0aXRpb25fYm91bmRfYWNjZXB0c19udWxscyhib3VuZGluZm8pKQorCQl7CisJ CQl3aXRoID0gYm91bmRpbmZvLT5udWxsX2luZGV4OworCQkJaWYgKHBhcnRkZXNjLT5vaWRz W3dpdGhdICE9IHNwbGl0UGFydE9pZCkKKwkJCXsKKwkJCQlvdmVybGFwID0gdHJ1ZTsKKwkJ CQlicmVhazsKKwkJCX0KKwkJfQorCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQko ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkgZXJy bXNnKCJuZXcgcGFydGl0aW9uIFwiJXNcIiBjYW5ub3QgaGF2ZSBOVUxMIHZhbHVlIGJlY2F1 c2Ugc3BsaXQgcGFydGl0aW9uIGRvZXMgbm90IGhhdmUiLAorCQkJCQkJCXJlbG5hbWUpLAor CQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgb3ZlcmxhcF9sb2NhdGlvbikpKTsK Kwl9CisKKwlpZiAob3ZlcmxhcCkKKwl7CisJCUFzc2VydCh3aXRoID49IDApOworCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5J VElPTiksCisJCQkJIGVycm1zZygibmV3IHBhcnRpdGlvbiBcIiVzXCIgd291bGQgb3Zlcmxh cCB3aXRoIGFub3RoZXIgKG5vdCBzcGxpdCkgcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCQly ZWxuYW1lLCBnZXRfcmVsX25hbWUocGFydGRlc2MtPm9pZHNbd2l0aF0pKSwKKwkJCQkgcGFy c2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgb3ZlcmxhcF9sb2NhdGlvbikpKTsKKwl9Cit9CisK Ky8qCisgKiBmaW5kX3ZhbHVlX2luX25ld19wYXJ0aXRpb25zCisgKgorICogRnVuY3Rpb24g cmV0dXJucyAidHJ1ZSIgaW4gY2FzZSBsaXN0IG9mIG5ldyBwYXJ0aXRpb25zIChwYXJ0bGlz dCkgY29udGFpbnMKKyAqIHZhbHVlICJ2YWx1ZSIgYW5kICJmYWxzZSIgaWYgbm90IGNvbnRh aW5zLgorICovCitzdGF0aWMgYm9vbAorZmluZF92YWx1ZV9pbl9uZXdfcGFydGl0aW9ucyhG bWdySW5mbyAqcGFydHN1cGZ1bmMsCisJCQkJCQkJIE9pZCAqcGFydGNvbGxhdGlvbiwKKwkJ CQkJCQkgU2luZ2xlUGFydGl0aW9uU3BlYyAqICpwYXJ0cywKKwkJCQkJCQkgaW50IG5wYXJ0 cywKKwkJCQkJCQkgRGF0dW0gdmFsdWUsCisJCQkJCQkJIGJvb2wgaXNudWxsKQoreworCUxp c3RDZWxsICAgKnZhbHB0cjsKKwlpbnQJCQlpOworCisJZm9yIChpID0gMDsgaSA8IG5wYXJ0 czsgaSsrKQorCXsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0gcGFydHNbaV07CisK KwkJZm9yZWFjaCh2YWxwdHIsIHNwcy0+Ym91bmQtPmxpc3RkYXR1bXMpCisJCXsKKwkJCUNv bnN0CSAgICp2YWwgPSBsZmlyc3Rfbm9kZShDb25zdCwgdmFscHRyKTsKKworCQkJaWYgKGlz bnVsbCAmJiB2YWwtPmNvbnN0aXNudWxsKQorCQkJCXJldHVybiB0cnVlOworCisJCQlpZiAo IWlzbnVsbCAmJiAhdmFsLT5jb25zdGlzbnVsbCkKKwkJCXsKKwkJCQlpZiAoRGF0dW1HZXRJ bnQzMihGdW5jdGlvbkNhbGwyQ29sbCgmcGFydHN1cGZ1bmNbMF0sCisJCQkJCQkJCQkJCQkJ cGFydGNvbGxhdGlvblswXSwKKwkJCQkJCQkJCQkJCQl2YWwtPmNvbnN0dmFsdWUsCisJCQkJ CQkJCQkJCQkJdmFsdWUpKSA9PSAwKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJfQor CX0KKwlyZXR1cm4gZmFsc2U7Cit9CisKKy8qCisgKiBjaGVja19wYXJlbnRfdmFsdWVzX2lu X25ld19wYXJ0aXRpb25zCisgKgorICogQ2hlY2tzIHRoYXQgYWxsIHZhbHVlcyBvZiBzcGxp dCBwYXJ0aXRpb24gKHBhcnRPaWQpIGNvbnRhaW5zIGluIG5ldworICogcGFydGl0aW9ucyAo cGFydGxpc3QpLgorICovCitzdGF0aWMgdm9pZAorY2hlY2tfcGFyZW50X3ZhbHVlc19pbl9u ZXdfcGFydGl0aW9ucyhSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJCQkgIE9pZCBwYXJ0T2lk LAorCQkJCQkJCQkJICBTaW5nbGVQYXJ0aXRpb25TcGVjICogKnBhcnRzLAorCQkJCQkJCQkJ ICBpbnQgbnBhcnRzLAorCQkJCQkJCQkJICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFy dGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJUGFy dGl0aW9uRGVzYyBwYXJ0ZGVzYyA9IFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhwYXJlbnQs IGZhbHNlKTsKKwlQYXJ0aXRpb25Cb3VuZEluZm8gYm91bmRpbmZvID0gcGFydGRlc2MtPmJv dW5kaW5mbzsKKwlpbnQJCQlpOworCWJvb2wJCWZvdW5kID0gdHJ1ZTsKKwlib29sCQlzZWFy Y2hOdWxsID0gZmFsc2U7CisJRGF0dW0JCWRhdHVtID0gUG9pbnRlckdldERhdHVtKE5VTEwp OworCisJQXNzZXJ0KGtleS0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1Qp OworCisJLyoKKwkgKiBTcGVjaWFsIHByb2Nlc3NpbmcgZm9yIE5VTEwgdmFsdWUuIFNlYXJj aCBOVUxMLXZhbHVlIGlmIGl0IGNvbnRhaW5zCisJICogc3BsaXQgcGFydGl0aW9uIChwYXJ0 T2lkKS4KKwkgKi8KKwlpZiAocGFydGl0aW9uX2JvdW5kX2FjY2VwdHNfbnVsbHMoYm91bmRp bmZvKSAmJgorCQlwYXJ0ZGVzYy0+b2lkc1tib3VuZGluZm8tPm51bGxfaW5kZXhdID09IHBh cnRPaWQpCisJeworCQlpZiAoIWZpbmRfdmFsdWVfaW5fbmV3X3BhcnRpdGlvbnMoJmtleS0+ cGFydHN1cGZ1bmNbMF0sCisJCQkJCQkJCQkJICBrZXktPnBhcnRjb2xsYXRpb24sIHBhcnRz LCBucGFydHMsIGRhdHVtLCB0cnVlKSkKKwkJeworCQkJZm91bmQgPSBmYWxzZTsKKwkJCXNl YXJjaE51bGwgPSB0cnVlOworCQl9CisJfQorCisJLyoKKwkgKiBTZWFyY2ggYWxsIHZhbHVl cyBvZiBzcGxpdCBwYXJ0aXRpb24gd2l0aCBwYXJ0T2lkIGluIFBhcnRpdGlvbkRlc2Mgb2YK KwkgKiBwYXJ0aXRpb25kZSB0YWJsZS4KKwkgKi8KKwlmb3IgKGkgPSAwOyBpIDwgYm91bmRp bmZvLT5uZGF0dW1zOyBpKyspCisJeworCQlpZiAocGFydGRlc2MtPm9pZHNbYm91bmRpbmZv LT5pbmRleGVzW2ldXSA9PSBwYXJ0T2lkKQorCQl7CisJCQkvKiBXZSBmb3VuZCB2YWx1ZSB0 aGF0IHNwbGl0IHBhcnRpdGlvbiBjb250YWlucy4gKi8KKwkJCWRhdHVtID0gYm91bmRpbmZv LT5kYXR1bXNbaV1bMF07CisJCQlpZiAoIWZpbmRfdmFsdWVfaW5fbmV3X3BhcnRpdGlvbnMo JmtleS0+cGFydHN1cGZ1bmNbMF0sCisJCQkJCQkJCQkJCSAga2V5LT5wYXJ0Y29sbGF0aW9u LCBwYXJ0cywgbnBhcnRzLCBkYXR1bSwgZmFsc2UpKQorCQkJeworCQkJCWZvdW5kID0gZmFs c2U7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwl9CisKKwlpZiAoIWZvdW5kKQorCXsKKwkJ Q29uc3QJICAgKm5vdEZvdW5kVmFsOworCisJCWlmICghc2VhcmNoTnVsbCkKKwkJCS8qIE1h a2UgQ29uc3QgZm9yIGdldCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2Ygbm90IGZvdW5kIHZh bHVlLiAqLworCQkJbm90Rm91bmRWYWwgPSBtYWtlQ29uc3Qoa2V5LT5wYXJ0dHlwaWRbMF0s CisJCQkJCQkJCQlrZXktPnBhcnR0eXBtb2RbMF0sCisJCQkJCQkJCQlrZXktPnBhcnR0eXBj b2xsWzBdLAorCQkJCQkJCQkJa2V5LT5wYXJ0dHlwbGVuWzBdLAorCQkJCQkJCQkJZGF0dW0s CisJCQkJCQkJCQlmYWxzZSwJLyogaXNudWxsICovCisJCQkJCQkJCQlrZXktPnBhcnR0eXBi eXZhbFswXSk7CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lO VkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCSBlcnJtc2coIm5ldyBwYXJ0aXRpb25z IG5vdCBoYXZlIHZhbHVlICVzIGJ1dCBzcGxpdCBwYXJ0aXRpb24gaGFzIiwKKwkJCQkJCXNl YXJjaE51bGwgPyAiTlVMTCIgOiBnZXRfbGlzdF9wYXJ0dmFsdWVfc3RyaW5nKG5vdEZvdW5k VmFsKSkpKTsKKwl9Cit9CisKKy8qCisgKiBjaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdAor ICoKKyAqIE5lZWQgdG8gY2hlY2sgbmV3IHBhcnRpdGlvbnMgZm9yIFNQTElUIFBBUlRJVElP TlMgY29tbWFuZDoKKyAqIDEuIERFRkFVTFQgcGFydGl0aW9uIHNob3VsZCBiZSBvbmUuCisg KiAyLiBOZXcgcGFydGl0aW9ucyBzaG91bGQgaGF2ZSBkaWZmZXJlbnQgbmFtZXMKKyAqICAg ICh3aXRoIGV4aXN0aW5nIHBhcnRpdGlvbnMgdG9vKS4KKyAqIDMuIEJvdW5kcyBvZiBuZXcg cGFydGl0aW9ucyBzaG91bGQgbm90IG92ZXJsYXAgd2l0aCBuZXcgYW5kIGV4aXN0aW5nCisg KiAgICBwYXJ0aXRpb25zLgorICogNC4gSW4gY2FzZSBzcGxpdCBwYXJ0aXRpb24gaXMgREVG QVVMVCBwYXJ0aXRpb24sIG9uZSBvZiBuZXcgcGFydGl0aW9ucworICogICAgc2hvdWxkIGJl IERFRkFVTFQuCisgKiA1LiBJbiBjYXNlIG5ldyBwYXJ0aXRpb25zIG9yIGV4aXN0aW5nIHBh cnRpdGlvbnMgY29udGFpbnMgREVGQVVMVAorICogICAgcGFydGl0aW9uLCBuZXcgcGFydGl0 aW9ucyBjYW4gaGF2ZSBhbnkgYm91bmRzIGluc2lkZSBzcGxpdAorICogICAgcGFydGl0aW9u IGJvdW5kIChjYW4gYmUgc3BhY2VzIGJldHdlZW4gcGFydGl0aW9ucyBib3VuZHMpLgorICog Ni4gSW4gY2FzZSBwYXJ0aXRpb25lZCB0YWJsZSBkb2VzIG5vdCBoYXZlIERFRkFVTFQgcGFy dGl0aW9uLCBERUZBVUxUCisgKiAgICBwYXJ0aXRpb24gY2FuIGJlIGRlZmluZWQgYXMgb25l IG9mIG5ldyBwYXJ0aXRpb24uCisgKiA3LiBJbiBjYXNlIG5ldyBwYXJ0aXRpb25zIG5vdCBj b250YWlucyBERUZBVUxUIHBhcnRpdGlvbiBhbmQKKyAqICAgIHBhcnRpdGlvbmVkIHRhYmxl IGRvZXMgbm90IGhhdmUgREVGQVVMVCBwYXJ0aXRpb24gdGhlIGZvbGxvd2luZworICogICAg c2hvdWxkIGJlIHRydWU6IHN1bSBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGJl IGVxdWFsCisgKiAgICB0byBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24uCisgKi8KK3ZvaWQK K2NoZWNrX3BhcnRpdGlvbnNfZm9yX3NwbGl0KFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCSAg IE9pZCBzcGxpdFBhcnRPaWQsCisJCQkJCQkgICBMaXN0ICpwYXJ0bGlzdCwKKwkJCQkJCSAg IFBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkga2V5OworCWNoYXIJCXN0 cmF0ZWd5OworCU9pZAkJCWRlZmF1bHRQYXJ0T2lkOworCWJvb2wJCWlzU3BsaXRQYXJ0RGVm YXVsdDsKKwlib29sCQlleGlzdHNEZWZhdWx0UGFydDsKKwlMaXN0Q2VsbCAgICpsaXN0cHRy OworCWludAkJCWRlZmF1bHRfaW5kZXggPSAtMTsKKwlpbnQJCQlpLAorCQkJCWo7CisJU2lu Z2xlUGFydGl0aW9uU3BlYyAqKm5ld19wYXJ0czsKKwlTaW5nbGVQYXJ0aXRpb25TcGVjICpz cHNQcmV2ID0gTlVMTDsKKwlpbnQJCQlucGFydHMgPSAwOworCisJa2V5ID0gUmVsYXRpb25H ZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlzdHJhdGVneSA9IGdldF9wYXJ0aXRpb25fc3Ry YXRlZ3koa2V5KTsKKworCXN3aXRjaCAoc3RyYXRlZ3kpCisJeworCQljYXNlIFBBUlRJVElP Tl9TVFJBVEVHWV9MSVNUOgorCQljYXNlIFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRToKKwkJ CXsKKwkJCQkvKgorCQkJCSAqIE1ha2UgYXJyYXkgbmV3X3BhcnRzIHdpdGggbmV3IHBhcnRp dGlvbnMgZXhjZXB0IERFRkFVTFQKKwkJCQkgKiBwYXJ0aXRpb24uCisJCQkJICovCisJCQkJ bmV3X3BhcnRzID0gKFNpbmdsZVBhcnRpdGlvblNwZWMgKiAqKQorCQkJCQlwYWxsb2MwKGxp c3RfbGVuZ3RoKHBhcnRsaXN0KSAqIHNpemVvZihTaW5nbGVQYXJ0aXRpb25TcGVjICopKTsK KwkJCQlpID0gLTE7CisJCQkJZm9yZWFjaChsaXN0cHRyLCBwYXJ0bGlzdCkKKwkJCQl7CisJ CQkJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwcyA9CisJCQkJCShTaW5nbGVQYXJ0aXRpb25T cGVjICopIGxmaXJzdChsaXN0cHRyKTsKKworCQkJCQlpKys7CisJCQkJCWlmIChzcHMtPmJv dW5kLT5pc19kZWZhdWx0KQorCQkJCQl7CisJCQkJCQlpZiAoZGVmYXVsdF9pbmRleCA+PSAw KQorCQkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lO VkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCQkJIGVycm1zZygiREVGQVVMVCBw YXJ0aXRpb24gc2hvdWxkIGJlIG9uZSIpKSwKKwkJCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlv bihwc3RhdGUsIHNwcy0+bmFtZS0+bG9jYXRpb24pKTsKKwkJCQkJCWRlZmF1bHRfaW5kZXgg PSBpOworCQkJCQkJY29udGludWU7CisJCQkJCX0KKwkJCQkJbmV3X3BhcnRzW25wYXJ0cysr XSA9IHNwczsKKwkJCQl9CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIFBBUlRJVElPTl9T VFJBVEVHWV9IQVNIOgorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09E RV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkgZXJybXNnKCJwYXJ0aXRpb24gb2Yg aGFzaC1wYXJ0aXRpb25lZCB0YWJsZSBjYW5ub3QgYmUgc3BsaXR0ZWQiKSkpOworCQkJYnJl YWs7CisKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIHBhcnRpdGlv biBzdHJhdGVneTogJWQiLAorCQkJCSAoaW50KSBrZXktPnN0cmF0ZWd5KTsKKwkJCWJyZWFr OworCX0KKworCWlmIChzdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0UpCisJ eworCQlQYXJ0aXRpb25SYW5nZUJvdW5kICoqbG93ZXJfYm91bmRzOworCQlTaW5nbGVQYXJ0 aXRpb25TcGVjICoqdG1wX25ld19wYXJ0czsKKworCQkvKgorCQkgKiBGb3Igc2ltcGxpZnkg Y2hlY2sgZm9yIHJhbmdlcyBvZiBuZXcgcGFydGl0aW9ucyBuZWVkIHRvIHNvcnQgYWxsCisJ CSAqIHBhcnRpdGlvbnMgaW4gYXNjZW5kaW5nIG9yZGVyIG9mIHRoZW0gYm91bmRzICh3ZSBj b21wYXJlIHVwcGVyCisJCSAqIGJvdW5kIG9ubHkpLgorCQkgKi8KKwkJbG93ZXJfYm91bmRz ID0gKFBhcnRpdGlvblJhbmdlQm91bmQgKiopCisJCQlwYWxsb2MwKG5wYXJ0cyAqIHNpemVv ZihQYXJ0aXRpb25SYW5nZUJvdW5kICopKTsKKworCQkvKiBDcmVhdGUgYXJyYXkgb2YgbG93 ZXIgYm91bmRzLiAqLworCQlmb3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBpKyspCisJCXsKKwkJ CWxvd2VyX2JvdW5kc1tpXSA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCBpLAor CQkJCQkJCQkJCQkJCQluZXdfcGFydHNbaV0tPmJvdW5kLT5sb3dlcmRhdHVtcywgdHJ1ZSk7 CisJCX0KKworCQkvKiBTb3J0IGFycmF5IG9mIGxvd2VyIGJvdW5kcy4gKi8KKwkJcXNvcnRf YXJnKGxvd2VyX2JvdW5kcywgbnBhcnRzLCBzaXplb2YoUGFydGl0aW9uUmFuZ2VCb3VuZCAq KSwKKwkJCQkgIHFzb3J0X3BhcnRpdGlvbl9yYm91bmRfY21wLCAodm9pZCAqKSBrZXkpOwor CisJCS8qIFJlb3JkZXIgYXJyYXkgb2YgcGFydGl0aW9ucy4gKi8KKwkJdG1wX25ld19wYXJ0 cyA9IG5ld19wYXJ0czsKKwkJbmV3X3BhcnRzID0gKFNpbmdsZVBhcnRpdGlvblNwZWMgKiAq KQorCQkJcGFsbG9jMChucGFydHMgKiBzaXplb2YoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSk7 CisJCWZvciAoaSA9IDA7IGkgPCBucGFydHM7IGkrKykKKwkJCW5ld19wYXJ0c1tpXSA9IHRt cF9uZXdfcGFydHNbbG93ZXJfYm91bmRzW2ldLT5pbmRleF07CisKKwkJcGZyZWUodG1wX25l d19wYXJ0cyk7CisJCXBmcmVlKGxvd2VyX2JvdW5kcyk7CisJfQorCisJZGVmYXVsdFBhcnRP aWQgPQorCQlnZXRfZGVmYXVsdF9vaWRfZnJvbV9wYXJ0ZGVzYyhSZWxhdGlvbkdldFBhcnRp dGlvbkRlc2MocGFyZW50LCB0cnVlKSk7CisKKwkvKiBpc1NwbGl0UGFydERlZmF1bHQgZmxh ZzogaXMgc3BsaXQgcGFydGl0aW9uIGEgREVGQVVMVCBwYXJ0aXRpb24/ICovCisJaXNTcGxp dFBhcnREZWZhdWx0ID0gKGRlZmF1bHRQYXJ0T2lkID09IHNwbGl0UGFydE9pZCk7CisKKwlp ZiAoaXNTcGxpdFBhcnREZWZhdWx0ICYmIGRlZmF1bHRfaW5kZXggPCAwKQorCXsKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklO SVRJT04pLAorCQkJCSBlcnJtc2coImFueSBwYXJ0aXRpb24gaW4gdGhlIGxpc3Qgc2hvdWxk IGJlIERFRkFVTFQgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gaXMgREVGQVVMVCIpKSwKKwkJ CQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCAoKFNpbmdsZVBhcnRpdGlvblNwZWMgKikg bGluaXRpYWwocGFydGxpc3QpKS0+bmFtZS0+bG9jYXRpb24pKTsKKwl9CisJZWxzZSBpZiAo IWlzU3BsaXRQYXJ0RGVmYXVsdCAmJiAoZGVmYXVsdF9pbmRleCA+PSAwKSAmJiBPaWRJc1Zh bGlkKGRlZmF1bHRQYXJ0T2lkKSkKKwl7CisJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwc0Rl ZiA9CisJCShTaW5nbGVQYXJ0aXRpb25TcGVjICopIGxpc3RfbnRoKHBhcnRsaXN0LCBkZWZh dWx0X2luZGV4KTsKKworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJIGVycm1zZygibmV3IHBhcnRpdGlv biBjYW5ub3QgYmUgREVGQVVMVCBiZWNhdXNlIERFRkFVTFQgcGFydGl0aW9uIGFscmVhZHkg ZXhpc3RzIikpLAorCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHNwc0RlZi0+bmFt ZS0+bG9jYXRpb24pKTsKKwl9CisKKwkvKiBJbmRpY2F0b3IgdGhhdCBwYXJ0aXRpb25lZCB0 YWJsZSBoYXMgKG9yIHdpbGwgaGF2ZSkgREVGQVVMVCBwYXJ0aXRpb24gKi8KKwlleGlzdHNE ZWZhdWx0UGFydCA9IE9pZElzVmFsaWQoZGVmYXVsdFBhcnRPaWQpIHx8IChkZWZhdWx0X2lu ZGV4ID49IDApOworCisJZm9yIChpID0gMDsgaSA8IG5wYXJ0czsgaSsrKQorCXsKKwkJU2lu Z2xlUGFydGl0aW9uU3BlYyAqc3BzID0gbmV3X3BhcnRzW2ldOworCisJCWlmIChpc1NwbGl0 UGFydERlZmF1bHQpCisJCXsKKwkJCS8qCisJCQkgKiBJbiBjYXNlIHNwbGl0IHBhcnRpdGlv biBpcyBERUZBVUxUIHBhcnRpdGlvbiB3ZSBjYW4gdXNlIGFueQorCQkJICogZnJlZSByYW5n ZXMgLSBhcyB3aGVuIGNyZWF0aW5nIGEgbmV3IHBhcnRpdGlvbi4KKwkJCSAqLworCQkJY2hl Y2tfbmV3X3BhcnRpdGlvbl9ib3VuZChzcHMtPm5hbWUtPnJlbG5hbWUsIHBhcmVudCwgc3Bz LT5ib3VuZCwKKwkJCQkJCQkJCSAgcHN0YXRlKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8q CisJCQkgKiBDaGVja3MgdGhhdCBib3VuZCBvZiBjdXJyZW50IHBhcnRpdGlvbiBpcyBpbnNp ZGUgYm91bmQgb2Ygc3BsaXQKKwkJCSAqIHBhcnRpdGlvbi4gRm9yIHJhbmdlIHBhcnRpdGlv bmluZzogY2hlY2tzIHRoYXQgdXBwZXIgYm91bmQgb2YKKwkJCSAqIHByZXZpb3VzIHBhcnRp dGlvbiBpcyBlcXVhbCB0byBsb3dlciBib3VuZCBvZiBjdXJyZW50CisJCQkgKiBwYXJ0aXRp b24uIEZvciBsaXN0IHBhcnRpdGlvbmluZzogY2hlY2tzIHRoYXQgc3BsaXQgcGFydGl0aW9u CisJCQkgKiBjb250YWlucyBhbGwgdmFsdWVzIG9mIGN1cnJlbnQgcGFydGl0aW9uLgorCQkJ ICovCisJCQlpZiAoc3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFKQorCQkJ eworCQkJCWJvb2wJCWZpcnN0ID0gKGkgPT0gMCk7CisJCQkJYm9vbAkJbGFzdCA9IChpID09 IChucGFydHMgLSAxKSk7CisKKwkJCQljaGVja19wYXJ0aXRpb25fYm91bmRzX2Zvcl9zcGxp dF9yYW5nZShzcHMtPm5hbWUtPnJlbG5hbWUsCisJCQkJCQkJCQkJCQkJICAgcGFyZW50LCBz cHMtPmJvdW5kLCBzcGxpdFBhcnRPaWQsIGZpcnN0LCBsYXN0LAorCQkJCQkJCQkJCQkJCSAg IGV4aXN0c0RlZmF1bHRQYXJ0LCBwc3RhdGUpOworCQkJfQorCQkJZWxzZQorCQkJCWNoZWNr X3BhcnRpdGlvbl9ib3VuZHNfZm9yX3NwbGl0X2xpc3Qoc3BzLT5uYW1lLT5yZWxuYW1lLAor CQkJCQkJCQkJCQkJCSAgcGFyZW50LCBzcHMtPmJvdW5kLCBzcGxpdFBhcnRPaWQsIHBzdGF0 ZSk7CisJCX0KKworCQkvKiBSYW5nZXMgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIG5vdCBv dmVybGFwLiAqLworCQlpZiAoc3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdF ICYmIHNwc1ByZXYpCisJCQljaGVja19wYXJ0aXRpb25zX25vdF9vdmVybGFwX3JhbmdlKHBh cmVudCwgc3BzLT5uYW1lLCBzcHMtPmJvdW5kLAorCQkJCQkJCQkJCQkgICBzcHNQcmV2LT5u YW1lLCBzcHNQcmV2LT5ib3VuZCwgZXhpc3RzRGVmYXVsdFBhcnQsIHBzdGF0ZSk7CisKKwkJ c3BzUHJldiA9IHNwczsKKworCQkvKiBDaGVjazogbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGhh dmUgZGlmZmVyZW50IG5hbWVzLiAqLworCQlmb3IgKGogPSBpICsgMTsgaiA8IG5wYXJ0czsg aisrKQorCQl7CisJCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHMyID0gbmV3X3BhcnRzW2pd OworCisJCQlpZiAoZXF1YWwoc3BzLT5uYW1lLCBzcHMyLT5uYW1lKSkKKwkJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfVEFCTEUpLAorCQkJ CQkJIGVycm1zZygibmFtZSBcIiVzXCIgYWxyZWFkeSB1c2VkIiwgc3BzMi0+bmFtZS0+cmVs bmFtZSkpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgc3BzMi0+bmFtZS0+ bG9jYXRpb24pKTsKKwkJfQorCX0KKworCWlmIChzdHJhdGVneSA9PSBQQVJUSVRJT05fU1RS QVRFR1lfTElTVCkKKwl7CisJCS8qIFZhbHVlcyBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQg bm90IG92ZXJsYXAuICovCisJCWNoZWNrX3BhcnRpdGlvbnNfbm90X292ZXJsYXBfbGlzdChw YXJlbnQsIG5ld19wYXJ0cywgbnBhcnRzLAorCQkJCQkJCQkJCSAgcHN0YXRlKTsKKworCQkv KgorCQkgKiBOZWVkIHRvIGNoZWNrIHRoYXQgYWxsIHZhbHVlcyBvZiBzcGxpdCBwYXJ0aXRp b24gY29udGFpbnMgaW4gbmV3CisJCSAqIHBhcnRpdGlvbnMuIFNraXAgdGhpcyBjaGVjayBp ZiBERUZBVUxUIHBhcnRpdGlvbiBleGlzdHMuCisJCSAqLworCQlpZiAoIWV4aXN0c0RlZmF1 bHRQYXJ0KQorCQkJY2hlY2tfcGFyZW50X3ZhbHVlc19pbl9uZXdfcGFydGl0aW9ucyhwYXJl bnQsIHNwbGl0UGFydE9pZCwKKwkJCQkJCQkJCQkJCSAgbmV3X3BhcnRzLCBucGFydHMsIHBz dGF0ZSk7CisJfQorCisJcGZyZWUobmV3X3BhcnRzKTsKK30KKworLyoKKyAqIGdldF9wYXJ0 aXRpb25fYm91bmRfc3BlYworICoKKyAqIFJldHVybnMgZGVzY3JpcHRpb24gb2YgcGFydGl0 aW9uIHdpdGggT2lkICJwYXJ0T2lkIiBhbmQgbmFtZSAibmFtZSIuCisgKi8KK3N0YXRpYyBQ YXJ0aXRpb25Cb3VuZFNwZWMgKgorZ2V0X3BhcnRpdGlvbl9ib3VuZF9zcGVjKE9pZCBwYXJ0 T2lkLCBSYW5nZVZhciAqbmFtZSkKK3sKKwlIZWFwVHVwbGUJdHVwbGU7CisJRGF0dW0JCWRh dHVtOworCWJvb2wJCWlzbnVsbDsKKwlQYXJ0aXRpb25Cb3VuZFNwZWMgKmJvdW5kc3BlYyA9 IE5VTEw7CisKKwkvKiBUcnkgZmV0Y2hpbmcgdGhlIHR1cGxlIGZyb20gdGhlIGNhdGNhY2hl LCBmb3Igc3BlZWQuICovCisJdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEoUkVMT0lELCBwYXJ0 T2lkKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwbGUpKQorCQllbG9nKEVSUk9SLCAi Y2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcmVsYXRpb24gXCIlc1wiIiwKKwkJCSBuYW1lLT5y ZWxuYW1lKTsKKworCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKFJFTE9JRCwgdHVwbGUsCisJ CQkJCQkJQW51bV9wZ19jbGFzc19yZWxwYXJ0Ym91bmQsCisJCQkJCQkJJmlzbnVsbCk7CisJ aWYgKGlzbnVsbCkKKwkJZWxvZyhFUlJPUiwgInBhcnRpdGlvbiBib3VuZCBmb3IgcmVsYXRp b24gXCIlc1wiIGlzIG51bGwiLAorCQkJIG5hbWUtPnJlbG5hbWUpOworCisJYm91bmRzcGVj ID0gc3RyaW5nVG9Ob2RlKFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pKTsKKworCWlmICgh SXNBKGJvdW5kc3BlYywgUGFydGl0aW9uQm91bmRTcGVjKSkKKwkJZWxvZyhFUlJPUiwgImV4 cGVjdGVkIFBhcnRpdGlvbkJvdW5kU3BlYyBmb3IgcmVsYXRpb24gXCIlc1wiIiwKKwkJCSBu YW1lLT5yZWxuYW1lKTsKKworCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CisJcmV0dXJuIGJv dW5kc3BlYzsKK30KKworLyoKKyAqIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21l cmdlCisgKgorICogQ2FsY3VsYXRlcyBib3VuZCBvZiBtZXJnZWQgcGFydGl0aW9uICJzcGVj IiBieSB1c2luZyBib3VuZHMgb2YgcGFydGl0aW9ucworICogd2l0aCBPaWRzICJwYXJ0T2lk cyIgYW5kIG5hbWVzICJwYXJ0TmFtZXMiLgorICovCit2b2lkCitjYWxjdWxhdGVfcGFydGl0 aW9uX2JvdW5kX2Zvcl9tZXJnZShSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJCQlMaXN0ICpw YXJ0TmFtZXMsCisJCQkJCQkJCQlMaXN0ICpwYXJ0T2lkcywKKwkJCQkJCQkJCVBhcnRpdGlv bkJvdW5kU3BlYyAqc3BlYywKKwkJCQkJCQkJCVBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQ YXJ0aXRpb25LZXkga2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlQ YXJ0aXRpb25Cb3VuZFNwZWMgKmJvdW5kOworCisJQXNzZXJ0KCFzcGVjLT5pc19kZWZhdWx0 KTsKKworCXN3aXRjaCAoa2V5LT5zdHJhdGVneSkKKwl7CisJCWNhc2UgUEFSVElUSU9OX1NU UkFURUdZX1JBTkdFOgorCQkJeworCQkJCWludAkJCWk7CisJCQkJUGFydGl0aW9uUmFuZ2VC b3VuZCAqKmxvd2VyX2JvdW5kczsKKwkJCQlpbnQJCQlucGFydHMgPSBsaXN0X2xlbmd0aChw YXJ0T2lkcyk7CisJCQkJTGlzdAkgICAqYm91bmRzID0gTklMOworCisJCQkJbG93ZXJfYm91 bmRzID0gKFBhcnRpdGlvblJhbmdlQm91bmQgKiopCisJCQkJCXBhbGxvYzAobnBhcnRzICog c2l6ZW9mKFBhcnRpdGlvblJhbmdlQm91bmQgKikpOworCisJCQkJLyoKKwkJCQkgKiBDcmVh dGUgYXJyYXkgb2YgbG93ZXIgYm91bmRzIGFuZCBsaXN0IG9mCisJCQkJICogUGFydGl0aW9u Qm91bmRTcGVjLgorCQkJCSAqLworCQkJCWZvciAoaSA9IDA7IGkgPCBucGFydHM7IGkrKykK KwkJCQl7CisJCQkJCWJvdW5kID0gZ2V0X3BhcnRpdGlvbl9ib3VuZF9zcGVjKGxpc3RfbnRo X29pZChwYXJ0T2lkcywgaSksCisJCQkJCQkJCQkJCQkJIChSYW5nZVZhciAqKSBsaXN0X250 aChwYXJ0TmFtZXMsIGkpKTsKKworCQkJCQlsb3dlcl9ib3VuZHNbaV0gPSBtYWtlX29uZV9w YXJ0aXRpb25fcmJvdW5kKGtleSwgaSwgYm91bmQtPmxvd2VyZGF0dW1zLCB0cnVlKTsKKwkJ CQkJYm91bmRzID0gbGFwcGVuZChib3VuZHMsIGJvdW5kKTsKKwkJCQl9CisKKwkJCQkvKiBT b3J0IGFycmF5IG9mIGxvd2VyIGJvdW5kcy4gKi8KKwkJCQlxc29ydF9hcmcobG93ZXJfYm91 bmRzLCBucGFydHMsIHNpemVvZihQYXJ0aXRpb25SYW5nZUJvdW5kICopLAorCQkJCQkJICBx c29ydF9wYXJ0aXRpb25fcmJvdW5kX2NtcCwgKHZvaWQgKikga2V5KTsKKworCQkJCS8qIFJh bmdlcyBvZiBwYXJ0aXRpb25zIHNob3VsZCBub3Qgb3ZlcmxhcC4gKi8KKwkJCQlmb3IgKGkg PSAxOyBpIDwgbnBhcnRzOyBpKyspCisJCQkJeworCQkJCQlpbnQJCQlpbmRleCA9IGxvd2Vy X2JvdW5kc1tpXS0+aW5kZXg7CisJCQkJCWludAkJCXByZXZfaW5kZXggPSBsb3dlcl9ib3Vu ZHNbaSAtIDFdLT5pbmRleDsKKworCQkJCQljaGVja19wYXJ0aXRpb25zX25vdF9vdmVybGFw X3JhbmdlKHBhcmVudCwKKwkJCQkJCQkJCQkJCQkgICAoUmFuZ2VWYXIgKikgbGlzdF9udGgo cGFydE5hbWVzLCBpbmRleCksCisJCQkJCQkJCQkJCQkJICAgKFBhcnRpdGlvbkJvdW5kU3Bl YyAqKSBsaXN0X250aChib3VuZHMsIGluZGV4KSwKKwkJCQkJCQkJCQkJCQkgICAoUmFuZ2VW YXIgKikgbGlzdF9udGgocGFydE5hbWVzLCBwcmV2X2luZGV4KSwKKwkJCQkJCQkJCQkJCQkg ICAoUGFydGl0aW9uQm91bmRTcGVjICopIGxpc3RfbnRoKGJvdW5kcywgcHJldl9pbmRleCks CisJCQkJCQkJCQkJCQkJICAgZmFsc2UsIHBzdGF0ZSk7CisJCQkJfQorCisJCQkJLyoKKwkJ CQkgKiBMb3dlciBib3VuZCBvZiBmaXJzdCBwYXJ0aXRpb24gaXMgYSBsb3dlciBib3VuZCBv ZiBtZXJnZWQKKwkJCQkgKiBwYXJ0aXRpb24uCisJCQkJICovCisJCQkJc3BlYy0+bG93ZXJk YXR1bXMgPQorCQkJCQkoKFBhcnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0X250aChib3VuZHMs IGxvd2VyX2JvdW5kc1swXS0+aW5kZXgpKS0+bG93ZXJkYXR1bXM7CisKKwkJCQkvKgorCQkJ CSAqIFVwcGVyIGJvdW5kIG9mIGxhc3QgcGFydGl0aW9uIGlzIGEgdXBwZXIgYm91bmQgb2Yg bWVyZ2VkCisJCQkJICogcGFydGl0aW9uLgorCQkJCSAqLworCQkJCXNwZWMtPnVwcGVyZGF0 dW1zID0KKwkJCQkJKChQYXJ0aXRpb25Cb3VuZFNwZWMgKikgbGlzdF9udGgoYm91bmRzLCBs b3dlcl9ib3VuZHNbbnBhcnRzIC0gMV0tPmluZGV4KSktPnVwcGVyZGF0dW1zOworCisJCQkJ cGZyZWUobG93ZXJfYm91bmRzKTsKKwkJCQlsaXN0X2ZyZWUoYm91bmRzKTsKKwkJCQlicmVh azsKKwkJCX0KKworCQljYXNlIFBBUlRJVElPTl9TVFJBVEVHWV9MSVNUOgorCQkJeworCQkJ CUxpc3RDZWxsICAgKmxpc3RwdHIsCisJCQkJCQkgICAqbGlzdHB0cjI7CisKKwkJCQkvKiBD b25zb2xpZGF0ZSBib3VuZHMgZm9yIGFsbCBwYXJ0aXRpb25zIGluIHRoZSBsaXN0LiAqLwor CQkJCWZvcmJvdGgobGlzdHB0ciwgcGFydE9pZHMsIGxpc3RwdHIyLCBwYXJ0TmFtZXMpCisJ CQkJeworCQkJCQlSYW5nZVZhciAgICpuYW1lID0gKFJhbmdlVmFyICopIGxmaXJzdChsaXN0 cHRyMik7CisJCQkJCU9pZAkJCWN1ck9pZCA9IGxmaXJzdF9vaWQobGlzdHB0cik7CisKKwkJ CQkJYm91bmQgPSBnZXRfcGFydGl0aW9uX2JvdW5kX3NwZWMoY3VyT2lkLCBuYW1lKTsKKwkJ CQkJc3BlYy0+bGlzdGRhdHVtcyA9IGxpc3RfY29uY2F0KHNwZWMtPmxpc3RkYXR1bXMsIGJv dW5kLT5saXN0ZGF0dW1zKTsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQl9CisKKwkJZGVmYXVs dDoKKwkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIHBhcnRpdGlvbiBzdHJhdGVneTogJWQi LAorCQkJCSAoaW50KSBrZXktPnN0cmF0ZWd5KTsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv cnVsZXV0aWxzLmMKaW5kZXggYzM5MzdhNjBmZDMuLjE2MjJjNGY3YzMyIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC0xMjg2OSwzICsxMjg2OSwyMSBAQCBnZXRfcmFu Z2VfcGFydGJvdW5kX3N0cmluZyhMaXN0ICpib3VuZF9kYXR1bXMpCiAKIAlyZXR1cm4gYnVm LT5kYXRhOwogfQorCisvKgorICogZ2V0X2xpc3RfcGFydHZhbHVlX3N0cmluZworICoJCUEg QyBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2Ygb25lIGxpc3QgcGFydGl0aW9uIHZhbHVlCisg Ki8KK2NoYXIgKgorZ2V0X2xpc3RfcGFydHZhbHVlX3N0cmluZyhDb25zdCAqdmFsKQorewor CWRlcGFyc2VfY29udGV4dCBjb250ZXh0OworCVN0cmluZ0luZm8JYnVmID0gbWFrZVN0cmlu Z0luZm8oKTsKKworCW1lbXNldCgmY29udGV4dCwgMCwgc2l6ZW9mKGRlcGFyc2VfY29udGV4 dCkpOworCWNvbnRleHQuYnVmID0gYnVmOworCisJZ2V0X2NvbnN0X2V4cHIodmFsLCAmY29u dGV4dCwgLTEpOworCisJcmV0dXJuIGJ1Zi0+ZGF0YTsKK30KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL25vZGVzL25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCmluZGV4 IGIzYjQwNzU3OWIwLi43ZWYyNzU1NjljMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9k ZXMvbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCkBAIC01MDQsNiAr NTA0LDcgQEAgdHlwZWRlZiBlbnVtIE5vZGVUYWcKIAlUX1BhcnRpdGlvblNwZWMsCiAJVF9Q YXJ0aXRpb25Cb3VuZFNwZWMsCiAJVF9QYXJ0aXRpb25SYW5nZURhdHVtLAorCVRfU2luZ2xl UGFydGl0aW9uU3BlYywKIAlUX1BhcnRpdGlvbkNtZCwKIAlUX1ZhY3V1bVJlbGF0aW9uLAog CVRfUHVibGljYXRpb25PYmpTcGVjLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDcz ZjYzNWI0NTUzLi4yNzU1NmM3YzA1OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAt ODg2LDYgKzg4NiwxOCBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25SYW5nZURhdHVtCiAJ aW50CQkJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAq LwogfSBQYXJ0aXRpb25SYW5nZURhdHVtOwogCisvKgorICogUGFydGl0aW9uRGVzYyAtIGlu Zm8gYWJvdXQgc2luZ2xlIHBhcnRpdGlvbiBmb3IgQUxURVIgVEFCTEUgU1BMSVQgUEFSVElU SU9OIGNvbW1hbmQKKyAqIEZJWE1FOiBuZWVkIHRvIHBsYWNlIHRoaXMgc3RydWN0IGludG8g UGFydGl0aW9uQ21kIGluc3RlYWQgb2YgcGFpciAobmFtZSwgYm91bmQpCisgKi8KK3R5cGVk ZWYgc3RydWN0IFNpbmdsZVBhcnRpdGlvblNwZWMKK3sKKwlOb2RlVGFnCQl0eXBlOworCisJ UmFuZ2VWYXIgICAqbmFtZTsJCQkvKiBuYW1lIG9mIHBhcnRpdGlvbiAqLworCVBhcnRpdGlv bkJvdW5kU3BlYyAqYm91bmQ7CS8qIEZPUiBWQUxVRVMsIGlmIGF0dGFjaGluZyAqLworfSBT aW5nbGVQYXJ0aXRpb25TcGVjOworCiAvKgogICogUGFydGl0aW9uQ21kIC0gaW5mbyBmb3Ig QUxURVIgVEFCTEUvSU5ERVggQVRUQUNIL0RFVEFDSCBQQVJUSVRJT04gY29tbWFuZHMKICAq LwpAQCAtODk0LDYgKzkwNiw3IEBAIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvbkNtZAogCU5v ZGVUYWcJCXR5cGU7CiAJUmFuZ2VWYXIgICAqbmFtZTsJCQkvKiBuYW1lIG9mIHBhcnRpdGlv biB0byBhdHRhY2gvZGV0YWNoICovCiAJUGFydGl0aW9uQm91bmRTcGVjICpib3VuZDsJLyog Rk9SIFZBTFVFUywgaWYgYXR0YWNoaW5nICovCisJTGlzdAkgICAqcGFydGxpc3Q7CQkvKiBs aXN0IG9mIHBhcnRpdGlvbnMsIGZvciBTUExJVCBQQVJUSVRJT04gY29tbWFuZCAqLwogCWJv b2wJCWNvbmN1cnJlbnQ7CiB9IFBhcnRpdGlvbkNtZDsKIApAQCAtMjI5MSw2ICsyMzA0LDgg QEAgdHlwZWRlZiBlbnVtIEFsdGVyVGFibGVUeXBlCiAJQVRfQXR0YWNoUGFydGl0aW9uLAkJ CS8qIEFUVEFDSCBQQVJUSVRJT04gKi8KIAlBVF9EZXRhY2hQYXJ0aXRpb24sCQkJLyogREVU QUNIIFBBUlRJVElPTiAqLwogCUFUX0RldGFjaFBhcnRpdGlvbkZpbmFsaXplLCAvKiBERVRB Q0ggUEFSVElUSU9OIEZJTkFMSVpFICovCisJQVRfU3BsaXRQYXJ0aXRpb24sCQkJLyogU1BM SVQgUEFSVElUSU9OICovCisJQVRfTWVyZ2VQYXJ0aXRpb25zLAkJCS8qIE1FUkdFIFBBUlRJ VElPTlMgKi8KIAlBVF9BZGRJZGVudGl0eSwJCQkJLyogQUREIElERU5USVRZICovCiAJQVRf U2V0SWRlbnRpdHksCQkJCS8qIFNFVCBpZGVudGl0eSBjb2x1bW4gb3B0aW9ucyAqLwogCUFU X0Ryb3BJZGVudGl0eSwJCQkvKiBEUk9QIElERU5USVRZICovCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9wYXJzZXIva3dsaXN0LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgK aW5kZXggOGEyYWI0MDVhMjguLmI1ODUzMGQwMTE0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9wYXJzZXIva3dsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBA IC0zMzMsNiArMzMzLDcgQEAgUEdfS0VZV09SRCgicGFyYW1ldGVyIiwgUEFSQU1FVEVSLCBV TlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXJzZXIiLCBQ QVJTRVIsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBh cnRpYWwiLCBQQVJUSUFMLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJwYXJ0aXRpb24iLCBQQVJUSVRJT04sIFVOUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKK1BHX0tFWVdPUkQoInBhcnRpdGlvbnMiLCBQQVJUSVRJT05TLCBVTlJFU0VS VkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXNzaW5nIiwgUEFTU0lO RywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFzc3dv cmQiLCBQQVNTV09SRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZ V09SRCgicGF0aCIsIFBBVEgsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKQEAg LTQxNSw2ICs0MTYsNyBAQCBQR19LRVlXT1JEKCJza2lwIiwgU0tJUCwgVU5SRVNFUlZFRF9L RVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic21hbGxpbnQiLCBTTUFMTElOVCwg Q09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInNuYXBzaG90Iiwg U05BUFNIT1QsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo InNvbWUiLCBTT01FLCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09S RCgic3BsaXQiLCBTUExJVCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdf S0VZV09SRCgic3FsIiwgU1FMX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkK IFBHX0tFWVdPUkQoInN0YWJsZSIsIFNUQUJMRSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJF X0xBQkVMKQogUEdfS0VZV09SRCgic3RhbmRhbG9uZSIsIFNUQU5EQUxPTkVfUCwgVU5SRVNF UlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFy dGl0aW9uaW5nL3BhcnRib3VuZHMuaCBiL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0 Ym91bmRzLmgKaW5kZXggYjFlM2YxYjg0MDAuLjM2MzBjMGVhZWY2IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oCisrKyBiL3NyYy9pbmNsdWRl L3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgKQEAgLTE0Myw0ICsxNDMsMTQgQEAgZXh0ZXJu IGludAlwYXJ0aXRpb25fcmFuZ2VfZGF0dW1fYnNlYXJjaChGbWdySW5mbyAqcGFydHN1cGZ1 bmMsCiBleHRlcm4gaW50CXBhcnRpdGlvbl9oYXNoX2JzZWFyY2goUGFydGl0aW9uQm91bmRJ bmZvIGJvdW5kaW5mbywKIAkJCQkJCQkJICAgaW50IG1vZHVsdXMsIGludCByZW1haW5kZXIp OwogCitleHRlcm4gdm9pZCBjaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdChSZWxhdGlvbiBw YXJlbnQsCisJCQkJCQkJCQkgICBPaWQgc3BsaXRQYXJ0T2lkLAorCQkJCQkJCQkJICAgTGlz dCAqcGFydGxpc3QsCisJCQkJCQkJCQkgICBQYXJzZVN0YXRlICpwc3RhdGUpOworZXh0ZXJu IHZvaWQgY2FsY3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoUmVsYXRpb24gcGFy ZW50LAorCQkJCQkJCQkJCQkJTGlzdCAqcGFydE5hbWVzLAorCQkJCQkJCQkJCQkJTGlzdCAq cGFydE9pZHMsCisJCQkJCQkJCQkJCQlQYXJ0aXRpb25Cb3VuZFNwZWMgKnNwZWMsCisJCQkJ CQkJCQkJCQlQYXJzZVN0YXRlICpwc3RhdGUpOworCiAjZW5kaWYJCQkJCQkJLyogUEFSVEJP VU5EU19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9ydWxldXRpbHMuaCBi L3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGlscy5oCmluZGV4IDdkNDg5NzE4YTM1Li5lZDEz YTQzZjUzZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmgKKysr IGIvc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmgKQEAgLTQ0LDQgKzQ0LDYgQEAgZXh0 ZXJuIGNoYXIgKmdldF9yYW5nZV9wYXJ0Ym91bmRfc3RyaW5nKExpc3QgKmJvdW5kX2RhdHVt cyk7CiAKIGV4dGVybiBjaGFyICpwZ19nZXRfc3RhdGlzdGljc29iamRlZl9zdHJpbmcoT2lk IHN0YXRleHRpZCk7CiAKK2V4dGVybiBjaGFyICpnZXRfbGlzdF9wYXJ0dmFsdWVfc3RyaW5n KENvbnN0ICp2YWwpOworCiAjZW5kaWYJCQkJCQkJLyogUlVMRVVUSUxTX0ggKi8KZGlmZiAt LWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24tc3BsaXQtbWVy Z2Uub3V0IGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1zcGxpdC1t ZXJnZS5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjM0ZGYx MzQ1YjJiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVk L3BhcnRpdGlvbi1zcGxpdC1tZXJnZS5vdXQKQEAgLTAsMCArMSwzNiBAQAorUGFyc2VkIHRl c3Qgc3BlYyB3aXRoIDIgc2Vzc2lvbnMKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYiBz MXNwbHQgczJiIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWI6IEJFR0lOOworc3RlcCBzMXNw bHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRP CisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRP ICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAo MTUpIFRPICgyMCkpOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMmk6IElOU0VSVCBJTlRP IHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBD T01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOwor c3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CitpfHQgICAgCistKy0tLS0tCisxfHRl eHQxCisoMSByb3cpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyYiBzMmkgczJjIHMx YiBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBz Mmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQxJyk7CitzdGVwIHMyYzog Q09NTUlUOworc3RlcCBzMWI6IEJFR0lOOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRw YXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0 cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQg U0VUIHQgPSAndGV4dDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAg czFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09N TUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CitpfHQgICAgICAgICAKKy0r LS0tLS0tLS0tLQorMXx0ZXh0MW1vZGlmCisoMSByb3cpCisKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUgYi9zcmMvdGVzdC9pc29sYXRpb24v aXNvbGF0aW9uX3NjaGVkdWxlCmluZGV4IDUyOWE0Y2JkNGRhLi4yMmU4MWIwMWE0YiAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQorKysgYi9z cmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCkBAIC0xMDEsNiArMTAxLDcg QEAgdGVzdDogcGFydGl0aW9uLWtleS11cGRhdGUtMQogdGVzdDogcGFydGl0aW9uLWtleS11 cGRhdGUtMgogdGVzdDogcGFydGl0aW9uLWtleS11cGRhdGUtMwogdGVzdDogcGFydGl0aW9u LWtleS11cGRhdGUtNAordGVzdDogcGFydGl0aW9uLXNwbGl0LW1lcmdlCiB0ZXN0OiBwbHBn c3FsLXRvYXN0CiB0ZXN0OiBjbHVzdGVyLWNvbmZsaWN0CiB0ZXN0OiBjbHVzdGVyLWNvbmZs aWN0LXBhcnRpdGlvbgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3Bh cnRpdGlvbi1zcGxpdC1tZXJnZS5zcGVjIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3Bh cnRpdGlvbi1zcGxpdC1tZXJnZS5zcGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi5lMTBjN2M2MDdhNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2lz b2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tc3BsaXQtbWVyZ2Uuc3BlYwpAQCAtMCwwICsxLDQz IEBACisjIFZlcmlmeSB0aGF0IFNQTElUIGFuZCBNRVJHRSBvcGVyYXRpb25zIGxvY2tzIERN TCBvcGVyYXRpb25zCisjIHdpdGggcGFydGl0aW9uZWQgdGFibGUKKworc2V0dXAKK3sKKyAg RFJPUCBUQUJMRSBJRiBFWElTVFMgdHBhcnQ7CisgIENSRUFURSBUQUJMRSB0cGFydChpIGlu dCwgdCB0ZXh0KSBwYXJ0aXRpb24gYnkgcmFuZ2UoaSk7CisgIENSRUFURSBUQUJMRSB0cGFy dF8wMF8xMCBQQVJUSVRJT04gT0YgdHBhcnQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMTAp OworICBDUkVBVEUgVEFCTEUgdHBhcnRfMTBfMjAgUEFSVElUSU9OIE9GIHRwYXJ0IEZPUiBW QUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CisgIENSRUFURSBUQUJMRSB0cGFydF8yMF8zMCBQ QVJUSVRJT04gT0YgdHBhcnQgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKKyAgQ1JF QVRFIFRBQkxFIHRwYXJ0X2RlZmF1bHQgUEFSVElUSU9OIE9GIHRwYXJ0IERFRkFVTFQ7Cit9 CisKK3RlYXJkb3duCit7CisgIERST1AgVEFCTEUgdHBhcnQ7Cit9CisKK3Nlc3Npb24gczEK K3N0ZXAgczFiCXsgQkVHSU47IH0KK3N0ZXAgczFzcGx0CXsgQUxURVIgVEFCTEUgdHBhcnQg U1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBh cnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJ T04gdHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7IH0KK3N0ZXAg czFtZXJnCXsgQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBf MTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOyB9CitzdGVwIHMxYwl7IENPTU1J VDsgfQorCisKK3Nlc3Npb24gczIKK3N0ZXAgczJiCXsgQkVHSU47IH0KK3N0ZXAgczJpCXsg SU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDEnKTsgfQorc3RlcCBzMnUJeyBV UERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDFtb2RpZicgd2hlcmUgaSA9IDE7IH0KK3N0ZXAg czJjCXsgQ09NTUlUOyB9CitzdGVwIHMycwl7IFNFTEVDVCAqIEZST00gdHBhcnQ7IH0KKwor CisjIHMxIHN0YXJ0cyBTUExJVCBQQVJUSVRJT04gdGhlbiBzMiB0cnlpbmcgdG8gaW5zZXJ0 IHJvdyBhbmQKKyMgd2FpdHMgdW50aWwgczEgZmluaXNoZWQgU1BMSVQgb3BlcmF0aW9uLgor cGVybXV0YXRpb24gczFiIHMxc3BsdCBzMmIgczJpIHMxYyBzMmMgczJzCisKKyMgczIgaW5z ZXJ0cyByb3cgaW50byB0YWJsZS4gczEgc3RhcnRzIE1FUkdFIFBBUlRJVElPTlMgdGhlbgor IyBzMiB0cnlpbmcgdG8gdXBkYXRlIGluc2VydGVkIHJvdyBhbmQgd2FpdHMgdW50aWwgczEg ZmluaXNoZWQKKyMgTUVSR0Ugb3BlcmF0aW9uLgorcGVybXV0YXRpb24gczJiIHMyaSBzMmMg czFiIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLmM3ODNjNGFkMDk4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fbWVyZ2Uub3V0CkBAIC0wLDAgKzEsNzE1 IEBACistLQorLS0gUEFSVElUSU9OU19NRVJHRQorLS0gVGVzdHMgZm9yICJBTFRFUiBUQUJM RSAuLi4gTUVSR0UgUEFSVElUSU9OUyAuLi4iIGNvbW1hbmQKKy0tCitDUkVBVEUgU0NIRU1B IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hOworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9u c19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKKy0tCistLSBCWSBSQU5HRSBwYXJ0aXRpb25pbmcK Ky0tCistLQorLS0gVGVzdCBmb3IgZXJyb3IgY29kZXMKKy0tCitDUkVBVEUgVEFCTEUgc2Fs ZXNfcmFuZ2UgKHNhbGVzbWFuX2lkIElOVCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwg c2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0Ug KHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2RlYzIwMjEgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjEtMTItMDEnKSBUTyAoJzIwMjEt MTItMzEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAx Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19hcHIyMDIyIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUg VkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElU SU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHJfMSBQ QVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAx JykgVE8gKCcyMDIyLTA0LTE1Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByXzIgUEFSVElU SU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0xNScpIFRP ICgnMjAyMi0wNS0wMScpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgQVRUQUNIIFBBUlRJ VElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIERFRkFVTFQ7CistLSBFUlJPUjogIHBhcnRpdGlvbiB3aXRoIG5hbWUg InNhbGVzX2ZlYjIwMjIiIGFscmVhZHkgdXNlZAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2Ug TUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwgc2FsZXNf ZmViMjAyMikgSU5UTyBzYWxlc19mZWJfbWFyX2FwcjIwMjI7CitFUlJPUjogIHBhcnRpdGlv biB3aXRoIG5hbWUgInNhbGVzX2ZlYjIwMjIiIGFscmVhZHkgdXNlZAorTElORSAxOiAuLi5l IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVz X2ZlYjIuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogIGNhbm5vdCBtZXJnZSBub24tdGFibGUg cGFydGl0aW9uICJzYWxlc19hcHIyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVS R0UgUEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwgc2FsZXNfYXBy MjAyMikgSU5UTyBzYWxlc19mZWJfbWFyX2FwcjIwMjI7CitFUlJPUjogIGNhbm5vdCBtZXJn ZSBub24tdGFibGUgcGFydGl0aW9uICJzYWxlc19hcHIyMDIyIgorLS0gRVJST1I6ICBpbnZh bGlkIHBhcnRpdGlvbnMgb3JkZXIsIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIgY2FuIG5v dCBiZSBtZXJnZWQKKy0tIChzcGFjZSBiZXR3ZWVuIHNlY3Rpb25zIHNhbGVzX2phbjIwMjIg YW5kIHNhbGVzX21hcjIwMjIpCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJU SVRJT05TIChzYWxlc19qYW4yMDIyLCBzYWxlc19tYXIyMDIyKSBJTlRPIHNhbGVzX2phbl9t YXIyMDIyOworRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX21hcjIw MjIiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAi c2FsZXNfamFuMjAyMiIKKy0tIEVSUk9SOiAgaW52YWxpZCBwYXJ0aXRpb25zIG9yZGVyLCBw YXJ0aXRpb24gInNhbGVzX2phbjIwMjIiIGNhbiBub3QgYmUgbWVyZ2VkCistLSAoc3BhY2Ug YmV0d2VlbiBzZWN0aW9ucyBzYWxlc19kZWMyMDIxIGFuZCBzYWxlc19qYW4yMDIyKQorQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZGVjMjAyMSwg c2FsZXNfamFuMjAyMiwgc2FsZXNfZmViMjAyMikgSU5UTyBzYWxlc19kZWNfamFuX2ZlYjIw MjI7CitFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIg Y29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9uICJzYWxl c19kZWMyMDIxIgorLS0gTk8gRVJST1I6IHRlc3QgZm9yIGN1c3RvbSBwYXJ0aXRpb25zIG9y ZGVyCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19m ZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19qYW4yMDIyKSBJTlRPIHNhbGVzX2phbl9m ZWJfbWFyMjAyMjsKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxr aW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFy dGJvdW5kLCBjLm9pZCkKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFs b2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5o cGFyZW50ID0gJ3NhbGVzX3JhbmdlJzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxv Zy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9p ZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworICAgICAgICAgIG9p ZCAgICAgICAgICB8IHJlbGtpbmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwgICAgICAgICAgICAg ICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzX2FwcjIwMjIgICAg ICAgICB8IHAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgn MDQtMDEtMjAyMicpIFRPICgnMDUtMDEtMjAyMicpCisgc2FsZXNfZGVjMjAyMSAgICAgICAg IHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcxMi0w MS0yMDIxJykgVE8gKCcxMi0zMS0yMDIxJykKKyBzYWxlc19qYW5fZmViX21hcjIwMjIgfCBy ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzAxLTAxLTIw MjInKSBUTyAoJzA0LTAxLTIwMjInKQorIHNhbGVzX290aGVycyAgICAgICAgICB8IHIgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgREVGQVVMVAorKDQgcm93cykKKworRFJPUCBUQUJM RSBzYWxlc19yYW5nZTsKKy0tCistLSBBZGQgcm93cyBpbnRvIHBhcnRpdGlvbmVkIHRhYmxl IHRoZW4gbWVyZ2UgcGFydGl0aW9ucworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAo c2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91 bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0 ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNh bGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0NSRUFURSBJ TkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lORyBi dHJlZSAoc2FsZXNfZGF0ZSk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEs ICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpOworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKTsKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMywgICdGb3JkJywgICAgIDIwMDAsICcy MDIyLTA0LTMwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDQsICAnSXZh bm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAy LTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDcsICAnTGknLCAgICAg ICAxNzUsICAnMjAyMi0wMy0wOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT ICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEwLCAnSGFsZGVyJywgICAzNTAs ICAnMjAyMi0wMS0yOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMSwg J1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5Jyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAy Mi0wMS0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxNCwgJ1NtaXRo JywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NFTEVDVCBwZ19jYXRhbG9nLnBnX2dldF9w YXJ0a2V5ZGVmKCdzYWxlc19yYW5nZSc6OnJlZ2NsYXNzKTsKKyBwZ19nZXRfcGFydGtleWRl ZiAgCistLS0tLS0tLS0tLS0tLS0tLS0tLQorIFJBTkdFIChzYWxlc19kYXRlKQorKDEgcm93 KQorCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorU0VMRUNUIGMub2lk OjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBn X2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorICBGUk9NIHBn X2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJF IGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNfcmFuZ2UnOjpy ZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJv dW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpw Z19jYXRhbG9nLnRleHQ7CisgICAgICBvaWQgICAgICB8IHJlbGtpbmQgfCBpbmhkZXRhY2hw ZW5kaW5nIHwgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxl c19hcHIyMDIyIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZS T00gKCcwNC0wMS0yMDIyJykgVE8gKCcwNS0wMS0yMDIyJykKKyBzYWxlc19mZWIyMDIyIHwg ciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMi0wMS0y MDIyJykgVE8gKCcwMy0wMS0yMDIyJykKKyBzYWxlc19qYW4yMDIyIHwgciAgICAgICB8IGYg ICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMS0wMS0yMDIyJykgVE8gKCcw Mi0wMS0yMDIyJykKKyBzYWxlc19tYXIyMDIyIHwgciAgICAgICB8IGYgICAgICAgICAgICAg ICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMy0wMS0yMDIyJykgVE8gKCcwNC0wMS0yMDIyJykK KyBzYWxlc19vdGhlcnMgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBERUZBVUxU CisoNSByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05T IChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19hcHIyMDIyKSBJTlRPIHNh bGVzX2ZlYl9tYXJfYXByMjAyMjsKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlv bnM6CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVsa2luZCwgaW5o ZGV0YWNocGVuZGluZywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwg Yy5vaWQpCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2lu aGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9 ICdzYWxlc19yYW5nZSc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0 X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2Nh dGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKyAgICAgICAgICBvaWQgICAgICAg ICAgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICAgICAgICAgICAgIHBn X2dldF9leHByICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc19mZWJfbWFyX2FwcjIwMjIgfCBy ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzAyLTAxLTIw MjInKSBUTyAoJzA1LTAxLTIwMjInKQorIHNhbGVzX2phbjIwMjIgICAgICAgICB8IHIgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDEtMDEtMjAyMicp IFRPICgnMDItMDEtMjAyMicpCisgc2FsZXNfb3RoZXJzICAgICAgICAgIHwgciAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBERUZBVUxUCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9N IHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX2ZlYl9tYXJfYXByMjAyMicg YW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uc19tZXJnZV9zY2hlbWEnOworICAgICAgIHNj aGVtYW5hbWUgICAgICAgIHwgICAgICAgdGFibGVuYW1lICAgICAgIHwgICAgICAgICAgICAg IGluZGV4bmFtZSAgICAgICAgICAgICAgIHwgdGFibGVzcGFjZSB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZGVmICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgfCBzYWxlc19mZWJf bWFyX2FwcjIwMjIgfCBzYWxlc19mZWJfbWFyX2FwcjIwMjJfc2FsZXNfZGF0ZV9pZHggfCAg ICAgICAgICAgIHwgQ1JFQVRFIElOREVYIHNhbGVzX2ZlYl9tYXJfYXByMjAyMl9zYWxlc19k YXRlX2lkeCBPTiBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19mZWJfbWFyX2FwcjIw MjIgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00g c2FsZXNfcmFuZ2U7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1v dW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICB8 ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAxMCB8IEhhbGRlciAgICAg ICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgICAgICAgICAgMTMgfCBHYW5kaSAg ICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorICAgICAgICAgICAyIHwgU21p cm5vZmYgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgNiB8 IFBvaXJvdCAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAg IDggfCBFcmljc3NvbiAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorICAgICAg ICAgICA3IHwgTGkgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAg ICAgICAgICAgOSB8IE11bGxlciAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIy CisgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTkt MjAyMgorICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0 LTMwLTIwMjIKKyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCAgICAgICAgICA3NTAg fCAwNC0xMy0yMDIyCisgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgIHwgICAgICAgICAg MjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICB8ICAgICAg ICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgfCAg ICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTQgcm93cykKKworU0VMRUNUICogRlJPTSBz YWxlc19qYW4yMDIyOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ft b3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAg fCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAgMTAgfCBIYWxkZXIgICAg ICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAgIDEzIHwgR2FuZGkg ICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKygzIHJvd3MpCisKK1NFTEVD VCAqIEZST00gc2FsZXNfZmViX21hcl9hcHIyMDIyOworIHNhbGVzbWFuX2lkIHwgc2FsZXNt YW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAg MiB8IFNtaXJub2ZmICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAg ICAgIDYgfCBQb2lyb3QgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAg ICAgICAgICA4IHwgRXJpY3Nzb24gICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIK KyAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0y MDIyCisgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMt MTEtMjAyMgorICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICB8ICAgICAgICAgIDM1MCB8 IDAzLTE5LTIwMjIKKyAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgfCAgICAgICAgIDIw MDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwgICAgICAg ICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICB8ICAg ICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAg fCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisoMTAgcm93cykKKworU0VMRUNUICogRlJP TSBzYWxlc19vdGhlcnM7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNf YW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgIDE0IHwgU21pdGggICAgICAg ICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxIHJvdykKKworLS0gVXNlIGluZGV4 c2NhbiBmb3IgdGVzdCBpbmRleGVzCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IE9OOworU0VU IGVuYWJsZV9zZXFzY2FuID0gT0ZGOworU0VMRUNUICogRlJPTSBzYWxlc19mZWJfbWFyX2Fw cjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyBzYWxlc21hbl9pZCB8 IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAg ICAgICAgIDIgfCBTbWlybm9mZiAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgor ICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIw MjIKKyAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgfCAgICAgICAgICAxODUgfCAwMi0y My0yMDIyCisgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwg MDMtMDgtMjAyMgorICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICB8ICAgICAgICAgIDI1 MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgfCAgICAgICAg ICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgIHwgICAg ICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICB8 ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAg ICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgIDMgfCBGb3JkICAg ICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorKDEwIHJvd3MpCisKK1NFVCBl bmFibGVfaW5kZXhzY2FuID0gT047CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPTjsKK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIw MjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21h cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKy0tIE1lcmdlIHBhcnRpdGlvbnMgKGluY2x1 ZGUgREVGQVVMVCBwYXJ0aXRpb24pIGludG8gcGFydGl0aW9uIHdpdGggdGhlIHNhbWUKKy0t IG5hbWUKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVz X2phbjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX290aGVycykgSU5UTyBzYWxlc19vdGhl cnM7CitzZWxlY3QgKiBmcm9tIHNhbGVzX290aGVyczsKKyBzYWxlc21hbl9pZCB8IHNhbGVz bWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAg IDEgfCBNYXkgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAg ICAgIDEwIHwgSGFsZGVyICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAg ICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIy CisgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgt MjAyMgorICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAz LTExLTIwMjIKKyAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgfCAgICAgICAgICAzNTAg fCAwMy0xOS0yMDIyCisgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgIHwgICAgICAgICAg NTEwIHwgMDUtMDQtMjAyMgorKDcgcm93cykKKworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGgg Y29uZGl0aW9uczoKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxr aW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFy dGJvdW5kLCBjLm9pZCkKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFs b2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5o cGFyZW50ID0gJ3NhbGVzX3JhbmdlJzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxv Zy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9p ZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworICAgICAgb2lkICAg ICAgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICAgICAgICAgICAgIHBn X2dldF9leHByICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNfYXByMjAyMiB8IHIgICAgICAgfCBmICAgICAg ICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDQtMDEtMjAyMicpIFRPICgnMDUtMDEt MjAyMicpCisgc2FsZXNfZmViMjAyMiB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg Rk9SIFZBTFVFUyBGUk9NICgnMDItMDEtMjAyMicpIFRPICgnMDMtMDEtMjAyMicpCisgc2Fs ZXNfb3RoZXJzICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgREVGQVVMVAorKDMg cm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBUZXN0IGZvcjoKKy0t ICAgKiBjb21wb3NpdGUgcGFydGl0aW9uIGtleTsKKy0tICAgKiBHRU5FUkFURUQgY29sdW1u OworLS0gICAqIGNvbHVtbiB3aXRoIERFRkFVTFQgdmFsdWUuCistLQorQ1JFQVRFIFRBQkxF IHNhbGVzX2RhdGUgKHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX3llYXIgSU5U LCBzYWxlc19tb250aCBJTlQsIHNhbGVzX2RheSBJTlQsCisgIHNhbGVzX2RhdGUgVkFSQ0hB UigxMCkgR0VORVJBVEVEIEFMV0FZUyBBUworICAgIChMUEFEKHNhbGVzX3llYXI6OnRleHQs IDQsICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfbW9udGg6OnRleHQsIDIsICcwJykgfHwg Jy4nIHx8IExQQUQoc2FsZXNfZGF5Ojp0ZXh0LCAyLCAnMCcpKSBTVE9SRUQsCisgIHNhbGVz X2RlcGFydG1lbnQgVkFSQ0hBUigzMCkgREVGQVVMVCAnU2FsZXMgZGVwYXJ0bWVudCcpCisg IFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2Rh eSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZGVjMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0 ZSBGT1IgVkFMVUVTIEZST00gKDIwMjEsIDEyLCAxKSBUTyAoMjAyMiwgMSwgMSk7CitDUkVB VEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFM VUVTIEZST00gKDIwMjIsIDEsIDEpIFRPICgyMDIyLCAyLCAxKTsKK0NSRUFURSBUQUJMRSBz YWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAo MjAyMiwgMiwgMSkgVE8gKDIwMjIsIDMsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVy IFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMywgMSkg VE8gKE1BWFZBTFVFLCBNQVhWQUxVRSwgTUFYVkFMVUUpOworSU5TRVJUIElOVE8gc2FsZXNf ZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5 KSBWQUxVRVMgKCdNYW5hZ2VyMScsIDIwMjEsIDEyLCA3KTsKK0lOU0VSVCBJTlRPIHNhbGVz X2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2Rh eSkgVkFMVUVTICgnTWFuYWdlcjInLCAyMDIxLCAxMiwgOCk7CitJTlNFUlQgSU5UTyBzYWxl c19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19k YXkpIFZBTFVFUyAoJ01hbmFnZXIzJywgMjAyMiwgMSwgMSk7CitJTlNFUlQgSU5UTyBzYWxl c19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19k YXkpIFZBTFVFUyAoJ01hbmFnZXIxJywgMjAyMiwgMiwgNCk7CitJTlNFUlQgSU5UTyBzYWxl c19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19k YXkpIFZBTFVFUyAoJ01hbmFnZXIyJywgMjAyMiwgMSwgMik7CitJTlNFUlQgSU5UTyBzYWxl c19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19k YXkpIFZBTFVFUyAoJ01hbmFnZXIzJywgMjAyMiwgMiwgMSk7CitJTlNFUlQgSU5UTyBzYWxl c19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19k YXkpIFZBTFVFUyAoJ01hbmFnZXIxJywgMjAyMiwgMywgMyk7CitJTlNFUlQgSU5UTyBzYWxl c19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19k YXkpIFZBTFVFUyAoJ01hbmFnZXIyJywgMjAyMiwgMywgNCk7CitJTlNFUlQgSU5UTyBzYWxl c19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19k YXkpIFZBTFVFUyAoJ01hbmFnZXIzJywgMjAyMiwgNSwgMSk7CitTRUxFQ1QgKiBGUk9NIHNh bGVzX2RhdGU7Cisgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8 IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAyMSB8 ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4xMi4wNyB8IFNhbGVzIGRlcGFydG1l bnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAg ICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAgIHwg ICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAxIHwgMjAyMi4wMS4wMSB8IFNh bGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAg ICAxIHwgICAgICAgICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5h Z2VyMSAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICA0IHwgMjAy Mi4wMi4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAy MiB8ICAgICAgICAgICAyIHwgICAgICAgICAxIHwgMjAyMi4wMi4wMSB8IFNhbGVzIGRlcGFy dG1lbnQKKyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAg ICAgICAzIHwgMjAyMi4wMy4wMyB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAg IHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICA0IHwgMjAyMi4wMy4wNCB8 IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAyMiB8ICAgICAg ICAgICA1IHwgICAgICAgICAxIHwgMjAyMi4wNS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyg5 IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfZGVjMjAyMjsKKyBzYWxlc21hbl9uYW1l IHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8 IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQor IE1hbmFnZXIxICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDcg fCAyMDIxLjEyLjA3IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgfCAgICAg ICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDggfCAyMDIxLjEyLjA4IHwgU2FsZXMg ZGVwYXJ0bWVudAorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyOwor IHNhbGVzbWFuX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkg fCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tCisgTWFuYWdlcjMgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAg MSB8ICAgICAgICAgMSB8IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdl cjIgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIu MDEuMDIgfCBTYWxlcyBkZXBhcnRtZW50CisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNh bGVzX2ZlYjIwMjI7Cisgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250 aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAy MiB8ICAgICAgICAgICAyIHwgICAgICAgICA0IHwgMjAyMi4wMi4wNCB8IFNhbGVzIGRlcGFy dG1lbnQKKyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAg ICAgICAxIHwgMjAyMi4wMi4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKygyIHJvd3MpCisKK1NF TEVDVCAqIEZST00gc2FsZXNfb3RoZXI7Cisgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3llYXIg fCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRt ZW50IAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMSAgICAg IHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICAzIHwgMjAyMi4wMy4wMyB8 IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMiB8ICAgICAg ICAgICAzIHwgICAgICAgICA0IHwgMjAyMi4wMy4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBN YW5hZ2VyMyAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICA1IHwgICAgICAgICAxIHwg MjAyMi4wNS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKygzIHJvd3MpCisKK0FMVEVSIFRBQkxF IHNhbGVzX2RhdGUgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfamFuMjAyMiwgc2FsZXNfZmVi MjAyMikgSU5UTyBzYWxlc19qYW5fZmViMjAyMjsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUo c2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFM VUVTICgnTWFuYWdlcjEnLCAyMDIyLCAxLCAxMCk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRl KHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZB TFVFUyAoJ01hbmFnZXIyJywgMjAyMiwgMiwgMTApOworU0VMRUNUICogRlJPTSBzYWxlc19k YXRlOworIHNhbGVzbWFuX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxl c19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjEgfCAgICAg ICAgICAxMiB8ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50Cisg TWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8 IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICB8ICAgICAg IDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8IDIwMjIuMDEuMDEgfCBTYWxlcyBk ZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8 ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEg ICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgNCB8IDIwMjIuMDIu MDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICB8ICAgICAgIDIwMjIgfCAg ICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50 CisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAx MCB8IDIwMjIuMDEuMTAgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAg ICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAxMCB8IDIwMjIuMDIuMTAgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAg MyB8ICAgICAgICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdl cjIgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIu MDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICB8ICAgICAgIDIwMjIg fCAgICAgICAgICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRt ZW50CisoMTEgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19kZWMyMDIyOworIHNhbGVz bWFuX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxl c19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tCisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAg ICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAg ICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIuMDgg fCBTYWxlcyBkZXBhcnRtZW50CisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ph bl9mZWIyMDIyOworIHNhbGVzbWFuX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGgg fCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjMgICAgICB8ICAgICAgIDIwMjIg fCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBhcnRt ZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAg ICAgMiB8IDIwMjIuMDEuMDIgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICB8 ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBT YWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAg ICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFu YWdlcjEgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAxMCB8IDIw MjIuMDEuMTAgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIw MjIgfCAgICAgICAgICAgMiB8ICAgICAgICAxMCB8IDIwMjIuMDIuMTAgfCBTYWxlcyBkZXBh cnRtZW50CisoNiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyOworIHNhbGVz bWFuX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxl c19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tCisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAg ICAgICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAg ICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQg fCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICB8ICAgICAgIDIwMjIgfCAgICAg ICAgICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50Ciso MyByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX2RhdGU7CistLQorLS0gVGVzdDogbWVyZ2Ug cGFydGl0aW9ucyBvZiBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIHRyaWdnZXJzCistLQorQ1JF QVRFIFRBQkxFIHNhbGVzbWFucyhzYWxlc21hbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVz bWFuX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNtYW5faWQp OworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc21hbnMg Rk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczEw XzIwIFBBUlRJVElPTiBPRiBzYWxlc21hbnMgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIw KTsKK0NSRUFURSBUQUJMRSBzYWxlc21hbnMyMF8zMCBQQVJUSVRJT04gT0Ygc2FsZXNtYW5z IEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNtYW5z MzBfNDAgUEFSVElUSU9OIE9GIHNhbGVzbWFucyBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAo NDApOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMSwgICdQb2lyb3QnKTsKK0NS RUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpIFJF VFVSTlMgdHJpZ2dlciBMQU5HVUFHRSAncGxwZ3NxbCcgQVMgJEJPRFkkCitCRUdJTgorCVJB SVNFIE5PVElDRSAndHJpZ2dlciglKSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBs ZXZlbCA9ICUnLCBUR19BUkdWWzBdLCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7CisgICAg UkVUVVJOIE5VTEw7CitFTkQ7CiskQk9EWSQ7CitDUkVBVEUgVFJJR0dFUiBzYWxlc21hbnNf YWZ0ZXJfaW5zZXJ0X3N0YXRlbWVudF90cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAg T04gc2FsZXNtYW5zCisgICAgRk9SIEVBQ0ggU1RBVEVNRU5UCisgICAgRVhFQ1VURSBQUk9D RURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc21hbnMnKTsKK0NSRUFURSBU UklHR0VSIHNhbGVzbWFuc19hZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIKKyAgICBBRlRFUiBJ TlNFUlQKKyAgICBPTiBzYWxlc21hbnMKKyAgICBGT1IgRUFDSCBST1cKKyAgICBFWEVDVVRF IFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVzbWFucycpOworLS0g MiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJU IElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMTAsICdNYXknKTsKK05PVElDRTogIHRyaWdnZXIo c2FsZXNtYW5zKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZl bCA9IFJPVworTk9USUNFOiAgdHJpZ2dlcihzYWxlc21hbnMpIGNhbGxlZDogYWN0aW9uID0g SU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gU1RBVEVNRU5UCistLSAxIHRyaWdnZXIg c2hvdWxkIGZpcmUgaGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVzbWFuczEwXzIwIFZB TFVFUyAoMTksICdJdmFub3YnKTsKK05PVElDRTogIHRyaWdnZXIoc2FsZXNtYW5zKSBjYWxs ZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworQUxURVIg VEFCTEUgc2FsZXNtYW5zIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzbWFuczEwXzIwLCBzYWxl c21hbnMyMF8zMCwgc2FsZXNtYW5zMzBfNDApIElOVE8gc2FsZXNtYW5zMTBfNDA7CistLSAy IHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQg SU5UTyBzYWxlc21hbnMgVkFMVUVTICgyMCwgJ1NtaXJub2ZmJyk7CitOT1RJQ0U6ICB0cmln Z2VyKHNhbGVzbWFucykgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwg bGV2ZWwgPSBST1cKK05PVElDRTogIHRyaWdnZXIoc2FsZXNtYW5zKSBjYWxsZWQ6IGFjdGlv biA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFNUQVRFTUVOVAorLS0gMSB0cmln Z2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNFUlQgSU5UTyBzYWxlc21hbnMxMF80 MCBWQUxVRVMgKDMwLCAnRm9yZCcpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc21hbnMpIGNh bGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gUk9XCitTRUxF Q1QgKiBGUk9NIHNhbGVzbWFuczAxXzEwOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFt ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEgfCBQb2ly b3QKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBzYWxlc21hbnMxMF80MDsKKyBzYWxlc21h bl9pZCB8IHNhbGVzbWFuX25hbWUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQor ICAgICAgICAgIDEwIHwgTWF5CisgICAgICAgICAgMTkgfCBJdmFub3YKKyAgICAgICAgICAy MCB8IFNtaXJub2ZmCisgICAgICAgICAgMzAgfCBGb3JkCisoNCByb3dzKQorCitEUk9QIFRB QkxFIHNhbGVzbWFuczsKK0RST1AgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2Vy KCk7CistLQorLS0gVGVzdDogbWVyZ2UgcGFydGl0aW9ucyB3aXRoIGRlbGV0ZWQgY29sdW1u cworLS0KK0NSRUFURSBUQUJMRSBzYWxlc21hbnMoc2FsZXNtYW5faWQgSU5UIFBSSU1BUlkg S0VZLCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNh bGVzbWFuX2lkKTsKK0NSRUFURSBUQUJMRSBzYWxlc21hbnMwMV8xMCBQQVJUSVRJT04gT0Yg c2FsZXNtYW5zIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKKy0tIENyZWF0ZSBwYXJ0 aXRpb25zIHdpdGggc29tZSBkZWxldGVkIGNvbHVtbnM6CitDUkVBVEUgVEFCTEUgc2FsZXNt YW5zMTBfMjAoZDEgVkFSQ0hBUigzMCksIHNhbGVzbWFuX2lkIElOVCBQUklNQVJZIEtFWSwg c2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSk7CitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zMjBf MzAoc2FsZXNtYW5faWQgSU5UIFBSSU1BUlkgS0VZLCBkMiBJTlQsICBzYWxlc21hbl9uYW1l IFZBUkNIQVIoMzApKTsKK0NSRUFURSBUQUJMRSBzYWxlc21hbnMzMF80MChzYWxlc21hbl9p ZCBJTlQgUFJJTUFSWSBLRVksIGQzIERBVEUsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCkp OworSU5TRVJUIElOVE8gc2FsZXNtYW5zMTBfMjAgVkFMVUVTICgnZHVtbXkgdmFsdWUgMScs IDE5LCAnSXZhbm92Jyk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMyMF8zMCBWQUxVRVMgKDIw LCAxMDEsICdTbWlybm9mZicpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zMzBfNDAgVkFMVUVT ICgzMSwgbm93KCksICdQb3BvdicpOworQUxURVIgVEFCTEUgc2FsZXNtYW5zMTBfMjAgRFJP UCBDT0xVTU4gZDE7CitBTFRFUiBUQUJMRSBzYWxlc21hbnMyMF8zMCBEUk9QIENPTFVNTiBk MjsKK0FMVEVSIFRBQkxFIHNhbGVzbWFuczMwXzQwIERST1AgQ09MVU1OIGQzOworQUxURVIg VEFCTEUgc2FsZXNtYW5zIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNtYW5zMTBfMjAgRk9SIFZB TFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKK0FMVEVSIFRBQkxFIHNhbGVzbWFucyBBVFRBQ0gg UEFSVElUSU9OIHNhbGVzbWFuczIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCk7 CitBTFRFUiBUQUJMRSBzYWxlc21hbnMgQVRUQUNIIFBBUlRJVElPTiBzYWxlc21hbnMzMF80 MCBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApOworSU5TRVJUIElOVE8gc2FsZXNtYW5z IFZBTFVFUyAoMSwgJ1BvaXJvdCcpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAo MTAsICdNYXknKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxVRVMgKDMwLCAnRm9yZCcp OworQUxURVIgVEFCTEUgc2FsZXNtYW5zIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzbWFuczEw XzIwLCBzYWxlc21hbnMyMF8zMCwgc2FsZXNtYW5zMzBfNDApIElOVE8gc2FsZXNtYW5zMTBf NDA7CitzZWxlY3QgKiBmcm9tIHNhbGVzbWFuczsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFu X25hbWUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAxIHwg UG9pcm90CisgICAgICAgICAgMTkgfCBJdmFub3YKKyAgICAgICAgICAxMCB8IE1heQorICAg ICAgICAgIDIwIHwgU21pcm5vZmYKKyAgICAgICAgICAzMSB8IFBvcG92CisgICAgICAgICAg MzAgfCBGb3JkCisoNiByb3dzKQorCitzZWxlY3QgKiBmcm9tIHNhbGVzbWFuczAxXzEwOwor IHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tCisgICAgICAgICAgIDEgfCBQb2lyb3QKKygxIHJvdykKKworc2VsZWN0ICogZnJv bSBzYWxlc21hbnMxMF80MDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgCistLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgIDE5IHwgSXZhbm92CisgICAg ICAgICAgMTAgfCBNYXkKKyAgICAgICAgICAyMCB8IFNtaXJub2ZmCisgICAgICAgICAgMzEg fCBQb3BvdgorICAgICAgICAgIDMwIHwgRm9yZAorKDUgcm93cykKKworRFJPUCBUQUJMRSBz YWxlc21hbnM7CistLQorLS0gVGVzdDogbWVyZ2Ugc3ViLXBhcnRpdGlvbnMKKy0tCitDUkVB VEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lkIElOVCwgc2FsZXNtYW5fbmFtZSBW QVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJ T04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIg UEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEn KSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJ VElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8g KCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJT04g T0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAy Mi0wNC0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgKHNhbGVzbWFuX2lkIElO VCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNf ZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2FwcjIwMjJfMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xMCcpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2FwcjIwMjJfMTBfMjAgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0xMCcpIFRPICgnMjAyMi0wNC0yMCcpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2FwcjIwMjJfMjBfMzAgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0yMCcpIFRPICgnMjAyMi0wNS0wMScpOwor QUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgQVRUQUNIIFBBUlRJVElPTiBzYWxlc19hcHIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NS RUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFV TFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNf cmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIy LTAyLTEwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDMsICAnRm9yZCcs ICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3 Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDYsICAnUG9pcm90JywgICAx NTAsICAnMjAyMi0wMi0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg3 LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDksICAnTXVsbGVyJywgICAyNTAsICAn MjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMCwgJ0hh bGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2Jyk7CitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0w My0xOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMywgJ0dhbmRpJywg ICAgMzc3LCAgJzIwMjItMDEtMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitTRUxFQ1QgKiBGUk9N IHNhbGVzX3JhbmdlOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ft b3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAg fCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAgMTAgfCBIYWxkZXIgICAg ICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAgIDEzIHwgR2FuZGkg ICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyAgICAgICAgICAgMiB8IFNt aXJub2ZmICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgIDYg fCBQb2lyb3QgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAg ICA4IHwgRXJpY3Nzb24gICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAg ICAgICAgNyB8IExpICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisg ICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAy MgorICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5 LTIwMjIKKyAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAw NC0wNy0yMDIyCisgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgIHwgICAgICAgICAgMzgw IHwgMDQtMDYtMjAyMgorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8ICAgICAgICAg IDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgfCAgICAg ICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgIHwg ICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDE0IHJvd3MpCisKK1NFTEVDVCAqIEZST00g c2FsZXNfYXByMjAyMjsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19h bW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAg IHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgIDExIHwgVHJ1bXAgICAg ICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgNCB8IEl2YW5v diAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgIDMgfCBG b3JkICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorKDQgcm93cykKKwor U0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyXzAxXzEwOworIHNhbGVzbWFuX2lkIHwgc2Fs ZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgNSB8IERlZXYgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAg ICAgICAgMTEgfCBUcnVtcCAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgor KDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyXzEwXzIwOworIHNhbGVz bWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCist LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0KKyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0x My0yMDIyCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8yMF8zMDsK KyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19k YXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tCisgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgIHwgICAgICAgICAyMDAw IHwgMDQtMzAtMjAyMgorKDEgcm93KQorCitBTFRFUiBUQUJMRSBzYWxlc19hcHIyMDIyIE1F UkdFIFBBUlRJVElPTlMgKHNhbGVzX2FwcjIwMjJfMDFfMTAsIHNhbGVzX2FwcjIwMjJfMTBf MjAsIHNhbGVzX2FwcjIwMjJfMjBfMzApIElOVE8gc2FsZXNfYXByX2FsbDsKK1NFTEVDVCAq IEZST00gc2FsZXNfcmFuZ2U7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2Fs ZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAxIHwgTWF5ICAgICAg ICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAxMCB8IEhhbGRl ciAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgICAgICAgICAgMTMgfCBH YW5kaSAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorICAgICAgICAgICAy IHwgU21pcm5vZmYgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAg ICAgNiB8IFBvaXJvdCAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAg ICAgICAgIDggfCBFcmljc3NvbiAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgor ICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIw MjIKKyAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0x MS0yMDIyCisgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgIHwgICAgICAgICAgMzUwIHwg MDMtMTktMjAyMgorICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICB8ICAgICAgICAgIDI1 MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgfCAgICAgICAg ICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwgICAg ICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICB8 ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAgICAgICAgICAxNCB8IFNtaXRoICAgICAg ICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTQgcm93cykKKworU0VMRUNUICog RlJPTSBzYWxlc19hcHIyMDIyOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNh bGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgNSB8IERlZXYgICAg ICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgMTEgfCBUcnVt cCAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAgICA0IHwg SXZhbm92ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAg MyB8IEZvcmQgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisoNCByb3dz KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2Fwcl9hbGw7Cisgc2FsZXNtYW5faWQgfCBzYWxl c21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAg ICA1IHwgRGVldiAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAg ICAgICAxMSB8IFRydW1wICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisg ICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAy MgorICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMw LTIwMjIKKyg0IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0gQlkg TElTVCBwYXJ0aXRpb25pbmcKKy0tCistLQorLS0gVGVzdDogc3BlY2lmaWMgZXJyb3JzIGZv ciBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19saXN0Ciso c2FsZXNtYW5faWQgSU5UIEdFTkVSQVRFRCBBTFdBWVMgQVMgSURFTlRJVFksCisgc2FsZXNt YW5fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxl c19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChz YWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2Fs ZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnTXVybWFuc2snLCAnU3QuIFBldGVyc2J1cmcnLCAn VWtodGEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc193ZXN0IFBBUlRJVElPTiBPRiBzYWxlc19s aXN0IEZPUiBWQUxVRVMgSU4gKCdWb3JvbmV6aCcsICdTbW9sZW5zaycsICdCcnlhbnNrJyk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfZWFzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1Ig VkFMVUVTIElOICgnTWFnYWRhbicsICdLaGFiYXJvdnNrJywgJ1ZsYWRpdm9zdG9rJyk7CitD UkVBVEUgVEFCTEUgc2FsZXNfY2VudHJhbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1Ig VkFMVUVTIElOICgnTW9zY293JywgJ0themFuJywgJ1ZvbGdvZ3JhZCcpOworQ1JFQVRFIFRB QkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBERUZBVUxUOworQ1JF QVRFIFRBQkxFIHNhbGVzX2xpc3QyIChMSUtFIHNhbGVzX2xpc3QpIFBBUlRJVElPTiBCWSBM SVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZDIgUEFSVElUSU9O IE9GIHNhbGVzX2xpc3QyIEZPUiBWQUxVRVMgSU4gKCdNdXJtYW5zaycsICdTdC4gUGV0ZXJz YnVyZycsICdVa2h0YScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVyczIgUEFSVElUSU9O IE9GIHNhbGVzX2xpc3QyIERFRkFVTFQ7CitDUkVBVEUgVEFCTEUgc2FsZXNfZXh0ZXJuYWwg KExJS0Ugc2FsZXNfbGlzdCk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZXh0ZXJuYWwyICh2Y2gg VkFSQ0hBUig1KSk7CistLSBFUlJPUjogIHBhcnRpdGlvbiBib3VuZCBmb3IgcmVsYXRpb24g InNhbGVzX2V4dGVybmFsIiBpcyBudWxsCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdF IFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2V4dGVybmFsKSBJ TlRPIHNhbGVzX2FsbDsKK0VSUk9SOiAgcGFydGl0aW9uIGJvdW5kIGZvciByZWxhdGlvbiAi c2FsZXNfZXh0ZXJuYWwiIGlzIG51bGwKKy0tIEVSUk9SOiAgcGFydGl0aW9uIGJvdW5kIGZv ciByZWxhdGlvbiAic2FsZXNfZXh0ZXJuYWwyIiBpcyBudWxsCitBTFRFUiBUQUJMRSBzYWxl c19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVz X2V4dGVybmFsMikgSU5UTyBzYWxlc19hbGw7CitFUlJPUjogIHBhcnRpdGlvbiBib3VuZCBm b3IgcmVsYXRpb24gInNhbGVzX2V4dGVybmFsMiIgaXMgbnVsbAorLS0gRVJST1I6ICByZWxh dGlvbiAic2FsZXNfbm9yZDIiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiByZWxhdGlvbiAic2Fs ZXNfbGlzdCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2Fs ZXNfd2VzdCwgc2FsZXNfbm9yZDIsIHNhbGVzX2Vhc3QpIElOVE8gc2FsZXNfYWxsOworRVJS T1I6ICByZWxhdGlvbiAic2FsZXNfbm9yZDIiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiByZWxh dGlvbiAic2FsZXNfbGlzdCIKK0RST1AgVEFCTEUgc2FsZXNfZXh0ZXJuYWwyOworRFJPUCBU QUJMRSBzYWxlc19leHRlcm5hbDsKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDI7CitEUk9QIFRB QkxFIHNhbGVzX2xpc3Q7CistLQorLS0gVGVzdDogQlkgTElTVCBwYXJ0aXRpb25pbmcsIE1F UkdFIFBBUlRJVElPTlMgd2l0aCBkYXRhCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QK KyhzYWxlc21hbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSwKKyBzYWxl c21hbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNh bGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1Qg KHNhbGVzX3N0YXRlKTsKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3NhbGVzbWFuX25hbWVf aWR4IE9OIHNhbGVzX2xpc3QgVVNJTkcgYnRyZWUgKHNhbGVzbWFuX25hbWUpOworQ1JFQVRF IElOREVYIHNhbGVzX2xpc3Rfc2FsZXNfc3RhdGVfaWR4IE9OIHNhbGVzX2xpc3QgVVNJTkcg YnRyZWUgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElP TiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdNdXJtYW5zaycsICdTdC4gUGV0ZXJz YnVyZycsICdVa2h0YScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX3dlc3QgUEFSVElUSU9OIE9G IHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1Zvcm9uZXpoJywgJ1Ntb2xlbnNrJywgJ0Jy eWFuc2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19lYXN0IFBBUlRJVElPTiBPRiBzYWxlc19s aXN0IEZPUiBWQUxVRVMgSU4gKCdNYWdhZGFuJywgJ0toYWJhcm92c2snLCAnVmxhZGl2b3N0 b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19jZW50cmFsIFBBUlRJVElPTiBPRiBzYWxlc19s aXN0IEZPUiBWQUxVRVMgSU4gKCdNb3Njb3cnLCAnS2F6YW4nLCAnVm9sZ29ncmFkJyk7CitD UkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFV TFQ7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0 ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdUcnVtcCcsICAgICdNYWdh ZGFuJywgICAgICAgIDEwMDAsICcyMDIyLTAzLTAxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19s aXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19k YXRlKSBWQUxVRVMgKCdTbWlybm9mZicsICdTbW9sZW5zaycsICAgICAgIDUwMCwgICcyMDIy LTAzLTAzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxl c19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdGb3JkJywgICAg ICdTdC4gUGV0ZXJzYnVyZycsIDIwMDAsICcyMDIyLTAzLTA1Jyk7CitJTlNFUlQgSU5UTyBz YWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBz YWxlc19kYXRlKSBWQUxVRVMgKCdJdmFub3YnLCAgICdNb3Njb3cnLCAgICAgICAgIDc1MCwg ICcyMDIyLTAzLTA0Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1l LCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdEZWV2 JywgICAgICdWb3JvbmV6aCcsICAgICAgIDI1MCwgICcyMDIyLTAzLTA3Jyk7CitJTlNFUlQg SU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1v dW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdQb2lyb3QnLCAgICdLYXphbicsICAgICAgICAg IDEwMDAsICcyMDIyLTAzLTAxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21h bl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMg KCdNYXknLCAgICAgICdVa2h0YScsICAgICAgICAgIDEyMDAsICcyMDIyLTAzLTA2Jyk7CitJ TlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2Fs ZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdMaScsICAgICAgICdWbGFkaXZvc3Rv aycsICAgIDExNTAsICcyMDIyLTAzLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChz YWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBW QUxVRVMgKCdNYXknLCAgICAgICdVa2h0YScsICAgICAgICAgIDEyMDAsICcyMDIyLTAzLTEx Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0 ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdIYWxkZXInLCAgICdNdXJt YW5zaycsICAgICAgIDgwMCwgICcyMDIyLTAzLTAyJyk7CitJTlNFUlQgSU5UTyBzYWxlc19s aXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19k YXRlKSBWQUxVRVMgKCdNdWxsZXInLCAgICdCcnlhbnNrJywgICAgICAgIDY1MCwgICcyMDIy LTAzLTA1Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxl c19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdTbWl0aCcsICAg ICdWb2xnb2dyYWQnLCAgICAgIDM1MCwgICcyMDIyLTAzLTEwJyk7CitJTlNFUlQgSU5UTyBz YWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBz YWxlc19kYXRlKSBWQUxVRVMgKCdHYW5kaScsICAgICdNb3Njb3cnLCAgICAgICAgIDE1MCwg ICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1l LCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdQbGF0 bycsICAgICdWb3JvbmV6aCcsICAgICAgIDk1MCwgICcyMDIyLTAzLTA1Jyk7CistLSBzaG93 IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9n LnJlZ2NsYXNzLCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdf Z2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFsb2cucGdf Y2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5p bmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNfbGlzdCc6OnJlZ2NsYXNzCisgIE9S REVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9 ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4 dDsKKyAgICAgIG9pZCAgICAgIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcgfCAgICAg ICAgICAgICAgICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVz X2NlbnRyYWwgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgSU4g KCdNb3Njb3cnLCAnS2F6YW4nLCAnVm9sZ29ncmFkJykKKyBzYWxlc19lYXN0ICAgIHwgciAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIElOICgnTWFnYWRhbicsICdL aGFiYXJvdnNrJywgJ1ZsYWRpdm9zdG9rJykKKyBzYWxlc19ub3JkICAgIHwgciAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIElOICgnTXVybWFuc2snLCAnU3QuIFBl dGVyc2J1cmcnLCAnVWtodGEnKQorIHNhbGVzX3dlc3QgICAgfCByICAgICAgIHwgZiAgICAg ICAgICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdWb3JvbmV6aCcsICdTbW9sZW5zaycsICdC cnlhbnNrJykKKyBzYWxlc19vdGhlcnMgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAg fCBERUZBVUxUCisoNSByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdFIFBB UlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2NlbnRyYWwpIElOVE8g c2FsZXNfYWxsOworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK1NFTEVD VCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxraW5kLCBpbmhkZXRhY2hwZW5k aW5nLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkKKyAg RlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQor ICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3NhbGVzX2xp c3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVs cGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2Ns YXNzOjpwZ19jYXRhbG9nLnRleHQ7CisgICAgIG9pZCAgICAgIHwgcmVsa2luZCB8IGluaGRl dGFjaHBlbmRpbmcgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc19hbGwgICAgfCBy ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdWb3JvbmV6aCcs ICdTbW9sZW5zaycsICdCcnlhbnNrJywgJ01hZ2FkYW4nLCAnS2hhYmFyb3ZzaycsICdWbGFk aXZvc3RvaycsICdNb3Njb3cnLCAnS2F6YW4nLCAnVm9sZ29ncmFkJykKKyBzYWxlc19ub3Jk ICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdNdXJt YW5zaycsICdTdC4gUGV0ZXJzYnVyZycsICdVa2h0YScpCisgc2FsZXNfb3RoZXJzIHwgciAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBERUZBVUxUCisoMyByb3dzKQorCitTRUxFQ1Qg KiBGUk9NIHNhbGVzX2xpc3Q7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgIHNh bGVzX3N0YXRlICAgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0KKyAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgfCBTbW9sZW5zayAgICAg ICB8ICAgICAgICAgIDUwMCB8IDAzLTAzLTIwMjIKKyAgICAgICAgICAgNSB8IERlZXYgICAg ICAgICAgfCBWb3JvbmV6aCAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTA3LTIwMjIKKyAg ICAgICAgICAxMSB8IE11bGxlciAgICAgICAgfCBCcnlhbnNrICAgICAgICB8ICAgICAgICAg IDY1MCB8IDAzLTA1LTIwMjIKKyAgICAgICAgICAxNCB8IFBsYXRvICAgICAgICAgfCBWb3Jv bmV6aCAgICAgICB8ICAgICAgICAgIDk1MCB8IDAzLTA1LTIwMjIKKyAgICAgICAgICAgMSB8 IFRydW1wICAgICAgICAgfCBNYWdhZGFuICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAzLTAx LTIwMjIKKyAgICAgICAgICAgOCB8IExpICAgICAgICAgICAgfCBWbGFkaXZvc3RvayAgICB8 ICAgICAgICAgMTE1MCB8IDAzLTA5LTIwMjIKKyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAg ICAgfCBNb3Njb3cgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKyAgICAg ICAgICAgNiB8IFBvaXJvdCAgICAgICAgfCBLYXphbiAgICAgICAgICB8ICAgICAgICAgMTAw MCB8IDAzLTAxLTIwMjIKKyAgICAgICAgICAxMiB8IFNtaXRoICAgICAgICAgfCBWb2xnb2dy YWQgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTEwLTIwMjIKKyAgICAgICAgICAxMyB8IEdh bmRpICAgICAgICAgfCBNb3Njb3cgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAzLTA4LTIw MjIKKyAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgfCBTdC4gUGV0ZXJzYnVyZyB8ICAg ICAgICAgMjAwMCB8IDAzLTA1LTIwMjIKKyAgICAgICAgICAgNyB8IE1heSAgICAgICAgICAg fCBVa2h0YSAgICAgICAgICB8ICAgICAgICAgMTIwMCB8IDAzLTA2LTIwMjIKKyAgICAgICAg ICAgOSB8IE1heSAgICAgICAgICAgfCBVa2h0YSAgICAgICAgICB8ICAgICAgICAgMTIwMCB8 IDAzLTExLTIwMjIKKyAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgfCBNdXJtYW5zayAg ICAgICB8ICAgICAgICAgIDgwMCB8IDAzLTAyLTIwMjIKKygxNCByb3dzKQorCitTRUxFQ1Qg KiBGUk9NIHNhbGVzX25vcmQ7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgIHNh bGVzX3N0YXRlICAgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0KKyAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgfCBTdC4gUGV0ZXJzYnVy ZyB8ICAgICAgICAgMjAwMCB8IDAzLTA1LTIwMjIKKyAgICAgICAgICAgNyB8IE1heSAgICAg ICAgICAgfCBVa2h0YSAgICAgICAgICB8ICAgICAgICAgMTIwMCB8IDAzLTA2LTIwMjIKKyAg ICAgICAgICAgOSB8IE1heSAgICAgICAgICAgfCBVa2h0YSAgICAgICAgICB8ICAgICAgICAg MTIwMCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgfCBNdXJt YW5zayAgICAgICB8ICAgICAgICAgIDgwMCB8IDAzLTAyLTIwMjIKKyg0IHJvd3MpCisKK1NF TEVDVCAqIEZST00gc2FsZXNfYWxsOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8 IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tCisgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgIHwgU21vbGVuc2sgICAgfCAg ICAgICAgICA1MDAgfCAwMy0wMy0yMDIyCisgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAg IHwgVm9yb25lemggICAgfCAgICAgICAgICAyNTAgfCAwMy0wNy0yMDIyCisgICAgICAgICAg MTEgfCBNdWxsZXIgICAgICAgIHwgQnJ5YW5zayAgICAgfCAgICAgICAgICA2NTAgfCAwMy0w NS0yMDIyCisgICAgICAgICAgMTQgfCBQbGF0byAgICAgICAgIHwgVm9yb25lemggICAgfCAg ICAgICAgICA5NTAgfCAwMy0wNS0yMDIyCisgICAgICAgICAgIDEgfCBUcnVtcCAgICAgICAg IHwgTWFnYWRhbiAgICAgfCAgICAgICAgIDEwMDAgfCAwMy0wMS0yMDIyCisgICAgICAgICAg IDggfCBMaSAgICAgICAgICAgIHwgVmxhZGl2b3N0b2sgfCAgICAgICAgIDExNTAgfCAwMy0w OS0yMDIyCisgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwgTW9zY293ICAgICAgfCAg ICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAg IHwgS2F6YW4gICAgICAgfCAgICAgICAgIDEwMDAgfCAwMy0wMS0yMDIyCisgICAgICAgICAg MTIgfCBTbWl0aCAgICAgICAgIHwgVm9sZ29ncmFkICAgfCAgICAgICAgICAzNTAgfCAwMy0x MC0yMDIyCisgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgIHwgTW9zY293ICAgICAgfCAg ICAgICAgICAxNTAgfCAwMy0wOC0yMDIyCisoMTAgcm93cykKKworLS0gVXNlIGluZGV4c2Nh biBmb3IgdGVzdCBpbmRleGVzIGFmdGVyIG1lcmdlIHBhcnRpdGlvbnMKK1NFVCBlbmFibGVf aW5kZXhzY2FuID0gT047CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CitTRUxFQ1QgKiBG Uk9NIHNhbGVzX2FsbCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdNb3Njb3cnOworIHNhbGVzbWFu X2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2Fs ZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDQgfCBJdmFub3YgICAg ICAgIHwgTW9zY293ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisgICAgICAg ICAgMTMgfCBHYW5kaSAgICAgICAgIHwgTW9zY293ICAgICAgfCAgICAgICAgICAxNTAgfCAw My0wOC0yMDIyCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUg c2FsZXNfc3RhdGUgPSAnTW9zY293JzsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUg fCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLQorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8IE1vc2NvdyAgICAgIHwg ICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAg ICB8IE1vc2NvdyAgICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorKDIgcm93cykK KworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzbWFuX25hbWUgPSAnSXZh bm92JzsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNh bGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAg ICA0IHwgSXZhbm92ICAgICAgICB8IE1vc2NvdyAgICAgIHwgICAgICAgICAgNzUwIHwgMDMt MDQtMjAyMgorKDEgcm93KQorCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IE9OOworU0VUIGVu YWJsZV9zZXFzY2FuID0gT047CitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CistLQorRFJPUCBT Q0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWE7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLmEwZTc5YTcxMWJhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0CkBAIC0wLDAgKzEsMTQy NSBAQAorLS0KKy0tIFBBUlRJVElPTl9TUExJVAorLS0gVGVzdHMgZm9yICJBTFRFUiBUQUJM RSAuLi4gU1BMSVQgUEFSVElUSU9OIC4uLiIgY29tbWFuZAorLS0KK0NSRUFURSBTQ0hFTUEg cGFydGl0aW9uX3NwbGl0X3NjaGVtYTsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9z cGxpdF9zY2hlbWEsIHB1YmxpYzsKKy0tCistLSBCWSBSQU5HRSBwYXJ0aXRpb25pbmcKKy0t CistLQorLS0gVGVzdCBmb3IgZXJyb3IgY29kZXMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNf cmFuZ2UgKHNhbGVzbWFuX2lkIGludCwgc2FsZXNtYW5fbmFtZSB2YXJjaGFyKDMwKSwgc2Fs ZXNfYW1vdW50IGludCwgc2FsZXNfZGF0ZSBkYXRlKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNh bGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNh bGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDIt MDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjIt MDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIERFRkFVTFQ7CistLSBFUlJPUjogIHJlbGF0aW9uICJzYWxlc194eHgiIGRvZXMg bm90IGV4aXN0CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfeHh4IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjogIHJlbGF0aW9uICJzYWxl c194eHgiIGRvZXMgbm90IGV4aXN0CistLSBFUlJPUjogIHJlbGF0aW9uICJzYWxlc19qYW4y MDIyIiBhbHJlYWR5IGV4aXN0cworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFS VElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNf amFuMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOwor RVJST1I6ICByZWxhdGlvbiAic2FsZXNfamFuMjAyMiIgYWxyZWFkeSBleGlzdHMKKy0tIEVS Uk9SOiAgaW52YWxpZCBib3VuZCBzcGVjaWZpY2F0aW9uIGZvciBhIHJhbmdlIHBhcnRpdGlv bgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9t YXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVT IElOICgnMjAyMi0wNS0wMScsICcyMDIyLTA2LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf bWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBpbnZhbGlkIGJvdW5kIHNw ZWNpZmljYXRpb24gZm9yIGEgcmFuZ2UgcGFydGl0aW9uCitMSU5FIDI6ICAgKFBBUlRJVElP TiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgSU4gKCcyMDIyLTA1LTAxJywgJzIwMi4uLgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVS Uk9SOiAgZW1wdHkgcmFuZ2UgYm91bmQgc3BlY2lmaWVkIGZvciBwYXJ0aXRpb24gInNhbGVz X21hcjIwMjIiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBU TyAoJzIwMjItMDItMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjogIGVt cHR5IHJhbmdlIGJvdW5kIHNwZWNpZmllZCBmb3IgcGFydGl0aW9uICJzYWxlc19tYXIyMDIy IgorTElORSAzOiAgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAzLTAxJykgVE8uLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBTcGVjaWZpZWQgbG93ZXIgYm91bmQg KCcwMy0wMS0yMDIyJykgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHVwcGVyIGJvdW5k ICgnMDItMDEtMjAyMicpLgorLS1FUlJPUjogIGxpc3Qgb2Ygc3BsaXR0ZWQgcGFydGl0aW9u cyBzaG91bGQgY29udGFpbnMgYXQgbGVhc3QgdHdvIGl0ZW1zCitBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEn KSBUTyAoJzIwMjItMTAtMDEnKSk7CitFUlJPUjogIGxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMg c2hvdWxkIGNvbnRhaW5zIGF0IGxlYXN0IHR3byBpdGVtcworLS0gRVJST1I6ICBib3VuZHMg b2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBhcmUgb3V0c2lkZSBib3VuZHMgb2Ygc3Bs aXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04g c2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEn KSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjog IG5ldyBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90 aGVyIChub3Qgc3BsaXQpIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIKK0xJTkUgMjogICAo UEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScp IFRPLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXgorLS0gRVJST1I6ICBuYW1lICJzYWxlc19mZWJfbWFyX2FwcjIwMjIiIGFscmVh ZHkgdXNlZAorLS0gKFdlIGNhbiBjcmVhdGUgcGFydGl0aW9uIHdpdGggdGhlIHNhbWUgbmFt ZSBhcyBzcGxpdCBwYXJ0aXRpb24sIGJ1dCBjYW4ndCBjcmVhdGUgdHdvIHBhcnRpdGlvbnMg d2l0aCB0aGUgc2FtZSBuYW1lKQorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFS VElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNf ZmViX21hcl9hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIw MjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgn MjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgbmFtZSAic2FsZXNfZmViX21hcl9hcHIyMDIyIiBh bHJlYWR5IHVzZWQKK0xJTkUgMzogICAgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLi4uCisgICAgICAgICAgICAgICAgICAgICBe CistLSBFUlJPUjogIG5hbWUgInNhbGVzX2ZlYjIwMjIiIGFscmVhZHkgdXNlZAorQUxURVIg VEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAy MiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0 LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBuYW1lICJzYWxlc19mZWIyMDIy IiBhbHJlYWR5IHVzZWQKK0xJTkUgMzogICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPLi4uCisgICAgICAgICAgICAgICAgICAg ICBeCistLSBFUlJPUjogICJzYWxlc19mZWJfbWFyX2FwcjIwMjIiIGlzIG5vdCBhIHBhcnRp dGlvbmVkIHRhYmxlCitBTFRFUiBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgU1BMSVQg UEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAz LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXBy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykp OworRVJST1I6ICAic2FsZXNfZmViX21hcl9hcHIyMDIyIiBpcyBub3QgYSBwYXJ0aXRpb25l ZCB0YWJsZQorLS0gRVJST1I6ICB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Fw cjIwMjIiIGlzIG5vdCBlcXVhbHMgdG8gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9u CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21h cl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjIt MDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDYtMDEnKSk7CitFUlJPUjogIHVwcGVyIGJvdW5k IG9mIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMgbm90IGVxdWFscyB0byB1cHBlciBi b3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0xJTkUgNDogLi4uIHNhbGVzX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNi0wLi4uCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgorLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiB3b3VsZCBvdmVy bGFwIHdpdGggYW5vdGhlciAobm90IHNwbGl0KSBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIi CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21h cl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjIt MDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjogIG5ldyBwYXJ0aXRp b24gInNhbGVzX2ZlYjIwMjIiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIChub3Qgc3Bs aXQpIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIKK0xJTkUgMjogICAoUEFSVElUSU9OIHNh bGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPLi4uCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0g RVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIGlzIG5v dCBlcXVhbHMgdG8gdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9uCitBTFRFUiBU QUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIy IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQt MDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRp dGlvbiAic2FsZXNfbWFyMjAyMiIgY29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJl dmlvdXMgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIgorTElORSAzOiAgICBQQVJUSVRJT04g c2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8uLi4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCist LSBUZXN0cyBmb3Igc3BhY2VzIGJldHdlZW4gcGFydGl0aW9ucywgdGhlbSBzaG91bGQgYmUg ZXhlY3V0ZWQgd2l0aG91dCBERUZBVUxUIHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgREVUQUNIIFBBUlRJVElPTiBzYWxlc19vdGhlcnM7CistLSBFUlJPUjogIGxvd2Vy IGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFscyB0byBs b3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3Jhbmdl IFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElU SU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMicpIFRPICgn MjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNh bGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0w NS0wMScpKTsKK0VSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIy MDIyIiBpcyBub3QgZXF1YWxzIHRvIGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgor TElORSAyOiAgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAyLTAyJykgVE8uLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworRFJPUCBUQUJM RSBzYWxlc19vdGhlcnM7CistLQorLS0gQWRkIHJvd3MgaW50byBwYXJ0aXRpb25lZCB0YWJs ZSB0aGVuIHNwbGl0IHBhcnRpdGlvbgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAo c2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91 bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0 ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScp OworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug REVGQVVMVDsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgICdNYXknLCAg ICAgIDEwMDAsICcyMDIyLTAxLTMxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpOworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNCwgICdJdmFub3YnLCAgIDc1 MCwgICcyMDIyLTA0LTEzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDUs ICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpOworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKTsKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNywgICdMaScsICAgICAgIDE3NSwgICcy MDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDgsICAnRXJp Y3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAx LTI4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDExLCAnVHJ1bXAnLCAg ICAzODAsICAnMjAyMi0wNC0wNicpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT ICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDE0LCAnU21pdGgnLCAgICA1MTAs ICAnMjAyMi0wNS0wNCcpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAz LTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworU0VM RUNUICogRlJPTSBzYWxlc19yYW5nZTsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUg fCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEgfCBNYXkg ICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgIDEwIHwg SGFsZGVyICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAx MyB8IEdhbmRpICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgICAgICAg ICAgIDIgfCBTbWlybm9mZiAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAg ICAgICAgICA2IHwgUG9pcm90ICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIK KyAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0y MDIyCisgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMt MDgtMjAyMgorICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICB8ICAgICAgICAgIDI1MCB8 IDAzLTExLTIwMjIKKyAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgfCAgICAgICAgICAz NTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgIHwgICAgICAg ICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8ICAg ICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAg fCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgMTEgfCBUcnVtcCAgICAg ICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAgIDE0IHwgU21pdGgg ICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxNCByb3dzKQorCitTRUxF Q1QgKiBGUk9NIHNhbGVzX2phbjIwMjI7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1l IHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAxIHwgTWF5 ICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAxMCB8 IEhhbGRlciAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgICAgICAgICAg MTMgfCBHYW5kaSAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorKDMgcm93 cykKKworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyOworIHNhbGVzbWFuX2lkIHwgc2Fs ZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgMiB8IFNtaXJub2ZmICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAg ICAgICAgIDYgfCBQb2lyb3QgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgor ICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIw MjIKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbWFyMjAyMjsKKyBzYWxlc21h bl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t CisgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgt MjAyMgorICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAz LTExLTIwMjIKKyAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgfCAgICAgICAgICAzNTAg fCAwMy0xOS0yMDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7 Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNf ZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLQorICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICB8ICAgICAgICAgMjAw MCB8IDA0LTMwLTIwMjIKKyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCAgICAgICAg ICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgIHwgICAg ICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICB8 ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZST00g c2FsZXNfb3RoZXJzOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ft b3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAg fCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMSByb3cpCisKK0RST1AgVEFCTEUgc2Fs ZXNfcmFuZ2UgQ0FTQ0FERTsKKy0tCistLSBBZGQgc3BsaXQgcGFydGl0aW9uIHRoZW4gYWRk IHJvd3MgaW50byBwYXJ0aXRpb25lZCB0YWJsZQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19y YW5nZSAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxl c19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2Fs ZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0w MScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0w NS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgREVGQVVMVDsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElP TiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0w MScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIy LTAxLTMxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDIsICAnU21pcm5v ZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEz Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDUsICAnRGVldicsICAgICAy NTAsICAnMjAyMi0wNC0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg2 LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDgsICAnRXJpY3Nzb24nLCAxODUsICAn MjAyMi0wMi0yMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg5LCAgJ011 bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyk7CitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0w NC0wNicpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMiwgJ1BsYXRvJywg ICAgMzUwLCAgJzIwMjItMDMtMTknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcp OworU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFu X25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEg fCBNYXkgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAg IDEwIHwgSGFsZGVyICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAg ICAgICAxMyB8IEdhbmRpICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisg ICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAy MgorICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTEx LTIwMjIKKyAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgfCAgICAgICAgICAxODUgfCAw Mi0yMy0yMDIyCisgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgIHwgICAgICAgICAgMTc1 IHwgMDMtMDgtMjAyMgorICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICB8ICAgICAgICAg IDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgfCAgICAg ICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgIHwg ICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAg ICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgNSB8IERlZXYgICAg ICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgMTEgfCBUcnVt cCAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAgIDE0IHwg U21pdGggICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxNCByb3dzKQor CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjI7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21h bl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAx IHwgTWF5ICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyAgICAgICAg ICAxMCB8IEhhbGRlciAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgICAg ICAgICAgMTMgfCBHYW5kaSAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgor KDMgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyOworIHNhbGVzbWFuX2lk IHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIy CisgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEt MjAyMgorICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICB8ICAgICAgICAgIDE4NSB8IDAy LTIzLTIwMjIKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbWFyMjAyMjsKKyBz YWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRl IAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tCisgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwg MDMtMDgtMjAyMgorICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICB8ICAgICAgICAgIDI1 MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgfCAgICAgICAg ICAzNTAgfCAwMy0xOS0yMDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2Fw cjIwMjI7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwg c2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICB8ICAgICAg ICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCAg ICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAg IHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgIDExIHwgVHJ1bXAgICAg ICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyg0IHJvd3MpCisKK1NFTEVDVCAq IEZST00gc2FsZXNfb3RoZXJzOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNh bGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAxNCB8IFNtaXRoICAg ICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMSByb3cpCisKK0RST1AgVEFC TEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKy0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBjb21w b3NpdGUgcGFydGl0aW9uIGtleTsKKy0tICAgKiBHRU5FUkFURUQgY29sdW1uOworLS0gICAq IGNvbHVtbiB3aXRoIERFRkFVTFQgdmFsdWUuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2Rh dGUgKHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX3llYXIgSU5ULCBzYWxlc19t b250aCBJTlQsIHNhbGVzX2RheSBJTlQsCisgIHNhbGVzX2RhdGUgVkFSQ0hBUigxMCkgR0VO RVJBVEVEIEFMV0FZUyBBUworICAgIChMUEFEKHNhbGVzX3llYXI6OnRleHQsIDQsICcwJykg fHwgJy4nIHx8IExQQUQoc2FsZXNfbW9udGg6OnRleHQsIDIsICcwJykgfHwgJy4nIHx8IExQ QUQoc2FsZXNfZGF5Ojp0ZXh0LCAyLCAnMCcpKSBTVE9SRUQsCisgIHNhbGVzX2RlcGFydG1l bnQgVkFSQ0hBUigzMCkgREVGQVVMVCAnU2FsZXMgZGVwYXJ0bWVudCcpCisgIFBBUlRJVElP TiBCWSBSQU5HRSAoc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSk7CitDUkVB VEUgVEFCTEUgc2FsZXNfZGVjMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFM VUVTIEZST00gKDIwMjEsIDEyLCAxKSBUTyAoMjAyMiwgMSwgMSk7CitDUkVBVEUgVEFCTEUg c2FsZXNfamFuX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBG Uk9NICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwgMywgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNf b3RoZXIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAz LCAxKSBUTyAoTUFYVkFMVUUsIE1BWFZBTFVFLCBNQVhWQUxVRSk7CitJTlNFUlQgSU5UTyBz YWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxl c19kYXkpIFZBTFVFUyAoJ01hbmFnZXIxJywgMjAyMSwgMTIsIDcpOworSU5TRVJUIElOVE8g c2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2Fs ZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMicsIDIwMjEsIDEyLCA4KTsKK0lOU0VSVCBJTlRP IHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNh bGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjMnLCAyMDIyLCAxLCAxKTsKK0lOU0VSVCBJTlRP IHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNh bGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjEnLCAyMDIyLCAyLCA0KTsKK0lOU0VSVCBJTlRP IHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNh bGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjInLCAyMDIyLCAxLCAyKTsKK0lOU0VSVCBJTlRP IHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNh bGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjMnLCAyMDIyLCAyLCAxKTsKK0lOU0VSVCBJTlRP IHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNh bGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjEnLCAyMDIyLCAzLCAzKTsKK0lOU0VSVCBJTlRP IHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNh bGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjInLCAyMDIyLCAzLCA0KTsKK0lOU0VSVCBJTlRP IHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNh bGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjMnLCAyMDIyLCA1LCAxKTsKK1NFTEVDVCAqIEZS T00gc2FsZXNfZGF0ZTsKKyBzYWxlc21hbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21v bnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIxICAgICAgfCAgICAgICAy MDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDcgfCAyMDIxLjEyLjA3IHwgU2FsZXMgZGVw YXJ0bWVudAorIE1hbmFnZXIyICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAg ICAgICAgIDggfCAyMDIxLjEyLjA4IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAg ICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDEgfCAyMDIyLjAxLjAx IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIxICAgICAgfCAgICAgICAyMDIyIHwgICAg ICAgICAgIDIgfCAgICAgICAgIDQgfCAyMDIyLjAyLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAor IE1hbmFnZXIyICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIg fCAyMDIyLjAxLjAyIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgfCAgICAg ICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMg ZGVwYXJ0bWVudAorIE1hbmFnZXIxICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMg fCAgICAgICAgIDMgfCAyMDIyLjAzLjAzIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIy ICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQgfCAyMDIyLjAz LjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgfCAgICAgICAyMDIyIHwg ICAgICAgICAgIDUgfCAgICAgICAgIDEgfCAyMDIyLjA1LjAxIHwgU2FsZXMgZGVwYXJ0bWVu dAorKDkgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19kZWMyMDIyOworIHNhbGVzbWFu X25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19k YXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tCisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAg ICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICB8 ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBT YWxlcyBkZXBhcnRtZW50CisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbl9m ZWIyMDIyOworIHNhbGVzbWFuX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBz YWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjMgICAgICB8ICAgICAgIDIwMjIgfCAg ICAgICAgICAgMSB8ICAgICAgICAgMSB8IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50 CisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAg NCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAg ICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAg MiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoNCByb3dz KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyOworIHNhbGVzbWFuX25hbWUgfCBzYWxl c195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNf ZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdl cjEgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8IDIwMjIu MDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjIg fCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRt ZW50CisgTWFuYWdlcjMgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAgICAg ICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoMyByb3dzKQorCitBTFRF UiBUQUJMRSBzYWxlc19kYXRlIFNQTElUIFBBUlRJVElPTiBzYWxlc19qYW5fZmViMjAyMiBJ TlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIs IDEsIDEpIFRPICgyMDIyLCAyLCAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoMjAyMiwgMiwgMSkgVE8gKDIwMjIsIDMsIDEpKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgs IHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjEnLCAyMDIyLCAxLCAxMCk7CitJTlNFUlQg SU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRo LCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIyJywgMjAyMiwgMiwgMTApOworU0VMRUNU ICogRlJPTSBzYWxlc19kYXRlOworIHNhbGVzbWFuX25hbWUgfCBzYWxlc195ZWFyIHwgc2Fs ZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAK Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICB8ICAg ICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAx MiB8ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdl cjMgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8IDIwMjIu MDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjIg fCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBTYWxlcyBkZXBhcnRt ZW50CisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAg ICAxMCB8IDIwMjIuMDEuMTAgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICB8 ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBT YWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAg ICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFu YWdlcjIgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAxMCB8IDIw MjIuMDIuMTAgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIw MjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBh cnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAg ICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAg ICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUuMDEg fCBTYWxlcyBkZXBhcnRtZW50CisoMTEgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19k ZWMyMDIyOworIHNhbGVzbWFuX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBz YWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjEgfCAg ICAgICAgICAxMiB8ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50 CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAg OCB8IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRtZW50CisoMiByb3dzKQorCitTRUxFQ1Qg KiBGUk9NIHNhbGVzX2phbjIwMjI7Cisgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3llYXIgfCBz YWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50 IAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMyAgICAgIHwg ICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAxIHwgMjAyMi4wMS4wMSB8IFNh bGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAg ICAxIHwgICAgICAgICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5h Z2VyMSAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgIDEwIHwgMjAy Mi4wMS4xMCB8IFNhbGVzIGRlcGFydG1lbnQKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00g c2FsZXNfZmViMjAyMjsKKyBzYWxlc21hbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21v bnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIxICAgICAgfCAgICAgICAy MDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDQgfCAyMDIyLjAyLjA0IHwgU2FsZXMgZGVw YXJ0bWVudAorIE1hbmFnZXIzICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAg ICAgICAgIDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAg ICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgMTAgfCAyMDIyLjAyLjEw IHwgU2FsZXMgZGVwYXJ0bWVudAorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19v dGhlcjsKKyBzYWxlc21hbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2Fs ZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIxICAgICAgfCAgICAgICAyMDIyIHwgICAg ICAgICAgIDMgfCAgICAgICAgIDMgfCAyMDIyLjAzLjAzIHwgU2FsZXMgZGVwYXJ0bWVudAor IE1hbmFnZXIyICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQg fCAyMDIyLjAzLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgfCAgICAg ICAyMDIyIHwgICAgICAgICAgIDUgfCAgICAgICAgIDEgfCAyMDIyLjA1LjAxIHwgU2FsZXMg ZGVwYXJ0bWVudAorKDMgcm93cykKKworLS1FUlJPUjogIHJlbGF0aW9uICJzYWxlc19qYW5f ZmViMjAyMiIgZG9lcyBub3QgZXhpc3QKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuX2ZlYjIw MjI7CitFUlJPUjogIHJlbGF0aW9uICJzYWxlc19qYW5fZmViMjAyMiIgZG9lcyBub3QgZXhp c3QKK0xJTkUgMTogU0VMRUNUICogRlJPTSBzYWxlc19qYW5fZmViMjAyMjsKKyAgICAgICAg ICAgICAgICAgICAgICBeCitEUk9QIFRBQkxFIHNhbGVzX2RhdGUgQ0FTQ0FERTsKKy0tCist LSBUZXN0OiBzcGxpdCBERUZBVUxUIHBhcnRpdGlvbjsgdXNpbmcgYSBpbmRleCBvbiBwYXJ0 aXRpb24ga2V5OyBjaGVjayBpbmRleCBhZnRlciBzcGxpdAorLS0KK0NSRUFURSBUQUJMRSBz YWxlc19yYW5nZSAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzAp LCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5H RSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04g T0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAy Mi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgREVGQVVMVDsKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRl X2lkeCBPTiBzYWxlc19yYW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0w MS0zMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgyLCAgJ1NtaXJub2Zm JywgNTAwLCAgJzIwMjItMDItMTAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg1LCAgJ0RlZXYnLCAgICAgMjUw LCAgJzIwMjItMDQtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNiwg ICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIw MjItMDItMjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOSwgICdNdWxs ZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQt MDYnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTIsICdQbGF0bycsICAg IDM1MCwgICcyMDIyLTAzLTE5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsK K1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5f bmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMiB8 IFNtaXJub2ZmICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAg IDMgfCBGb3JkICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAg ICAgICA0IHwgSXZhbm92ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAg ICAgICAgICAgNSB8IERlZXYgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIy CisgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEt MjAyMgorICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAz LTA4LTIwMjIKKyAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgfCAgICAgICAgICAxODUg fCAwMi0yMy0yMDIyCisgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgIHwgICAgICAgICAg MjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICB8ICAgICAg ICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgfCAg ICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAg IHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDExIHJvd3MpCisKK1NFTEVDVCAqIEZS T00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfb3RoZXJzJyBhbmQgc2No ZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJzsKKyAgICAgICBzY2hlbWFuYW1l ICAgICAgIHwgIHRhYmxlbmFtZSAgIHwgICAgICAgICAgaW5kZXhuYW1lICAgICAgICAgIHwg dGFibGVzcGFjZSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGluZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uX3Nw bGl0X3NjaGVtYSB8IHNhbGVzX290aGVycyB8IHNhbGVzX290aGVyc19zYWxlc19kYXRlX2lk eCB8ICAgICAgICAgICAgfCBDUkVBVEUgSU5ERVggc2FsZXNfb3RoZXJzX3NhbGVzX2RhdGVf aWR4IE9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfb3RoZXJzIFVTSU5HIGJ0cmVl IChzYWxlc19kYXRlKQorKDEgcm93KQorCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMt MDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CistLSBVc2UgaW5kZXhzY2FuIGZvciB0 ZXN0IGluZGV4ZXMKK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gT047CitTRVQgZW5hYmxlX3Nl cXNjYW4gPSBPRkY7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjIgd2hlcmUgc2FsZXNf ZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBz YWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDIgfCBTbWlybm9m ZiAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICA2IHwgUG9p cm90ICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgOCB8 IEVyaWNzc29uICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisoMyByb3dzKQor CitTRUxFQ1QgKiBGUk9NIHNhbGVzX21hcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIy LTAxLTAxJzsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQg fCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgIHwgICAg ICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICB8 ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAxMiB8IFBsYXRvICAgICAg ICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBG Uk9NIHNhbGVzX2FwcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyBz YWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRl IAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tCisgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgIHwgICAgICAgICAgMzgwIHwg MDQtMDYtMjAyMgorICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICB8ICAgICAgICAgIDI1 MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCAgICAgICAg ICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgIHwgICAg ICAgICAyMDAwIHwgMDQtMzAtMjAyMgorKDQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxl c19vdGhlcnMgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyBzYWxlc21hbl9p ZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisg ICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAy MgorKDEgcm93KQorCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IE9OOworU0VUIGVuYWJsZV9z ZXFzY2FuID0gT047CitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1l ID0gJ3NhbGVzX2ZlYjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9z Y2hlbWEnOworICAgICAgIHNjaGVtYW5hbWUgICAgICAgfCAgIHRhYmxlbmFtZSAgIHwgICAg ICAgICAgaW5kZXhuYW1lICAgICAgICAgICB8IHRhYmxlc3BhY2UgfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhkZWYgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgfCBzYWxlc19m ZWIyMDIyIHwgc2FsZXNfZmViMjAyMl9zYWxlc19kYXRlX2lkeCB8ICAgICAgICAgICAgfCBD UkVBVEUgSU5ERVggc2FsZXNfZmViMjAyMl9zYWxlc19kYXRlX2lkeCBPTiBwYXJ0aXRpb25f c3BsaXRfc2NoZW1hLnNhbGVzX2ZlYjIwMjIgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpCiso MSByb3cpCisKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAn c2FsZXNfbWFyMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVt YSc7CisgICAgICAgc2NoZW1hbmFtZSAgICAgICB8ICAgdGFibGVuYW1lICAgfCAgICAgICAg ICBpbmRleG5hbWUgICAgICAgICAgIHwgdGFibGVzcGFjZSB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleGRlZiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8IHNhbGVzX21hcjIw MjIgfCBzYWxlc19tYXIyMDIyX3NhbGVzX2RhdGVfaWR4IHwgICAgICAgICAgICB8IENSRUFU RSBJTkRFWCBzYWxlc19tYXIyMDIyX3NhbGVzX2RhdGVfaWR4IE9OIHBhcnRpdGlvbl9zcGxp dF9zY2hlbWEuc2FsZXNfbWFyMjAyMiBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSkKKygxIHJv dykKKworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxl c19hcHIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJzsK KyAgICAgICBzY2hlbWFuYW1lICAgICAgIHwgICB0YWJsZW5hbWUgICB8ICAgICAgICAgIGlu ZGV4bmFtZSAgICAgICAgICAgfCB0YWJsZXNwYWNlIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZGVmICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIHwgc2FsZXNfYXByMjAyMiB8 IHNhbGVzX2FwcjIwMjJfc2FsZXNfZGF0ZV9pZHggfCAgICAgICAgICAgIHwgQ1JFQVRFIElO REVYIHNhbGVzX2FwcjIwMjJfc2FsZXNfZGF0ZV9pZHggT04gcGFydGl0aW9uX3NwbGl0X3Nj aGVtYS5zYWxlc19hcHIyMDIyIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKQorKDEgcm93KQor CitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX290 aGVycycgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYSc7CisgICAg ICAgc2NoZW1hbmFtZSAgICAgICB8ICB0YWJsZW5hbWUgICB8ICAgICAgICAgIGluZGV4bmFt ZSAgICAgICAgICAgfCB0YWJsZXNwYWNlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW5kZXhkZWYgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIHwgc2FsZXNfb3RoZXJzIHwgc2FsZXNfb3Ro ZXJzX3NhbGVzX2RhdGVfaWR4MSB8ICAgICAgICAgICAgfCBDUkVBVEUgSU5ERVggc2FsZXNf b3RoZXJzX3NhbGVzX2RhdGVfaWR4MSBPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVz X290aGVycyBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSkKKygxIHJvdykKKworRFJPUCBUQUJM RSBzYWxlc19yYW5nZSBDQVNDQURFOworLS0KKy0tIFRlc3Q6IHNvbWUgY2FzZXMgZm9yIHNw bGl0IERFRkFVTFQgcGFydGl0aW9uIChkaWZmZXJlbnQgYm91bmRzKQorLS0KK0NSRUFURSBU QUJMRSBzYWxlc19yYW5nZSAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNI QVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIElOVCkgUEFSVElUSU9OIEJZ IFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElU SU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CistLSBzYWxlc19lcnJvciBpbnRlcnNlY3Rz IHdpdGggc2FsZXNfZGVjMjAyMiAobG93ZXIgYm91bmQpCistLSBFUlJPUjogIGxvd2VyIGJv dW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJv dW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMiIKK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFS VElUSU9OIHNhbGVzX2RlYzIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIw MjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIw MjExMjMwKSBUTyAoMjAyMjAyMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9S IFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBz YWxlc19vdGhlcnMgREVGQVVMVCk7CitFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlv biAic2FsZXNfZXJyb3IiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3Vz IHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMiIKK0xJTkUgMzogICAgUEFSVElUSU9OIHNhbGVz X2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMzApIFRPICgyMDIyLi4uCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIHNhbGVz X2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19mZWIyMDIyICh1cHBlciBib3VuZCkKKy0t IEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBjb25m bGljdHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBwYXJ0aXRpb24gInNhbGVzX2Vy cm9yIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290 aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00g KDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZP UiBWQUxVRVMgRlJPTSAoMjAyMjAxMDEpIFRPICgyMDIyMDIwMiksCisgICBQQVJUSVRJT04g c2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEp LAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0VSUk9SOiAgbG93ZXIg Ym91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBjb25mbGljdHMgd2l0aCB1cHBl ciBib3VuZCBvZiBwcmV2aW91cyBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIgorTElORSA0OiAg ICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBU TyAoMjAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBeCistLSBzYWxlc19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZGVjMjAy MiAoaW5zaWRlIGJvdW5kKQorLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24g InNhbGVzX2Vycm9yIiBjb25mbGljdHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBw YXJ0aXRpb24gInNhbGVzX2RlYzIwMjIiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMy MDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJU SVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIxMCkgVE8gKDIwMjEx MjIwKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAy MjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFV TFQpOworRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiBj b25mbGljdHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBwYXJ0aXRpb24gInNhbGVz X2RlYzIwMjIiCitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVT IEZST00gKDIwMjExMjEwKSBUTyAoMjAyMS4uLgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBzYWxlc19lcnJvciBpbnRlcnNlY3Rz IHdpdGggc2FsZXNfZGVjMjAyMiAoZXhhY3QgdGhlIHNhbWUgYm91bmRzKQorLS0gRVJST1I6 ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiBjb25mbGljdHMgd2l0 aCB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjIiCitB TFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElO VE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEy MDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVF UyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19m ZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQ QVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworRVJST1I6ICBsb3dlciBib3VuZCBv ZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiBjb25mbGljdHMgd2l0aCB1cHBlciBib3VuZCBv ZiBwcmV2aW91cyBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjIiCitMSU5FIDM6ICAgIFBBUlRJ VElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMi4u LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CistLSBFUlJPUjogIGFueSBwYXJ0aXRpb24gaW4gdGhlIGxpc3Qgc2hvdWxkIGJlIERFRkFV TFQgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gaXMgREVGQVVMVAorQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAx MDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIy MDEwMSkgVE8gKDIwMjIwMjAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSkpOworRVJST1I6ICBhbnkgcGFy dGl0aW9uIGluIHRoZSBsaXN0IHNob3VsZCBiZSBERUZBVUxUIGJlY2F1c2Ugc3BsaXQgcGFy dGl0aW9uIGlzIERFRkFVTFQKK0xJTkUgMjogICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIg Rk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwLi4uCisgICAgICAgICAgICAgICAg ICAgICBeCistLSBubyBlcnJvcjogYm91bmRzIG9mIHNhbGVzX25vZXJyb3IgYmV0d2VlbiBz YWxlc19kZWMyMDIyIGFuZCBzYWxlc19mZWIyMDIyCitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisg ICBQQVJUSVRJT04gc2FsZXNfbm9lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjIwMTEwKSBU TyAoMjAyMjAxMjApLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhl cnMgREVGQVVMVCk7CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworQ1JFQVRFIFRBQkxFIHNh bGVzX3JhbmdlIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCks IHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgSU5UKSBQQVJUSVRJT04gQlkgUkFOR0Ug KHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgREVGQVVMVDsKKy0tIG5vIGVycm9yOiBib3VuZHMgb2Ygc2FsZXNfbm9l cnJvciBlcXVhbHMgdG8gbG93ZXIgYW5kIHVwcGVyIGJvdW5kcyBvZiBzYWxlc19kZWMyMDIy IGFuZCBzYWxlc19mZWIyMDIyCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJU SVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIyIEZP UiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04g c2FsZXNfbm9lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjEwMTAxKSBUTyAoMjAyMTAyMDEp LAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIw MSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7 CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlv biB3aXRoIENIRUNLIGFuZCBGT1JFSUdOIEtFWSBDT05TVFJBSU5UcyBvbiBwYXJ0aXRpb25l ZCB0YWJsZQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc21hbnMoc2FsZXNtYW5faWQgSU5UIFBS SU1BUlkgS0VZLCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApKTsKK0lOU0VSVCBJTlRPIHNh bGVzbWFucyBWQUxVRVMgKDEsICAnUG9pcm90Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfcmFu Z2UgKAorc2FsZXNtYW5faWQgSU5UIFJFRkVSRU5DRVMgc2FsZXNtYW5zKHNhbGVzbWFuX2lk KSwKK3NhbGVzX2Ftb3VudCBJTlQgQ0hFQ0sgKHNhbGVzX2Ftb3VudCA+IDEpLAorc2FsZXNf ZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBz YWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitTRUxF Q1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5IEZST00gcGdf Y29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19mZWJfbWFyX2FwcjIwMjInOjpy ZWdjbGFzczo6b2lkOworICAgICAgICAgICAgICAgICAgICBwZ19nZXRfY29uc3RyYWludGRl ZiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICBjb25uYW1lICAgICAgICAgICAg IHwgY29ua2V5IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLQorIENIRUNLICgoc2FsZXNfYW1vdW50ID4gMSkpICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgc2FsZXNfcmFuZ2Vfc2FsZXNfYW1vdW50X2NoZWNrIHwgezJ9 CisgRk9SRUlHTiBLRVkgKHNhbGVzbWFuX2lkKSBSRUZFUkVOQ0VTIHNhbGVzbWFucyhzYWxl c21hbl9pZCkgfCBzYWxlc19yYW5nZV9zYWxlc21hbl9pZF9ma2V5ICAgfCB7MX0KKygyIHJv d3MpCisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19m ZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgn MjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKy0tIFdlIHNob3VsZCBz ZWUgdGhlIHNhbWUgQ09OU1RSQUlOVHMgYXMgb24gc2FsZXNfZmViX21hcl9hcHIyMDIyIHBh cnRpdGlvbgorU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNv bmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfZmViMjAy Mic6OnJlZ2NsYXNzOjpvaWQ7CisgICAgICAgICAgICAgICAgICAgIHBnX2dldF9jb25zdHJh aW50ZGVmICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIGNvbm5hbWUgICAgICAg ICAgICAgfCBjb25rZXkgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tCisgQ0hFQ0sgKChzYWxlc19hbW91bnQgPiAxKSkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCBzYWxlc19yYW5nZV9zYWxlc19hbW91bnRfY2hlY2sg fCB7Mn0KKyBGT1JFSUdOIEtFWSAoc2FsZXNtYW5faWQpIFJFRkVSRU5DRVMgc2FsZXNtYW5z KHNhbGVzbWFuX2lkKSB8IHNhbGVzX3JhbmdlX3NhbGVzbWFuX2lkX2ZrZXkgICB8IHsxfQor KDIgcm93cykKKworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUs IGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfbWFy MjAyMic6OnJlZ2NsYXNzOjpvaWQ7CisgICAgICAgICAgICAgICAgICAgIHBnX2dldF9jb25z dHJhaW50ZGVmICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIGNvbm5hbWUgICAg ICAgICAgICAgfCBjb25rZXkgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tCisgQ0hFQ0sgKChzYWxlc19hbW91bnQgPiAxKSkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCBzYWxlc19yYW5nZV9zYWxlc19hbW91bnRfY2hl Y2sgfCB7Mn0KKyBGT1JFSUdOIEtFWSAoc2FsZXNtYW5faWQpIFJFRkVSRU5DRVMgc2FsZXNt YW5zKHNhbGVzbWFuX2lkKSB8IHNhbGVzX3JhbmdlX3NhbGVzbWFuX2lkX2ZrZXkgICB8IHsx fQorKDIgcm93cykKKworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5h bWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNf YXByMjAyMic6OnJlZ2NsYXNzOjpvaWQ7CisgICAgICAgICAgICAgICAgICAgIHBnX2dldF9j b25zdHJhaW50ZGVmICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIGNvbm5hbWUg ICAgICAgICAgICAgfCBjb25rZXkgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tCisgQ0hFQ0sgKChzYWxlc19hbW91bnQgPiAxKSkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzYWxlc19yYW5nZV9zYWxlc19hbW91bnRf Y2hlY2sgfCB7Mn0KKyBGT1JFSUdOIEtFWSAoc2FsZXNtYW5faWQpIFJFRkVSRU5DRVMgc2Fs ZXNtYW5zKHNhbGVzbWFuX2lkKSB8IHNhbGVzX3JhbmdlX3NhbGVzbWFuX2lkX2ZrZXkgICB8 IHsxfQorKDIgcm93cykKKworLS0gRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAic2Fs ZXNfbWFyMjAyMiIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAic2FsZXNfcmFuZ2Vfc2Fs ZXNtYW5faWRfY2hlY2siCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsIDAs ICcyMDIyLTAzLTExJyk7CitFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJzYWxlc19t YXIyMDIyIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJzYWxlc19yYW5nZV9zYWxlc19h bW91bnRfY2hlY2siCitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoMSwgMCwgMDMt MTEtMjAyMikuCistLSBFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInNhbGVz X21hcjIwMjIiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInNhbGVzX3Jhbmdl X3NhbGVzbWFuX2lkX2ZrZXkiCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKC0x LCAxMCwgJzIwMjItMDMtMTEnKTsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJs ZSAic2FsZXNfbWFyMjAyMiIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAic2Fs ZXNfcmFuZ2Vfc2FsZXNtYW5faWRfZmtleSIKK0RFVEFJTDogIEtleSAoc2FsZXNtYW5faWQp PSgtMSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgInNhbGVzbWFucyIuCistLSBvaworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAxMCwgJzIwMjItMDMtMTEnKTsKK0RS T1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKK0RST1AgVEFCTEUgc2FsZXNtYW5zIENB U0NBREU7CistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIG9uIHBhcnRpdGlvbmVkIHRh YmxlIGluIGNhc2UgZXhpc3RzIEZPUkVJR04gS0VZIHJlZmVyZW5jZSBmcm9tIGFub3RoZXIg dGFibGUKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zKHNhbGVzbWFuX2lkIElOVCBQUklN QVJZIEtFWSwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdF IChzYWxlc21hbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXMgKHNhbGVzbWFuX2lkIElOVCBS RUZFUkVOQ0VTIHNhbGVzbWFucyhzYWxlc21hbl9pZCksIHNhbGVzX2Ftb3VudCBJTlQsIHNh bGVzX2RhdGUgREFURSk7CitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zMDFfMTAgUEFSVElUSU9O IE9GIHNhbGVzbWFucyBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUgVEFC TEUgc2FsZXNtYW5zMTBfNDAgUEFSVElUSU9OIE9GIHNhbGVzbWFucyBGT1IgVkFMVUVTIEZS T00gKDEwKSBUTyAoNDApOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMSwgICdQ b2lyb3QnKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxVRVMgKDEwLCAnTWF5Jyk7CitJ TlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgxOSwgJ0l2YW5vdicpOworSU5TRVJUIElO VE8gc2FsZXNtYW5zIFZBTFVFUyAoMjAsICdTbWlybm9mZicpOworSU5TRVJUIElOVE8gc2Fs ZXNtYW5zIFZBTFVFUyAoMzAsICdGb3JkJyk7CitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMg KDEsICAxMDAsICcyMDIyLTAzLTAxJyk7CitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDEs ICAxMTAsICcyMDIyLTAzLTAyJyk7CitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDEwLCAx NTAsICcyMDIyLTAzLTAxJyk7CitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDEwLCA5MCwg ICcyMDIyLTAzLTAzJyk7CitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDE5LCAyMDAsICcy MDIyLTAzLTA0Jyk7CitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDIwLCA1MCwgICcyMDIy LTAzLTEyJyk7CitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDIwLCAxNzAsICcyMDIyLTAz LTAyJyk7CitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDMwLCAzMCwgICcyMDIyLTAzLTA0 Jyk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczAxXzEwOworIHNhbGVzbWFuX2lkIHwgc2Fs ZXNtYW5fbmFtZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAg IDEgfCBQb2lyb3QKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBzYWxlc21hbnMxMF80MDsK KyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgIDEwIHwgTWF5CisgICAgICAgICAgMTkgfCBJdmFub3YKKyAg ICAgICAgICAyMCB8IFNtaXJub2ZmCisgICAgICAgICAgMzAgfCBGb3JkCisoNCByb3dzKQor CitBTFRFUiBUQUJMRSBzYWxlc21hbnMgU1BMSVQgUEFSVElUSU9OIHNhbGVzbWFuczEwXzQw IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc21hbnMxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEw KSBUTyAoMjApLAorICAgUEFSVElUSU9OIHNhbGVzbWFuczIwXzMwIEZPUiBWQUxVRVMgRlJP TSAoMjApIFRPICgzMCksCisgICBQQVJUSVRJT04gc2FsZXNtYW5zMzBfNDAgRk9SIFZBTFVF UyBGUk9NICgzMCkgVE8gKDQwKSk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczAxXzEwOwor IHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tCisgICAgICAgICAgIDEgfCBQb2lyb3QKKygxIHJvdykKKworU0VMRUNUICogRlJP TSBzYWxlc21hbnMxMF8yMDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgCistLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgIDEwIHwgTWF5CisgICAgICAg ICAgMTkgfCBJdmFub3YKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNtYW5zMjBf MzA7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIAorLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAyMCB8IFNtaXJub2ZmCisoMSByb3cpCisKK1NFTEVD VCAqIEZST00gc2FsZXNtYW5zMzBfNDA7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1l IAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAzMCB8IEZvcmQK KygxIHJvdykKKworLS0gRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJzYWxl cyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAic2FsZXNfc2FsZXNtYW5faWRf ZmtleSIKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoNDAsIDUwLCAgJzIwMjItMDMtMDQn KTsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAic2FsZXMiIHZpb2xhdGVz IGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInNhbGVzX3NhbGVzbWFuX2lkX2ZrZXkiCitERVRB SUw6ICBLZXkgKHNhbGVzbWFuX2lkKT0oNDApIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJz YWxlc21hbnMiLgorLS0gb2sKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoMzAsIDUwLCAg JzIwMjItMDMtMDQnKTsKK0RST1AgVEFCTEUgc2FsZXMgQ0FTQ0FERTsKK0RST1AgVEFCTEUg c2FsZXNtYW5zIENBU0NBREU7CistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIG9mIHBh cnRpdGlvbmVkIHRhYmxlIHdpdGggdHJpZ2dlcnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNt YW5zKHNhbGVzbWFuX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNtYW5fbmFtZSBWQVJDSEFS KDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc21hbl9pZCk7CitDUkVBVEUgVEFCTEUg c2FsZXNtYW5zMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzbWFucyBGT1IgVkFMVUVTIEZST00g KDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zMTBfNDAgUEFSVElUSU9OIE9G IHNhbGVzbWFucyBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoNDApOworSU5TRVJUIElOVE8g c2FsZXNtYW5zIFZBTFVFUyAoMSwgICdQb2lyb3QnKTsKK0NSRUFURSBPUiBSRVBMQUNFIEZV TkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpIFJFVFVSTlMgdHJpZ2dlciBMQU5H VUFHRSAncGxwZ3NxbCcgQVMgJEJPRFkkCitCRUdJTgorCVJBSVNFIE5PVElDRSAndHJpZ2dl ciglKSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19BUkdW WzBdLCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7CisgICAgUkVUVVJOIE5VTEw7CitFTkQ7 CiskQk9EWSQ7CitDUkVBVEUgVFJJR0dFUiBzYWxlc21hbnNfYWZ0ZXJfaW5zZXJ0X3N0YXRl bWVudF90cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNtYW5zCisgICAg Rk9SIEVBQ0ggU1RBVEVNRU5UCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0 X3Jvd190cmlnZ2VyKCdzYWxlc21hbnMnKTsKK0NSRUFURSBUUklHR0VSIHNhbGVzbWFuc19h ZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxl c21hbnMKKyAgICBGT1IgRUFDSCBST1cKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9p bnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVzbWFucycpOworLS0gMiB0cmlnZ2VycyBzaG91bGQg ZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZB TFVFUyAoMTAsICdNYXknKTsKK05PVElDRTogIHRyaWdnZXIoc2FsZXNtYW5zKSBjYWxsZWQ6 IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworTk9USUNFOiAg dHJpZ2dlcihzYWxlc21hbnMpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZU RVIsIGxldmVsID0gU1RBVEVNRU5UCistLSAxIHRyaWdnZXIgc2hvdWxkIGZpcmUgaGVyZSAo cm93KToKK0lOU0VSVCBJTlRPIHNhbGVzbWFuczEwXzQwIFZBTFVFUyAoMTksICdJdmFub3Yn KTsKK05PVElDRTogIHRyaWdnZXIoc2FsZXNtYW5zKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VS VCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworQUxURVIgVEFCTEUgc2FsZXNtYW5zIFNQ TElUIFBBUlRJVElPTiBzYWxlc21hbnMxMF80MCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNt YW5zMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKSwKKyAgIFBBUlRJVElPTiBz YWxlc21hbnMyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApLAorICAgUEFSVElU SU9OIHNhbGVzbWFuczMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCkpOworLS0g MiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJU IElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMjAsICdTbWlybm9mZicpOworTk9USUNFOiAgdHJp Z2dlcihzYWxlc21hbnMpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIs IGxldmVsID0gUk9XCitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzbWFucykgY2FsbGVkOiBhY3Rp b24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBTVEFURU1FTlQKKy0tIDEgdHJp Z2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNtYW5zMzBf NDAgVkFMVUVTICgzMCwgJ0ZvcmQnKTsKK05PVElDRTogIHRyaWdnZXIoc2FsZXNtYW5zKSBj YWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworU0VM RUNUICogRlJPTSBzYWxlc21hbnMwMV8xMDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25h bWUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAxIHwgUG9p cm90CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gc2FsZXNtYW5zMTBfMjA7Cisgc2FsZXNt YW5faWQgfCBzYWxlc21hbl9uYW1lIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0K KyAgICAgICAgICAxMCB8IE1heQorICAgICAgICAgIDE5IHwgSXZhbm92CisoMiByb3dzKQor CitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczIwXzMwOworIHNhbGVzbWFuX2lkIHwgc2FsZXNt YW5fbmFtZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgMjAg fCBTbWlybm9mZgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczMwXzQwOwor IHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tCisgICAgICAgICAgMzAgfCBGb3JkCisoMSByb3cpCisKK0RST1AgVEFCTEUgc2Fs ZXNtYW5zIENBU0NBREU7CitEUk9QIEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dl cigpOworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiB3aXRjaCBpZGVudGl0eSBjb2x1 bW4KKy0tIElmIHNwbGl0IHBhcnRpdGlvbiBjb2x1bW4gaXMgaWRlbnRpdHktY29sdW1uLCBj b2x1bW5zIG9mIG5ldyBwYXJ0aXRpb25zIGFyZSBpZGVudGl0eS1jb2x1bW5zIHRvby4KKy0t CitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zKHNhbGVzbWFuX2lkIElOVCBHRU5FUkFURUQgQUxX QVlTIEFTIElERU5USVRZIFBSSU1BUlkgS0VZLCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzAp KSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzbWFuX2lkKTsKK0NSRUFURSBUQUJMRSBzYWxl c21hbnMxXzIgUEFSVElUSU9OIE9GIHNhbGVzbWFucyBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgyKTsKKy0tIENyZWF0ZSBuZXcgcGFydGl0aW9uIHdpdGggaWRlbnRpdHktY29sdW1uOgor Q1JFQVRFIFRBQkxFIHNhbGVzbWFuczJfNShzYWxlc21hbl9pZCBJTlQgR0VORVJBVEVEIEFM V0FZUyBBUyBJREVOVElUWSBQUklNQVJZIEtFWSwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMw KSk7CitBTFRFUiBUQUJMRSBzYWxlc21hbnMgQVRUQUNIIFBBUlRJVElPTiBzYWxlc21hbnMy XzUgRk9SIFZBTFVFUyBGUk9NICgyKSBUTyAoNSk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMg KHNhbGVzbWFuX25hbWUpIFZBTFVFUyAoJ1BvaXJvdCcpOworSU5TRVJUIElOVE8gc2FsZXNt YW5zIChzYWxlc21hbl9uYW1lKSBWQUxVRVMgKCdJdmFub3YnKTsKK1NFTEVDVCBhdHRuYW1l LCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0 dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzbWFucyc6OnJlZ2NsYXNzOjpvaWQ7Cisg ICAgYXR0bmFtZSAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc21hbl9pZCAgIHwg YSAgICAgICAgICAgfCAKKyBzYWxlc21hbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJv d3MpCisKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00g cGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzbWFu czFfMic6OnJlZ2NsYXNzOjpvaWQ7CisgICAgYXR0bmFtZSAgICB8IGF0dGlkZW50aXR5IHwg YXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0KKyBzYWxlc21hbl9pZCAgIHwgICAgICAgICAgICAgfCAKKyBzYWxlc21hbl9uYW1l IHwgICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKKy0tIFNwbGl0IHBhcnRpdGlvbiBoYXMg aWRlbnRpdHktY29sdW1uOgorU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5l cmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQg PSAnc2FsZXNtYW5zMl81Jzo6cmVnY2xhc3M6Om9pZDsKKyAgICBhdHRuYW1lICAgIHwgYXR0 aWRlbnRpdHkgfCBhdHRnZW5lcmF0ZWQgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLQorIHNhbGVzbWFuX2lkICAgfCBhICAgICAgICAgICB8IAorIHNh bGVzbWFuX25hbWUgfCAgICAgICAgICAgICB8IAorKDIgcm93cykKKworQUxURVIgVEFCTEUg c2FsZXNtYW5zIFNQTElUIFBBUlRJVElPTiBzYWxlc21hbnMyXzUgSU5UTworICAoUEFSVElU SU9OIHNhbGVzbWFuczJfMyBGT1IgVkFMVUVTIEZST00gKDIpIFRPICgzKSwKKyAgIFBBUlRJ VElPTiBzYWxlc21hbnMzXzQgRk9SIFZBTFVFUyBGUk9NICgzKSBUTyAoNCksCisgICBQQVJU SVRJT04gc2FsZXNtYW5zNF81IEZPUiBWQUxVRVMgRlJPTSAoNCkgVE8gKDUpKTsKK0lOU0VS VCBJTlRPIHNhbGVzbWFucyAoc2FsZXNtYW5fbmFtZSkgVkFMVUVTICgnTWF5Jyk7CitJTlNF UlQgSU5UTyBzYWxlc21hbnMgKHNhbGVzbWFuX25hbWUpIFZBTFVFUyAoJ0ZvcmQnKTsKK1NF TEVDVCAqIEZST00gc2FsZXNtYW5zMV8yOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFt ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEgfCBQb2ly b3QKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBzYWxlc21hbnMyXzM7Cisgc2FsZXNtYW5f aWQgfCBzYWxlc21hbl9uYW1lIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgMiB8IEl2YW5vdgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFu czNfNDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgCistLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLQorICAgICAgICAgICAzIHwgTWF5CisoMSByb3cpCisKK1NFTEVDVCAq IEZST00gc2FsZXNtYW5zNF81OworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDQgfCBGb3JkCisoMSBy b3cpCisKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00g cGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzbWFu cyc6OnJlZ2NsYXNzOjpvaWQ7CisgICAgYXR0bmFtZSAgICB8IGF0dGlkZW50aXR5IHwgYXR0 Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0KKyBzYWxlc21hbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBzYWxlc21hbl9uYW1lIHwg ICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0 eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5E IGF0dHJlbGlkID0gJ3NhbGVzbWFuczFfMic6OnJlZ2NsYXNzOjpvaWQ7CisgICAgYXR0bmFt ZSAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc21hbl9pZCAgIHwgICAgICAgICAg ICAgfCAKKyBzYWxlc21hbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKKy0t IE5ldyBwYXJ0aXRpb25zIGhhdmUgaWRlbnRpdHktY29sdW1uczoKK1NFTEVDVCBhdHRuYW1l LCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0 dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzbWFuczJfMyc6OnJlZ2NsYXNzOjpvaWQ7 CisgICAgYXR0bmFtZSAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc21hbl9pZCAg IHwgYSAgICAgICAgICAgfCAKKyBzYWxlc21hbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygy IHJvd3MpCisKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZS T00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVz bWFuczNfNCc6OnJlZ2NsYXNzOjpvaWQ7CisgICAgYXR0bmFtZSAgICB8IGF0dGlkZW50aXR5 IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0KKyBzYWxlc21hbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBzYWxlc21hbl9u YW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKK1NFTEVDVCBhdHRuYW1lLCBhdHRp ZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+ IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzbWFuczRfNSc6OnJlZ2NsYXNzOjpvaWQ7CisgICAg YXR0bmFtZSAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc21hbl9pZCAgIHwgYSAg ICAgICAgICAgfCAKKyBzYWxlc21hbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3Mp CisKK0RST1AgVEFCTEUgc2FsZXNtYW5zIENBU0NBREU7CistLQorLS0gVGVzdDogc3BsaXQg cGFydGl0aW9uIHdpdGggZGVsZXRlZCBjb2x1bW5zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVz bWFucyhzYWxlc21hbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzbWFuX25hbWUgVkFSQ0hB UigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNtYW5faWQpOworQ1JFQVRFIFRBQkxF IHNhbGVzbWFuczAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc21hbnMgRk9SIFZBTFVFUyBGUk9N ICgxKSBUTyAoMTApOworLS0gQ3JlYXRlIG5ldyBwYXJ0aXRpb24gd2l0aCBzb21lIGRlbGV0 ZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSBzYWxlc21hbnMxMF80MChkMSBWQVJDSEFSKDMw KSwgc2FsZXNtYW5faWQgSU5UIFBSSU1BUlkgS0VZLCBkMiBJTlQsIGQzIERBVEUsIHNhbGVz bWFuX25hbWUgVkFSQ0hBUigzMCkpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zMTBfNDAgVkFM VUVTICgnZHVtbXkgdmFsdWUgMScsIDE5LCAxMDAsIG5vdygpLCAnSXZhbm92Jyk7CitJTlNF UlQgSU5UTyBzYWxlc21hbnMxMF80MCBWQUxVRVMgKCdkdW1teSB2YWx1ZSAyJywgMjAsIDEw MSwgbm93KCksICdTbWlybm9mZicpOworQUxURVIgVEFCTEUgc2FsZXNtYW5zMTBfNDAgRFJP UCBDT0xVTU4gZDE7CitBTFRFUiBUQUJMRSBzYWxlc21hbnMxMF80MCBEUk9QIENPTFVNTiBk MjsKK0FMVEVSIFRBQkxFIHNhbGVzbWFuczEwXzQwIERST1AgQ09MVU1OIGQzOworQUxURVIg VEFCTEUgc2FsZXNtYW5zIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNtYW5zMTBfNDAgRk9SIFZB TFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxVRVMg KDEsICdQb2lyb3QnKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxVRVMgKDEwLCAnTWF5 Jyk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgzMCwgJ0ZvcmQnKTsKK0FMVEVS IFRBQkxFIHNhbGVzbWFucyBTUExJVCBQQVJUSVRJT04gc2FsZXNtYW5zMTBfNDAgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzbWFuczEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgy MCksCisgICBQQVJUSVRJT04gc2FsZXNtYW5zMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkg VE8gKDMwKSwKKyAgIFBBUlRJVElPTiBzYWxlc21hbnMzMF80MCBGT1IgVkFMVUVTIEZST00g KDMwKSBUTyAoNDApKTsKK3NlbGVjdCAqIGZyb20gc2FsZXNtYW5zMDFfMTA7Cisgc2FsZXNt YW5faWQgfCBzYWxlc21hbl9uYW1lIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0K KyAgICAgICAgICAgMSB8IFBvaXJvdAorKDEgcm93KQorCitzZWxlY3QgKiBmcm9tIHNhbGVz bWFuczEwXzIwOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgMTkgfCBJdmFub3YKKyAgICAgICAgICAx MCB8IE1heQorKDIgcm93cykKKworc2VsZWN0ICogZnJvbSBzYWxlc21hbnMyMF8zMDsKKyBz YWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLQorICAgICAgICAgIDIwIHwgU21pcm5vZmYKKygxIHJvdykKKworc2VsZWN0ICogZnJv bSBzYWxlc21hbnMzMF80MDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgCistLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgIDMwIHwgRm9yZAorKDEgcm93 KQorCitEUk9QIFRBQkxFIHNhbGVzbWFucyBDQVNDQURFOworLS0KKy0tIFRlc3Q6IHNwbGl0 IHN1Yi1wYXJ0aXRpb24KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFu X2lkIElOVCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwg c2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBU QUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2FwcjIwMjIgKHNhbGVzbWFuX2lkIElOVCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwg c2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0Ug KHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl9hbGwgUEFSVElUSU9OIE9G IHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAy Mi0wNS0wMScpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgQVRUQUNIIFBBUlRJVElPTiBz YWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjIt MDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9p ZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEt MzEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMiwgICdTbWlybm9mZics IDUwMCwgICcyMDIyLTAyLTEwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNSwgICdEZWV2JywgICAgIDI1MCwg ICcyMDIyLTA0LTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDYsICAn UG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIy LTAyLTIzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDksICAnTXVsbGVy JywgICAyNTAsICAnMjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2 Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAgICAz NTAsICAnMjAyMi0wMy0xOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgx MywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitT RUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFt ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMSB8IE1h eSAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAgMTAg fCBIYWxkZXIgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAg IDEzIHwgR2FuZGkgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyAgICAg ICAgICAgMiB8IFNtaXJub2ZmICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisg ICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAy MgorICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIz LTIwMjIKKyAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAw My0wOC0yMDIyCisgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgIHwgICAgICAgICAgMjUw IHwgMDMtMTEtMjAyMgorICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICB8ICAgICAgICAg IDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgfCAgICAg ICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwg ICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICA1IHwgRGVldiAgICAgICAg ICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAxMSB8IFRydW1wICAg ICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgMTQgfCBTbWl0 aCAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDE0IHJvd3MpCisKK1NF TEVDVCAqIEZST00gc2FsZXNfYXByMjAyMjsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25h bWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDMgfCBG b3JkICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICA0 IHwgSXZhbm92ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAg ICAgNSB8IERlZXYgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAg ICAgICAgMTEgfCBUcnVtcCAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgor KDQgcm93cykKKworQUxURVIgVEFCTEUgc2FsZXNfYXByMjAyMiBTUExJVCBQQVJUSVRJT04g c2FsZXNfYXByX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8wMV8xMCBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJyksCisgICBQ QVJUSVRJT04gc2FsZXNfYXByMjAyMl8xMF8yMCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0 LTEwJykgVE8gKCcyMDIyLTA0LTIwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8y MF8zMCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTIwJykgVE8gKCcyMDIyLTA1LTAxJykp OworU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFu X25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEg fCBNYXkgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAg IDEwIHwgSGFsZGVyICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAg ICAgICAxMyB8IEdhbmRpICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisg ICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAy MgorICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTEx LTIwMjIKKyAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgfCAgICAgICAgICAxODUgfCAw Mi0yMy0yMDIyCisgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgIHwgICAgICAgICAgMTc1 IHwgMDMtMDgtMjAyMgorICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICB8ICAgICAgICAg IDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgfCAgICAg ICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgIHwg ICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAg ICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgNCB8IEl2YW5vdiAg ICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgIDMgfCBGb3Jk ICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgIDE0IHwg U21pdGggICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxNCByb3dzKQor CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21h bl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICA1 IHwgRGVldiAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAg ICAxMSB8IFRydW1wICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAg ICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgor ICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIw MjIKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8wMV8xMDsKKyBz YWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRl IAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tCisgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgIHwgICAgICAgICAgMjUwIHwg MDQtMDctMjAyMgorICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICB8ICAgICAgICAgIDM4 MCB8IDA0LTA2LTIwMjIKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAy Ml8xMF8yMDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQg fCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwgICAg ICAgICAgNzUwIHwgMDQtMTMtMjAyMgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVz X2FwcjIwMjJfMjBfMzA7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNf YW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAzIHwgRm9yZCAgICAgICAg ICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKygxIHJvdykKKworRFJPUCBUQUJMRSBz YWxlc19yYW5nZTsKKy0tCistLSBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KKy0tCistLSBU ZXN0OiBzcGVjaWZpYyBlcnJvcnMgZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nCistLQorQ1JF QVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc21hbl9pZCBJTlQsCisgc2FsZXNtYW5fbmFt ZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91 bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19z dGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlz dCBGT1IgVkFMVUVTIElOICgnTXVybWFuc2snLCAnU3QuIFBldGVyc2J1cmcnLCAnVWtodGEn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9S IFZBTFVFUyBJTiAoJ01vc2NvdycsICdWb3JvbmV6aCcsICdTbW9sZW5zaycsICdCcnlhbnNr JywgJ01hZ2FkYW4nLCAnS2F6YW4nLCAnS2hhYmFyb3ZzaycsICdWb2xnb2dyYWQnLCAnVmxh ZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNh bGVzX2xpc3QgREVGQVVMVDsKKy0tIEVSUk9SOiAgcGFydGl0aW9uICJzYWxlc19lYXN0IiB3 b3VsZCBvdmVybGFwIHBhcnRpdGlvbiAic2FsZXNfbm9yZCIKK0FMVEVSIFRBQkxFIHNhbGVz X2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnVm9yb25lemgnLCAnU21vbGVuc2snLCAnQnJ5YW5z aycpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ01hZ2FkYW4n LCAnS2hhYmFyb3ZzaycsICdWbGFkaXZvc3RvaycsICdNdXJtYW5zaycpLAorICAgUEFSVElU SU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ01vc2NvdycsICdLYXphbicsICdW b2xnb2dyYWQnKSk7CitFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX2Vhc3QiIHdvdWxk IG92ZXJsYXAgd2l0aCBhbm90aGVyIChub3Qgc3BsaXQpIHBhcnRpdGlvbiAic2FsZXNfbm9y ZCIKK0xJTkUgMzogLi4uQUxVRVMgSU4gKCdNYWdhZGFuJywgJ0toYWJhcm92c2snLCAnVmxh ZGl2b3N0b2snLCAnTXVybWFuc2snLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBuZXcgcGFy dGl0aW9uICJzYWxlc193ZXN0IiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciBuZXcgcGFy dGl0aW9uICJzYWxlc19jZW50cmFsIgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQ QVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBW QUxVRVMgSU4gKCdWb3JvbmV6aCcsICdTbW9sZW5zaycsICdCcnlhbnNrJyksCisgICBQQVJU SVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnTWFnYWRhbicsICdLaGFiYXJvdnNr JywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFM VUVTIElOICgnTW9zY293JywgJ0themFuJywgJ1Zvcm9uZXpoJywgJ1ZvbGdvZ3JhZCcpKTsK K0VSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgd291bGQgb3ZlcmxhcCB3aXRo IGFub3RoZXIgbmV3IHBhcnRpdGlvbiAic2FsZXNfY2VudHJhbCIKK0xJTkUgMjogICAoUEFS VElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ1Zvcm9uZXpoJywgJ1Ntb2xlbnNr Li4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K Ky0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgY2Fubm90IGhhdmUgTlVM TCB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBkb2VzIG5vdCBoYXZlCitBTFRFUiBU QUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFS VElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ1Zvcm9uZXpoJywgJ1Ntb2xlbnNr JywgJ0JyeWFuc2snLCBOVUxMKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxV RVMgSU4gKCdNYWdhZGFuJywgJ0toYWJhcm92c2snLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBB UlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdNb3Njb3cnLCAnS2F6YW4n LCAnVm9sZ29ncmFkJykpOworRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiBj YW5ub3QgaGF2ZSBOVUxMIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGRvZXMgbm90 IGhhdmUKK0xJTkUgMjogLi4uZXN0IEZPUiBWQUxVRVMgSU4gKCdWb3JvbmV6aCcsICdTbW9s ZW5zaycsICdCcnlhbnNrJywgTlVMTCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RST1AgVEFCTEUgc2Fs ZXNfbGlzdDsKKy0tCistLSBUZXN0OiB0d28gc3BlY2lmaWMgZXJyb3JzIGZvciBCWSBMSVNU IHBhcnRpdGlvbmluZzoKKy0tICAgKiBuZXcgcGFydGl0aW9ucyBub3QgaGFzIE5VTEwgdmFs dWUgdGhhdCBzcGxpdCBwYXJ0aXRpb24gaGFzLgorLS0gICAqIG5ldyBwYXJ0aXRpb25zIG5v dCBoYXMgYSB2YWx1ZSB0aGF0IHNwbGl0IHBhcnRpdGlvbiBoYXMuCistLQorQ1JFQVRFIFRB QkxFIHNhbGVzX2xpc3QKKyhzYWxlc21hbl9pZCBJTlQsCisgc2FsZXNtYW5fbmFtZSBWQVJD SEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5U LAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1Ig VkFMVUVTIElOICgnTXVybWFuc2snLCAnU3QuIFBldGVyc2J1cmcnLCAnVWtodGEnKTsKK0NS RUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVF UyBJTiAoJ01vc2NvdycsICdWb3JvbmV6aCcsICdTbW9sZW5zaycsICdCcnlhbnNrJywgJ01h Z2FkYW4nLCAnS2F6YW4nLCAnS2hhYmFyb3ZzaycsICdWb2xnb2dyYWQnLCAnVmxhZGl2b3N0 b2snLCBOVUxMKTsKKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbnMgbm90IGhhdmUgdmFsdWUg TlVMTCBidXQgc3BsaXQgcGFydGl0aW9uIGhhcworQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBT UExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0 IEZPUiBWQUxVRVMgSU4gKCdWb3JvbmV6aCcsICdTbW9sZW5zaycsICdCcnlhbnNrJyksCisg ICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnTWFnYWRhbicsICdLaGFi YXJvdnNrJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBG T1IgVkFMVUVTIElOICgnTW9zY293JywgJ0themFuJywgJ1ZvbGdvZ3JhZCcpKTsKK0VSUk9S OiAgbmV3IHBhcnRpdGlvbnMgbm90IGhhdmUgdmFsdWUgTlVMTCBidXQgc3BsaXQgcGFydGl0 aW9uIGhhcworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9ucyBub3QgaGF2ZSB2YWx1ZSAnVm9s Z29ncmFkJyBidXQgc3BsaXQgcGFydGl0aW9uIGhhcworQUxURVIgVEFCTEUgc2FsZXNfbGlz dCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193 ZXN0IEZPUiBWQUxVRVMgSU4gKCdWb3JvbmV6aCcsICdTbW9sZW5zaycsICdCcnlhbnNrJyks CisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnTWFnYWRhbicsICdL aGFiYXJvdnNrJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJh bCBGT1IgVkFMVUVTIElOICgnTW9zY293JywgJ0themFuJywgTlVMTCkpOworRVJST1I6ICBu ZXcgcGFydGl0aW9ucyBub3QgaGF2ZSB2YWx1ZSAnVm9sZ29ncmFkJyBidXQgc3BsaXQgcGFy dGl0aW9uIGhhcworRFJPUCBUQUJMRSBzYWxlc19saXN0OworLS0KKy0tIFRlc3Q6IEJZIExJ U1QgcGFydGl0aW9uaW5nLCBTUExJVCBQQVJUSVRJT04gd2l0aCBkYXRhCistLQorQ1JFQVRF IFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc21hbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBB UyBJREVOVElUWSwKKyBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRl IFZBUkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQor UEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBJTkRFWCBzYWxlc19s aXN0X3NhbGVzbWFuX25hbWVfaWR4IE9OIHNhbGVzX2xpc3QgVVNJTkcgYnRyZWUgKHNhbGVz bWFuX25hbWUpOworQ1JFQVRFIElOREVYIHNhbGVzX2xpc3Rfc2FsZXNfc3RhdGVfaWR4IE9O IHNhbGVzX2xpc3QgVVNJTkcgYnRyZWUgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdNdXJt YW5zaycsICdTdC4gUGV0ZXJzYnVyZycsICdVa2h0YScpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnTW9zY293Jywg J1Zvcm9uZXpoJywgJ1Ntb2xlbnNrJywgJ0JyeWFuc2snLCAnTWFnYWRhbicsICdLYXphbics ICdLaGFiYXJvdnNrJywgJ1ZvbGdvZ3JhZCcsICdWbGFkaXZvc3RvaycpOworQ1JFQVRFIFRB QkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBERUZBVUxUOworSU5T RVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVz X2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnVHJ1bXAnLCAgICAnTWFnYWRhbicsICAg ICAgICAxMDAwLCAnMjAyMi0wMy0wMScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2Fs ZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFM VUVTICgnU21pcm5vZmYnLCAnU21vbGVuc2snLCAgICAgICA1MDAsICAnMjAyMi0wMy0wMycp OworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUs IHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnRm9yZCcsICAgICAnU3QuIFBl dGVyc2J1cmcnLCAyMDAwLCAnMjAyMi0wMy0wNScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlz dCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0 ZSkgVkFMVUVTICgnSXZhbm92JywgICAnTW9zY293JywgICAgICAgICA3NTAsICAnMjAyMi0w My0wNCcpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNf c3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnRGVldicsICAgICAn Vm9yb25lemgnLCAgICAgICAyNTAsICAnMjAyMi0wMy0wNycpOworSU5TRVJUIElOVE8gc2Fs ZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2Fs ZXNfZGF0ZSkgVkFMVUVTICgnUG9pcm90JywgICAnS2F6YW4nLCAgICAgICAgICAxMDAwLCAn MjAyMi0wMy0wMScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwg c2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnTWF5Jywg ICAgICAnVWtodGEnLCAgICAgICAgICAxMjAwLCAnMjAyMi0wMy0wNicpOworSU5TRVJUIElO VE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3Vu dCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnTGknLCAgICAgICAnVmxhZGl2b3N0b2snLCAgICAx MTUwLCAnMjAyMi0wMy0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5f bmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgn TWF5JywgICAgICAnVWtodGEnLCAgICAgICAgICAxMjAwLCAnMjAyMi0wMy0xMScpOworSU5T RVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVz X2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnSGFsZGVyJywgICAnTXVybWFuc2snLCAg ICAgICA4MDAsICAnMjAyMi0wMy0wMicpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2Fs ZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFM VUVTICgnTXVsbGVyJywgICAnQnJ5YW5zaycsICAgICAgICA2NTAsICAnMjAyMi0wMy0wNScp OworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUs IHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnU21pdGgnLCAgICAnVm9sZ29n cmFkJywgICAgICAzNTAsICAnMjAyMi0wMy0xMCcpOworSU5TRVJUIElOVE8gc2FsZXNfbGlz dCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0 ZSkgVkFMVUVTICgnR2FuZGknLCAgICAnTW9zY293JywgICAgICAgICAxNTAsICAnMjAyMi0w My0wOCcpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNf c3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnUGxhdG8nLCAgICAn Vm9yb25lemgnLCAgICAgICA5NTAsICAnMjAyMi0wMy0wNScpOworQUxURVIgVEFCTEUgc2Fs ZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBz YWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdWb3JvbmV6aCcsICdTbW9sZW5zaycsICdCcnlh bnNrJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnTWFnYWRh bicsICdLaGFiYXJvdnNrJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNf Y2VudHJhbCBGT1IgVkFMVUVTIElOICgnTW9zY293JywgJ0themFuJywgJ1ZvbGdvZ3JhZCcp KTsKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFu X25hbWUgfCAgc2FsZXNfc3RhdGUgICB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCist LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICB8IFNt b2xlbnNrICAgICAgIHwgICAgICAgICAgNTAwIHwgMDMtMDMtMjAyMgorICAgICAgICAgICA1 IHwgRGVldiAgICAgICAgICB8IFZvcm9uZXpoICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMt MDctMjAyMgorICAgICAgICAgIDExIHwgTXVsbGVyICAgICAgICB8IEJyeWFuc2sgICAgICAg IHwgICAgICAgICAgNjUwIHwgMDMtMDUtMjAyMgorICAgICAgICAgIDE0IHwgUGxhdG8gICAg ICAgICB8IFZvcm9uZXpoICAgICAgIHwgICAgICAgICAgOTUwIHwgMDMtMDUtMjAyMgorICAg ICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8IE1vc2NvdyAgICAgICAgIHwgICAgICAgICAg NzUwIHwgMDMtMDQtMjAyMgorICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICB8IEthemFu ICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDMtMDEtMjAyMgorICAgICAgICAgIDEyIHwg U21pdGggICAgICAgICB8IFZvbGdvZ3JhZCAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTAt MjAyMgorICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICB8IE1vc2NvdyAgICAgICAgIHwg ICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorICAgICAgICAgICAxIHwgVHJ1bXAgICAgICAg ICB8IE1hZ2FkYW4gICAgICAgIHwgICAgICAgICAxMDAwIHwgMDMtMDEtMjAyMgorICAgICAg ICAgICA4IHwgTGkgICAgICAgICAgICB8IFZsYWRpdm9zdG9rICAgIHwgICAgICAgICAxMTUw IHwgMDMtMDktMjAyMgorICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICB8IFN0LiBQZXRl cnNidXJnIHwgICAgICAgICAyMDAwIHwgMDMtMDUtMjAyMgorICAgICAgICAgICA3IHwgTWF5 ICAgICAgICAgICB8IFVraHRhICAgICAgICAgIHwgICAgICAgICAxMjAwIHwgMDMtMDYtMjAy MgorICAgICAgICAgICA5IHwgTWF5ICAgICAgICAgICB8IFVraHRhICAgICAgICAgIHwgICAg ICAgICAxMjAwIHwgMDMtMTEtMjAyMgorICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICB8 IE11cm1hbnNrICAgICAgIHwgICAgICAgICAgODAwIHwgMDMtMDItMjAyMgorKDE0IHJvd3Mp CisKK1NFTEVDVCAqIEZST00gc2FsZXNfd2VzdDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFu X25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLQorICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICB8IFNtb2xlbnNr ICAgIHwgICAgICAgICAgNTAwIHwgMDMtMDMtMjAyMgorICAgICAgICAgICA1IHwgRGVldiAg ICAgICAgICB8IFZvcm9uZXpoICAgIHwgICAgICAgICAgMjUwIHwgMDMtMDctMjAyMgorICAg ICAgICAgIDExIHwgTXVsbGVyICAgICAgICB8IEJyeWFuc2sgICAgIHwgICAgICAgICAgNjUw IHwgMDMtMDUtMjAyMgorICAgICAgICAgIDE0IHwgUGxhdG8gICAgICAgICB8IFZvcm9uZXpo ICAgIHwgICAgICAgICAgOTUwIHwgMDMtMDUtMjAyMgorKDQgcm93cykKKworU0VMRUNUICog RlJPTSBzYWxlc19lYXN0OworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVz X3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t CisgICAgICAgICAgIDEgfCBUcnVtcCAgICAgICAgIHwgTWFnYWRhbiAgICAgfCAgICAgICAg IDEwMDAgfCAwMy0wMS0yMDIyCisgICAgICAgICAgIDggfCBMaSAgICAgICAgICAgIHwgVmxh ZGl2b3N0b2sgfCAgICAgICAgIDExNTAgfCAwMy0wOS0yMDIyCisoMiByb3dzKQorCitTRUxF Q1QgKiBGUk9NIHNhbGVzX25vcmQ7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwg IHNhbGVzX3N0YXRlICAgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0KKyAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgfCBTdC4gUGV0ZXJz YnVyZyB8ICAgICAgICAgMjAwMCB8IDAzLTA1LTIwMjIKKyAgICAgICAgICAgNyB8IE1heSAg ICAgICAgICAgfCBVa2h0YSAgICAgICAgICB8ICAgICAgICAgMTIwMCB8IDAzLTA2LTIwMjIK KyAgICAgICAgICAgOSB8IE1heSAgICAgICAgICAgfCBVa2h0YSAgICAgICAgICB8ICAgICAg ICAgMTIwMCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgfCBN dXJtYW5zayAgICAgICB8ICAgICAgICAgIDgwMCB8IDAzLTAyLTIwMjIKKyg0IHJvd3MpCisK K1NFTEVDVCAqIEZST00gc2FsZXNfY2VudHJhbDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFu X25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLQorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8IE1vc2NvdyAg ICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorICAgICAgICAgICA2IHwgUG9pcm90 ICAgICAgICB8IEthemFuICAgICAgIHwgICAgICAgICAxMDAwIHwgMDMtMDEtMjAyMgorICAg ICAgICAgIDEyIHwgU21pdGggICAgICAgICB8IFZvbGdvZ3JhZCAgIHwgICAgICAgICAgMzUw IHwgMDMtMTAtMjAyMgorICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICB8IE1vc2NvdyAg ICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorKDQgcm93cykKKworLS0gVXNlIGlu ZGV4c2NhbiBmb3IgdGVzdCBpbmRleGVzIGFmdGVyIHNwbGl0IHBhcnRpdGlvbgorU0VUIGVu YWJsZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKK1NFTEVD VCAqIEZST00gc2FsZXNfY2VudHJhbCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdNb3Njb3cnOwor IHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1v dW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDQgfCBJ dmFub3YgICAgICAgIHwgTW9zY293ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIy CisgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgIHwgTW9zY293ICAgICAgfCAgICAgICAg ICAxNTAgfCAwMy0wOC0yMDIyCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xp c3QgV0hFUkUgc2FsZXNfc3RhdGUgPSAnTW9zY293JzsKKyBzYWxlc21hbl9pZCB8IHNhbGVz bWFuX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCist LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8IE1vc2Nv dyAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorICAgICAgICAgIDEzIHwgR2Fu ZGkgICAgICAgICB8IE1vc2NvdyAgICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgor KDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzbWFuX25h bWUgPSAnSXZhbm92JzsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19z dGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQor ICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8IE1vc2NvdyAgICAgIHwgICAgICAgICAg NzUwIHwgMDMtMDQtMjAyMgorKDEgcm93KQorCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IE9O OworU0VUIGVuYWJsZV9zZXFzY2FuID0gT047CitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7Cist LQorLS0gVGVzdCBmb3I6CistLSAgICogc3BsaXQgREVGQVVMVCBwYXJ0aXRpb24gdG8gcGFy dGl0aW9ucyB3aXRoIHNwYWNlcyBiZXR3ZWVuIGJvdW5kczsKKy0tICAgKiByYW5kb20gb3Jk ZXIgb2YgcGFydGl0aW9ucyBpbiBTUExJVCBQQVJUSVRJT04gY29tbWFuZC4KKy0tCitDUkVB VEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lkIElOVCwgc2FsZXNtYW5fbmFtZSBW QVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJ T04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAy Mi0wMi0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgzLCAgJ0ZvcmQn LCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyk7CitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0w NycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg2LCAgJ1BvaXJvdCcsICAg MTUwLCAgJzIwMjItMDItMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo NywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg5LCAgJ011bGxlcicsICAgMjUwLCAg JzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTAsICdI YWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjIt MDMtMTknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTMsICdHYW5kaScs ICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworQUxURVIgVEFCTEUg c2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQsCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAy Ml8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDMt MTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19qYW4yMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMS0xMCcpLAorICAgUEFSVElUSU9OIHNh bGVzX2ZlYjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8g KCcyMDIyLTAyLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8xZGVjYWRlIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKSk7CitTRUxF Q1QgKiBGUk9NIHNhbGVzX2phbjIwMjJfMWRlY2FkZTsKKyBzYWxlc21hbl9pZCB8IHNhbGVz bWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAg MTMgfCBHYW5kaSAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorKDEgcm93 KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZTsKKyBzYWxlc21hbl9p ZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisg ICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMDktMjAy MgorICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTA3 LTIwMjIKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbWFyMjAyMl8xZGVjYWRl OworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVz X2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0KKyAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgfCAgICAgICAgICAx NzUgfCAwMy0wOC0yMDIyCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAy Ml8xZGVjYWRlOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3Vu dCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgfCAg ICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAg IHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorKDIgcm93cykKKworU0VMRUNUICogRlJP TSBzYWxlc19vdGhlcnM7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNf YW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAxIHwgTWF5ICAgICAgICAg ICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAgMyB8IEZvcmQgICAg ICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgIDQgfCBJdmFu b3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICA4IHwg RXJpY3Nzb24gICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAg OSB8IE11bGxlciAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAg ICAgMTAgfCBIYWxkZXIgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAg ICAgICAgIDEyIHwgUGxhdG8gICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIK KyAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0y MDIyCisoOCByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIFRlc3Qg Zm9yOgorLS0gICAqIHNwbGl0IG5vbi1ERUZBVUxUIHBhcnRpdGlvbiB0byBwYXJ0aXRpb25z IHdpdGggc3BhY2VzIGJldHdlZW4gYm91bmRzOworLS0gICAqIHJhbmRvbSBvcmRlciBvZiBw YXJ0aXRpb25zIGluIFNQTElUIFBBUlRJVElPTiBjb21tYW5kLgorLS0KK0NSRUFURSBUQUJM RSBzYWxlc19yYW5nZSAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIo MzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBS QU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIy LTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBERUZBVUxUOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAg J01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTA5Jyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAy Mi0wNC0zMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg0LCAgJ0l2YW5v dicsICAgNzUwLCAgJzIwMjItMDQtMTMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3Jyk7CitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0w NycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg3LCAgJ0xpJywgICAgICAg MTc1LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo OCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyk7CitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMCwgJ0hhbGRlcicsICAgMzUwLCAg JzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTEsICdU cnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjIt MDEtMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0aCcs ICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19tYXIyMDIy XzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wMy0x MCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2phbjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAxLTEwJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfZmViMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAo JzIwMjItMDItMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzFkZWNhZGUgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xMCcpKTsKK1NFTEVD VCAqIEZST00gc2FsZXNfamFuMjAyMl8xZGVjYWRlOworIHNhbGVzbWFuX2lkIHwgc2FsZXNt YW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAx MyB8IEdhbmRpICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisoMSByb3cp CisKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViMjAyMl8xZGVjYWRlOworIHNhbGVzbWFuX2lk IHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0wOS0yMDIy CisgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMDct MjAyMgorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19tYXIyMDIyXzFkZWNhZGU7 Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNf ZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLQorICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICB8ICAgICAgICAgIDE3 NSB8IDAzLTA4LTIwMjIKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIy XzFkZWNhZGU7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50 IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICB8ICAg ICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAg fCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9N IHNhbGVzX290aGVyczsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19h bW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAg IHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorICAgICAgICAgICAxIHwgTWF5ICAgICAg ICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAgMyB8IEZvcmQg ICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgIDQgfCBJ dmFub3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICA4 IHwgRXJpY3Nzb24gICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAg ICAgOSB8IE11bGxlciAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAg ICAgICAgMTAgfCBIYWxkZXIgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgor ICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIw MjIKKyg4IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0gVGVzdCBm b3Igc3BsaXQgbm9uLURFRkFVTFQgcGFydGl0aW9uIHRvIERFRkFVTFQgcGFydGl0aW9uICsg cGFydGl0aW9ucworLS0gd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHMuCistLQorQ1JFQVRF IFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFS Q0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9O IEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykg VE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIy LTA1LTAxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsICAnTWF5Jywg ICAgICAxMDAwLCAnMjAyMi0wMS0zMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMw Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDQsICAnSXZhbm92JywgICA3 NTAsICAnMjAyMi0wNC0xMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg1 LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDcsICAnTGknLCAgICAgICAxNzUsICAn MjAyMi0wMy0wOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0Vy aWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyk7CitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0w MS0yOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMSwgJ1RydW1wJywg ICAgMzgwLCAgJzIwMjItMDQtMDYnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5Jyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScp OworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJ TlRPCisgIChQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NF TEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1l IHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAxIHwgTWF5 ICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAxMCB8 IEhhbGRlciAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgICAgICAgICAg MTMgfCBHYW5kaSAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorICAgICAg ICAgICAyIHwgU21pcm5vZmYgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAg ICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIy CisgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMt MjAyMgorICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0 LTMwLTIwMjIKKyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCAgICAgICAgICA3NTAg fCAwNC0xMy0yMDIyCisgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgIHwgICAgICAgICAg MjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICB8ICAgICAg ICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgfCAg ICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAg IHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgIDEyIHwgUGxhdG8gICAg ICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAxNCB8IFNtaXRo ICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTQgcm93cykKKworU0VM RUNUICogRlJPTSBzYWxlc19qYW4yMDIyOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFt ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMSB8IE1h eSAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAgMTAg fCBIYWxkZXIgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAg IDEzIHwgR2FuZGkgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKygzIHJv d3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViMjAyMjsKKyBzYWxlc21hbl9pZCB8IHNh bGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAg ICAgIDIgfCBTbWlybm9mZiAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAg ICAgICAgICA2IHwgUG9pcm90ICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIK KyAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0y MDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7Cisgc2FsZXNt YW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LQorICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMw LTIwMjIKKyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCAgICAgICAgICA3NTAgfCAw NC0xMy0yMDIyCisgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgIHwgICAgICAgICAgMjUw IHwgMDQtMDctMjAyMgorICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICB8ICAgICAgICAg IDM4MCB8IDA0LTA2LTIwMjIKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfb3Ro ZXJzOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNh bGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgfCAgICAgICAg ICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgIHwgICAg ICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICB8 ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAxNCB8IFNtaXRoICAgICAg ICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoNCByb3dzKQorCitEUk9QIFRBQkxF IHNhbGVzX3JhbmdlOworLS0KK0RST1AgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWE7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3Jj L3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCAxMDNlMTE0ODNkMi4uYzZm OTc0ZDdiNWMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1 bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtMTI3LDcg KzEyNyw3IEBAIHRlc3Q6IHBsYW5jYWNoZSBsaW1pdCBwbHBnc3FsIGNvcHkyIHRlbXAgZG9t YWluIHJhbmdlZnVuY3MgcHJlcGFyZSBjb252ZXJzaW9uIHRyCiAjIFRoZSBzdGF0cyB0ZXN0 IHJlc2V0cyBzdGF0cywgc28gbm90aGluZyBlbHNlIG5lZWRpbmcgc3RhdHMgYWNjZXNzIGNh biBiZSBpbgogIyB0aGlzIGdyb3VwLgogIyAtLS0tLS0tLS0tCi10ZXN0OiBwYXJ0aXRpb25f am9pbiBwYXJ0aXRpb25fcHJ1bmUgcmVsb3B0aW9ucyBoYXNoX3BhcnQgaW5kZXhpbmcgcGFy dGl0aW9uX2FnZ3JlZ2F0ZSBwYXJ0aXRpb25faW5mbyB0dXBsZXNvcnQgZXhwbGFpbiBjb21w cmVzc2lvbiBtZW1vaXplIHN0YXRzCit0ZXN0OiBwYXJ0aXRpb25fbWVyZ2UgcGFydGl0aW9u X3NwbGl0IHBhcnRpdGlvbl9qb2luIHBhcnRpdGlvbl9wcnVuZSByZWxvcHRpb25zIGhhc2hf cGFydCBpbmRleGluZyBwYXJ0aXRpb25fYWdncmVnYXRlIHBhcnRpdGlvbl9pbmZvIHR1cGxl c29ydCBleHBsYWluIGNvbXByZXNzaW9uIG1lbW9pemUgc3RhdHMKIAogIyBldmVudF90cmln Z2VyIGNhbm5vdCBydW4gY29uY3VycmVudGx5IHdpdGggYW55IHRlc3QgdGhhdCBydW5zIERE TAogIyBvaWRqb2lucyBpcyByZWFkLW9ubHksIHRob3VnaCwgYW5kIHNob3VsZCBydW4gbGF0 ZSBmb3IgYmVzdCBjb3ZlcmFnZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv cGFydGl0aW9uX21lcmdlLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9t ZXJnZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjVhNzI0 Y2U2NWRiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0 aW9uX21lcmdlLnNxbApAQCAtMCwwICsxLDQxMSBAQAorLS0KKy0tIFBBUlRJVElPTlNfTUVS R0UKKy0tIFRlc3RzIGZvciAiQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgLi4u IiBjb21tYW5kCistLQorCitDUkVBVEUgU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1h OworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsK KworLS0KKy0tIEJZIFJBTkdFIHBhcnRpdGlvbmluZworLS0KKworLS0KKy0tIFRlc3QgZm9y IGVycm9yIGNvZGVzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9p ZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNh bGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19kZWMyMDIxIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFM VUVTIEZST00gKCcyMDIxLTEyLTAxJykgVE8gKCcyMDIxLTEyLTMxJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNh bGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19t YXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIy MDIyIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVz X2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxl c19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHJfMSBQQVJUSVRJT04gT0Ygc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTE1 Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByXzIgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0xNScpIFRPICgnMjAyMi0wNS0wMScpOwor QUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgQVRUQUNIIFBBUlRJVElPTiBzYWxlc19hcHIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKKwor Q1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVG QVVMVDsKKworLS0gRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIy IiBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElP TlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8g c2FsZXNfZmViX21hcl9hcHIyMDIyOworLS0gRVJST1I6ICBjYW5ub3QgbWVyZ2Ugbm9uLXRh YmxlIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3Jhbmdl IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVz X2FwcjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOworLS0gRVJST1I6ICBpbnZh bGlkIHBhcnRpdGlvbnMgb3JkZXIsIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIgY2FuIG5v dCBiZSBtZXJnZWQKKy0tIChzcGFjZSBiZXR3ZWVuIHNlY3Rpb25zIHNhbGVzX2phbjIwMjIg YW5kIHNhbGVzX21hcjIwMjIpCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJU SVRJT05TIChzYWxlc19qYW4yMDIyLCBzYWxlc19tYXIyMDIyKSBJTlRPIHNhbGVzX2phbl9t YXIyMDIyOworLS0gRVJST1I6ICBpbnZhbGlkIHBhcnRpdGlvbnMgb3JkZXIsIHBhcnRpdGlv biAic2FsZXNfamFuMjAyMiIgY2FuIG5vdCBiZSBtZXJnZWQKKy0tIChzcGFjZSBiZXR3ZWVu IHNlY3Rpb25zIHNhbGVzX2RlYzIwMjEgYW5kIHNhbGVzX2phbjIwMjIpCitBTFRFUiBUQUJM RSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19kZWMyMDIxLCBzYWxlc19q YW4yMDIyLCBzYWxlc19mZWIyMDIyKSBJTlRPIHNhbGVzX2RlY19qYW5fZmViMjAyMjsKKwor LS0gTk8gRVJST1I6IHRlc3QgZm9yIGN1c3RvbSBwYXJ0aXRpb25zIG9yZGVyCitBTFRFUiBU QUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxl c19tYXIyMDIyLCBzYWxlc19qYW4yMDIyKSBJTlRPIHNhbGVzX2phbl9mZWJfbWFyMjAyMjsK KworU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQsIGluaGRl dGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMu b2lkKQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhl cml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAn c2FsZXNfcmFuZ2UnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9l eHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRh bG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFu Z2U7CisKKy0tCistLSBBZGQgcm93cyBpbnRvIHBhcnRpdGlvbmVkIHRhYmxlIHRoZW4gbWVy Z2UgcGFydGl0aW9ucworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNtYW5f aWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBz YWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVB VEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBz YWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf YXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVy cyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0NSRUFURSBJTkRFWCBzYWxl c19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lORyBidHJlZSAoc2Fs ZXNfZGF0ZSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgICdNYXkn LCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQt MzAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNCwgICdJdmFub3YnLCAg IDc1MCwgICcyMDIyLTA0LTEzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNywgICdMaScsICAgICAgIDE3NSwg ICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDgsICAn RXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIy LTAxLTI4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDExLCAnVHJ1bXAn LCAgICAzODAsICAnMjAyMi0wNC0wNicpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5 Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDE0LCAnU21pdGgnLCAgICA1 MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxFQ1QgcGdfY2F0YWxvZy5wZ19nZXRfcGFydGtl eWRlZignc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcyk7CisKKy0tIHNob3cgcGFydGl0aW9ucyB3 aXRoIGNvbmRpdGlvbnM6CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMu cmVsa2luZCwgaW5oZGV0YWNocGVuZGluZywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJl bHBhcnRib3VuZCwgYy5vaWQpCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19j YXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBp LmluaHBhcmVudCA9ICdzYWxlc19yYW5nZSc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2Nh dGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywg Yy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKworQUxURVIg VEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2Fs ZXNfbWFyMjAyMiwgc2FsZXNfYXByMjAyMikgSU5UTyBzYWxlc19mZWJfbWFyX2FwcjIwMjI7 CisKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitTRUxFQ1QgYy5vaWQ6 OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVsa2luZCwgaW5oZGV0YWNocGVuZGluZywgcGdf Y2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpCisgIEZST00gcGdf Y2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUg Yy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICdzYWxlc19yYW5nZSc6OnJl Z2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91 bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBn X2NhdGFsb2cudGV4dDsKKworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxl bmFtZSA9ICdzYWxlc19mZWJfbWFyX2FwcjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRp dGlvbnNfbWVyZ2Vfc2NoZW1hJzsKKworU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKK1NF TEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViX21h cl9hcHIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7CisKKy0tIFVzZSBpbmRl eHNjYW4gZm9yIHRlc3QgaW5kZXhlcworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBPTjsKK1NF VCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKKworU0VMRUNUICogRlJPTSBzYWxlc19mZWJfbWFy X2FwcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKworU0VUIGVuYWJs ZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9OOworCitBTFRFUiBU QUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIy IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQt MDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIE1lcmdlIHBhcnRpdGlvbnMgKGluY2x1 ZGUgREVGQVVMVCBwYXJ0aXRpb24pIGludG8gcGFydGl0aW9uIHdpdGggdGhlIHNhbWUKKy0t IG5hbWUKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVz X2phbjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX290aGVycykgSU5UTyBzYWxlc19vdGhl cnM7CisKK3NlbGVjdCAqIGZyb20gc2FsZXNfb3RoZXJzOworCistLSBzaG93IHBhcnRpdGlv bnMgd2l0aCBjb25kaXRpb25zOgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNz LCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIo Yy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywg cGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBB TkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcworICBPUkRFUiBCWSBw Z19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVM VCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisKK0RS T1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBjb21w b3NpdGUgcGFydGl0aW9uIGtleTsKKy0tICAgKiBHRU5FUkFURUQgY29sdW1uOworLS0gICAq IGNvbHVtbiB3aXRoIERFRkFVTFQgdmFsdWUuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2Rh dGUgKHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX3llYXIgSU5ULCBzYWxlc19t b250aCBJTlQsIHNhbGVzX2RheSBJTlQsCisgIHNhbGVzX2RhdGUgVkFSQ0hBUigxMCkgR0VO RVJBVEVEIEFMV0FZUyBBUworICAgIChMUEFEKHNhbGVzX3llYXI6OnRleHQsIDQsICcwJykg fHwgJy4nIHx8IExQQUQoc2FsZXNfbW9udGg6OnRleHQsIDIsICcwJykgfHwgJy4nIHx8IExQ QUQoc2FsZXNfZGF5Ojp0ZXh0LCAyLCAnMCcpKSBTVE9SRUQsCisgIHNhbGVzX2RlcGFydG1l bnQgVkFSQ0hBUigzMCkgREVGQVVMVCAnU2FsZXMgZGVwYXJ0bWVudCcpCisgIFBBUlRJVElP TiBCWSBSQU5HRSAoc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSk7CisKK0NS RUFURSBUQUJMRSBzYWxlc19kZWMyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBW QUxVRVMgRlJPTSAoMjAyMSwgMTIsIDEpIFRPICgyMDIyLCAxLCAxKTsKK0NSRUFURSBUQUJM RSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJP TSAoMjAyMiwgMSwgMSkgVE8gKDIwMjIsIDIsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Zl YjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAy LCAxKSBUTyAoMjAyMiwgMywgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXIgUEFSVElU SU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAzLCAxKSBUTyAoTUFY VkFMVUUsIE1BWFZBTFVFLCBNQVhWQUxVRSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUo c2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFM VUVTICgnTWFuYWdlcjEnLCAyMDIxLCAxMiwgNyk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRl KHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZB TFVFUyAoJ01hbmFnZXIyJywgMjAyMSwgMTIsIDgpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0 ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBW QUxVRVMgKCdNYW5hZ2VyMycsIDIwMjIsIDEsIDEpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0 ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBW QUxVRVMgKCdNYW5hZ2VyMScsIDIwMjIsIDIsIDQpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0 ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBW QUxVRVMgKCdNYW5hZ2VyMicsIDIwMjIsIDEsIDIpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0 ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBW QUxVRVMgKCdNYW5hZ2VyMycsIDIwMjIsIDIsIDEpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0 ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBW QUxVRVMgKCdNYW5hZ2VyMScsIDIwMjIsIDMsIDMpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0 ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBW QUxVRVMgKCdNYW5hZ2VyMicsIDIwMjIsIDMsIDQpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0 ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBW QUxVRVMgKCdNYW5hZ2VyMycsIDIwMjIsIDUsIDEpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVz X2RhdGU7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RlYzIwMjI7CitTRUxFQ1QgKiBGUk9NIHNh bGVzX2phbjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjI7CitTRUxFQ1QgKiBG Uk9NIHNhbGVzX290aGVyOworCitBTFRFUiBUQUJMRSBzYWxlc19kYXRlIE1FUkdFIFBBUlRJ VElPTlMgKHNhbGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfamFuX2Zl YjIwMjI7CisKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNf eWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjEnLCAyMDIy LCAxLCAxMCk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVz X3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIyJywgMjAy MiwgMiwgMTApOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RhdGU7CitTRUxFQ1QgKiBGUk9N IHNhbGVzX2RlYzIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbl9mZWIyMDIyOworU0VM RUNUICogRlJPTSBzYWxlc19vdGhlcjsKKworRFJPUCBUQUJMRSBzYWxlc19kYXRlOworCist LQorLS0gVGVzdDogbWVyZ2UgcGFydGl0aW9ucyBvZiBwYXJ0aXRpb25lZCB0YWJsZSB3aXRo IHRyaWdnZXJzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzbWFucyhzYWxlc21hbl9pZCBJTlQg UFJJTUFSWSBLRVksIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBS QU5HRSAoc2FsZXNtYW5faWQpOworCitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zMDFfMTAgUEFS VElUSU9OIE9GIHNhbGVzbWFucyBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVB VEUgVEFCTEUgc2FsZXNtYW5zMTBfMjAgUEFSVElUSU9OIE9GIHNhbGVzbWFucyBGT1IgVkFM VUVTIEZST00gKDEwKSBUTyAoMjApOworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczIwXzMwIFBB UlRJVElPTiBPRiBzYWxlc21hbnMgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKK0NS RUFURSBUQUJMRSBzYWxlc21hbnMzMF80MCBQQVJUSVRJT04gT0Ygc2FsZXNtYW5zIEZPUiBW QUxVRVMgRlJPTSAoMzApIFRPICg0MCk7CisKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxV RVMgKDEsICAnUG9pcm90Jyk7CisKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGFmdGVy X2luc2VydF9yb3dfdHJpZ2dlcigpIFJFVFVSTlMgdHJpZ2dlciBMQU5HVUFHRSAncGxwZ3Nx bCcgQVMgJEJPRFkkCitCRUdJTgorCVJBSVNFIE5PVElDRSAndHJpZ2dlciglKSBjYWxsZWQ6 IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19BUkdWWzBdLCBUR19PUCwg VEdfV0hFTiwgVEdfTEVWRUw7CisgICAgUkVUVVJOIE5VTEw7CitFTkQ7CiskQk9EWSQ7CisK K0NSRUFURSBUUklHR0VSIHNhbGVzbWFuc19hZnRlcl9pbnNlcnRfc3RhdGVtZW50X3RyaWdn ZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc21hbnMKKyAgICBGT1IgRUFDSCBT VEFURU1FTlQKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdn ZXIoJ3NhbGVzbWFucycpOworCitDUkVBVEUgVFJJR0dFUiBzYWxlc21hbnNfYWZ0ZXJfaW5z ZXJ0X3Jvd190cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNtYW5zCisg ICAgRk9SIEVBQ0ggUk9XCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jv d190cmlnZ2VyKCdzYWxlc21hbnMnKTsKKworLS0gMiB0cmlnZ2VycyBzaG91bGQgZmlyZSBo ZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAo MTAsICdNYXknKTsKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5T RVJUIElOVE8gc2FsZXNtYW5zMTBfMjAgVkFMVUVTICgxOSwgJ0l2YW5vdicpOworCitBTFRF UiBUQUJMRSBzYWxlc21hbnMgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNtYW5zMTBfMjAsIHNh bGVzbWFuczIwXzMwLCBzYWxlc21hbnMzMF80MCkgSU5UTyBzYWxlc21hbnMxMF80MDsKKwor LS0gMiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5T RVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMjAsICdTbWlybm9mZicpOworLS0gMSB0cmln Z2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNFUlQgSU5UTyBzYWxlc21hbnMxMF80 MCBWQUxVRVMgKDMwLCAnRm9yZCcpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczAxXzEw OworU0VMRUNUICogRlJPTSBzYWxlc21hbnMxMF80MDsKKworRFJPUCBUQUJMRSBzYWxlc21h bnM7CitEUk9QIEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpOworCistLQor LS0gVGVzdDogbWVyZ2UgcGFydGl0aW9ucyB3aXRoIGRlbGV0ZWQgY29sdW1ucworLS0KK0NS RUFURSBUQUJMRSBzYWxlc21hbnMoc2FsZXNtYW5faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxl c21hbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzbWFuX2lk KTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc21h bnMgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworLS0gQ3JlYXRlIHBhcnRpdGlvbnMg d2l0aCBzb21lIGRlbGV0ZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSBzYWxlc21hbnMxMF8y MChkMSBWQVJDSEFSKDMwKSwgc2FsZXNtYW5faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc21h bl9uYW1lIFZBUkNIQVIoMzApKTsKK0NSRUFURSBUQUJMRSBzYWxlc21hbnMyMF8zMChzYWxl c21hbl9pZCBJTlQgUFJJTUFSWSBLRVksIGQyIElOVCwgIHNhbGVzbWFuX25hbWUgVkFSQ0hB UigzMCkpOworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczMwXzQwKHNhbGVzbWFuX2lkIElOVCBQ UklNQVJZIEtFWSwgZDMgREFURSwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSk7CisKK0lO U0VSVCBJTlRPIHNhbGVzbWFuczEwXzIwIFZBTFVFUyAoJ2R1bW15IHZhbHVlIDEnLCAxOSwg J0l2YW5vdicpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zMjBfMzAgVkFMVUVTICgyMCwgMTAx LCAnU21pcm5vZmYnKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFuczMwXzQwIFZBTFVFUyAoMzEs IG5vdygpLCAnUG9wb3YnKTsKKworQUxURVIgVEFCTEUgc2FsZXNtYW5zMTBfMjAgRFJPUCBD T0xVTU4gZDE7CitBTFRFUiBUQUJMRSBzYWxlc21hbnMyMF8zMCBEUk9QIENPTFVNTiBkMjsK K0FMVEVSIFRBQkxFIHNhbGVzbWFuczMwXzQwIERST1AgQ09MVU1OIGQzOworCitBTFRFUiBU QUJMRSBzYWxlc21hbnMgQVRUQUNIIFBBUlRJVElPTiBzYWxlc21hbnMxMF8yMCBGT1IgVkFM VUVTIEZST00gKDEwKSBUTyAoMjApOworQUxURVIgVEFCTEUgc2FsZXNtYW5zIEFUVEFDSCBQ QVJUSVRJT04gc2FsZXNtYW5zMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsK K0FMVEVSIFRBQkxFIHNhbGVzbWFucyBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzbWFuczMwXzQw IEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCk7CisKK0lOU0VSVCBJTlRPIHNhbGVzbWFu cyBWQUxVRVMgKDEsICdQb2lyb3QnKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxVRVMg KDEwLCAnTWF5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgzMCwgJ0ZvcmQn KTsKKworQUxURVIgVEFCTEUgc2FsZXNtYW5zIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzbWFu czEwXzIwLCBzYWxlc21hbnMyMF8zMCwgc2FsZXNtYW5zMzBfNDApIElOVE8gc2FsZXNtYW5z MTBfNDA7CisKK3NlbGVjdCAqIGZyb20gc2FsZXNtYW5zOworc2VsZWN0ICogZnJvbSBzYWxl c21hbnMwMV8xMDsKK3NlbGVjdCAqIGZyb20gc2FsZXNtYW5zMTBfNDA7CisKK0RST1AgVEFC TEUgc2FsZXNtYW5zOworCistLQorLS0gVGVzdDogbWVyZ2Ugc3ViLXBhcnRpdGlvbnMKKy0t CitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lkIElOVCwgc2FsZXNtYW5f bmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQ QVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ph bjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIy IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAx JykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRP ICgnMjAyMi0wNC0wMScpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiAoc2FsZXNt YW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5U LCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitD UkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMl8wMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNfYXBy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJyk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMl8xMF8yMCBQQVJUSVRJT04gT0Ygc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTEwJykgVE8gKCcyMDIyLTA0LTIw Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMl8yMF8zMCBQQVJUSVRJT04gT0Ygc2Fs ZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTIwJykgVE8gKCcyMDIyLTA1 LTAxJyk7CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVz X2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0w MScpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBERUZBVUxUOworCitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9p ZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworCitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0w MS0zMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgyLCAgJ1NtaXJub2Zm JywgNTAwLCAgJzIwMjItMDItMTAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg1LCAgJ0RlZXYnLCAgICAgMjUw LCAgJzIwMjItMDQtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNiwg ICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIw MjItMDItMjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOSwgICdNdWxs ZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQt MDYnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTIsICdQbGF0bycsICAg IDM1MCwgICcyMDIyLTAzLTE5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsK KworU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXBy MjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8wMV8xMDsKK1NFTEVDVCAqIEZS T00gc2FsZXNfYXByMjAyMl8xMF8yMDsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8y MF8zMDsKKworQUxURVIgVEFCTEUgc2FsZXNfYXByMjAyMiBNRVJHRSBQQVJUSVRJT05TIChz YWxlc19hcHIyMDIyXzAxXzEwLCBzYWxlc19hcHIyMDIyXzEwXzIwLCBzYWxlc19hcHIyMDIy XzIwXzMwKSBJTlRPIHNhbGVzX2Fwcl9hbGw7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFu Z2U7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVz X2Fwcl9hbGw7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBCWSBMSVNU IHBhcnRpdGlvbmluZworLS0KKworLS0KKy0tIFRlc3Q6IHNwZWNpZmljIGVycm9ycyBmb3Ig QlkgTElTVCBwYXJ0aXRpb25pbmcKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNh bGVzbWFuX2lkIElOVCBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZLAorIHNhbGVzbWFu X25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNf YW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2Fs ZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9GIHNhbGVz X2xpc3QgRk9SIFZBTFVFUyBJTiAoJ011cm1hbnNrJywgJ1N0LiBQZXRlcnNidXJnJywgJ1Vr aHRhJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfd2VzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlz dCBGT1IgVkFMVUVTIElOICgnVm9yb25lemgnLCAnU21vbGVuc2snLCAnQnJ5YW5zaycpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2Vhc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZB TFVFUyBJTiAoJ01hZ2FkYW4nLCAnS2hhYmFyb3ZzaycsICdWbGFkaXZvc3RvaycpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2NlbnRyYWwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZB TFVFUyBJTiAoJ01vc2NvdycsICdLYXphbicsICdWb2xnb2dyYWQnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgREVGQVVMVDsKKworCitD UkVBVEUgVEFCTEUgc2FsZXNfbGlzdDIgKExJS0Ugc2FsZXNfbGlzdCkgUEFSVElUSU9OIEJZ IExJU1QgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkMiBQQVJUSVRJ T04gT0Ygc2FsZXNfbGlzdDIgRk9SIFZBTFVFUyBJTiAoJ011cm1hbnNrJywgJ1N0LiBQZXRl cnNidXJnJywgJ1VraHRhJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzMiBQQVJUSVRJ T04gT0Ygc2FsZXNfbGlzdDIgREVGQVVMVDsKKworCitDUkVBVEUgVEFCTEUgc2FsZXNfZXh0 ZXJuYWwgKExJS0Ugc2FsZXNfbGlzdCk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZXh0ZXJuYWwy ICh2Y2ggVkFSQ0hBUig1KSk7CisKKy0tIEVSUk9SOiAgcGFydGl0aW9uIGJvdW5kIGZvciBy ZWxhdGlvbiAic2FsZXNfZXh0ZXJuYWwiIGlzIG51bGwKK0FMVEVSIFRBQkxFIHNhbGVzX2xp c3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfZWFzdCwgc2FsZXNfZXh0 ZXJuYWwpIElOVE8gc2FsZXNfYWxsOworLS0gRVJST1I6ICBwYXJ0aXRpb24gYm91bmQgZm9y IHJlbGF0aW9uICJzYWxlc19leHRlcm5hbDIiIGlzIG51bGwKK0FMVEVSIFRBQkxFIHNhbGVz X2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfZWFzdCwgc2FsZXNf ZXh0ZXJuYWwyKSBJTlRPIHNhbGVzX2FsbDsKKy0tIEVSUk9SOiAgcmVsYXRpb24gInNhbGVz X25vcmQyIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInNhbGVzX2xpc3QiCitB TFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNh bGVzX25vcmQyLCBzYWxlc19lYXN0KSBJTlRPIHNhbGVzX2FsbDsKKworRFJPUCBUQUJMRSBz YWxlc19leHRlcm5hbDI7CitEUk9QIFRBQkxFIHNhbGVzX2V4dGVybmFsOworRFJPUCBUQUJM RSBzYWxlc19saXN0MjsKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKworLS0KKy0tIFRlc3Q6 IEJZIExJU1QgcGFydGl0aW9uaW5nLCBNRVJHRSBQQVJUSVRJT05TIHdpdGggZGF0YQorLS0K K0NSRUFURSBUQUJMRSBzYWxlc19saXN0Cisoc2FsZXNtYW5faWQgSU5UIEdFTkVSQVRFRCBB TFdBWVMgQVMgSURFTlRJVFksCisgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxl c19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUg REFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CisKK0NSRUFURSBJTkRF WCBzYWxlc19saXN0X3NhbGVzbWFuX25hbWVfaWR4IE9OIHNhbGVzX2xpc3QgVVNJTkcgYnRy ZWUgKHNhbGVzbWFuX25hbWUpOworQ1JFQVRFIElOREVYIHNhbGVzX2xpc3Rfc2FsZXNfc3Rh dGVfaWR4IE9OIHNhbGVzX2xpc3QgVVNJTkcgYnRyZWUgKHNhbGVzX3N0YXRlKTsKKworQ1JF QVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVF UyBJTiAoJ011cm1hbnNrJywgJ1N0LiBQZXRlcnNidXJnJywgJ1VraHRhJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfd2VzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElO ICgnVm9yb25lemgnLCAnU21vbGVuc2snLCAnQnJ5YW5zaycpOworQ1JFQVRFIFRBQkxFIHNh bGVzX2Vhc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ01hZ2Fk YW4nLCAnS2hhYmFyb3ZzaycsICdWbGFkaXZvc3RvaycpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2NlbnRyYWwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ01vc2Nv dycsICdLYXphbicsICdWb2xnb2dyYWQnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMg UEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgREVGQVVMVDsKKworSU5TRVJUIElOVE8gc2FsZXNf bGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNf ZGF0ZSkgVkFMVUVTICgnVHJ1bXAnLCAgICAnTWFnYWRhbicsICAgICAgICAxMDAwLCAnMjAy Mi0wMy0wMScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2Fs ZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnU21pcm5vZmYn LCAnU21vbGVuc2snLCAgICAgICA1MDAsICAnMjAyMi0wMy0wMycpOworSU5TRVJUIElOVE8g c2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwg c2FsZXNfZGF0ZSkgVkFMVUVTICgnRm9yZCcsICAgICAnU3QuIFBldGVyc2J1cmcnLCAyMDAw LCAnMjAyMi0wMy0wNScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFt ZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnSXZh bm92JywgICAnTW9zY293JywgICAgICAgICA3NTAsICAnMjAyMi0wMy0wNCcpOworSU5TRVJU IElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ft b3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnRGVldicsICAgICAnVm9yb25lemgnLCAgICAg ICAyNTAsICAnMjAyMi0wMy0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNt YW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVT ICgnUG9pcm90JywgICAnS2F6YW4nLCAgICAgICAgICAxMDAwLCAnMjAyMi0wMy0wMScpOwor SU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNh bGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnTWF5JywgICAgICAnVWtodGEnLCAg ICAgICAgICAxMjAwLCAnMjAyMi0wMy0wNicpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAo c2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkg VkFMVUVTICgnTGknLCAgICAgICAnVmxhZGl2b3N0b2snLCAgICAxMTUwLCAnMjAyMi0wMy0w OScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3Rh dGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnTWF5JywgICAgICAnVWto dGEnLCAgICAgICAgICAxMjAwLCAnMjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNf bGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNf ZGF0ZSkgVkFMVUVTICgnSGFsZGVyJywgICAnTXVybWFuc2snLCAgICAgICA4MDAsICAnMjAy Mi0wMy0wMicpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2Fs ZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnTXVsbGVyJywg ICAnQnJ5YW5zaycsICAgICAgICA2NTAsICAnMjAyMi0wMy0wNScpOworSU5TRVJUIElOVE8g c2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwg c2FsZXNfZGF0ZSkgVkFMVUVTICgnU21pdGgnLCAgICAnVm9sZ29ncmFkJywgICAgICAzNTAs ICAnMjAyMi0wMy0xMCcpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFt ZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnR2Fu ZGknLCAgICAnTW9zY293JywgICAgICAgICAxNTAsICAnMjAyMi0wMy0wOCcpOworSU5TRVJU IElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ft b3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnUGxhdG8nLCAgICAnVm9yb25lemgnLCAgICAg ICA5NTAsICAnMjAyMi0wMy0wNScpOworCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25k aXRpb25zOgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQs IGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91 bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5w Z19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJl bnQgPSAnc2FsZXNfbGlzdCc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdf Z2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBn X2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKworQUxURVIgVEFCTEUgc2Fs ZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19lYXN0LCBzYWxl c19jZW50cmFsKSBJTlRPIHNhbGVzX2FsbDsKKworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGgg Y29uZGl0aW9uczoKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxr aW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFy dGJvdW5kLCBjLm9pZCkKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFs b2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5o cGFyZW50ID0gJ3NhbGVzX2xpc3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9n LnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lk OjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisKK1NFTEVDVCAqIEZS T00gc2FsZXNfbGlzdDsKK1NFTEVDVCAqIEZST00gc2FsZXNfbm9yZDsKK1NFTEVDVCAqIEZS T00gc2FsZXNfYWxsOworCistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0IGluZGV4ZXMgYWZ0 ZXIgbWVyZ2UgcGFydGl0aW9ucworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBl bmFibGVfc2Vxc2NhbiA9IE9GRjsKKworU0VMRUNUICogRlJPTSBzYWxlc19hbGwgV0hFUkUg c2FsZXNfc3RhdGUgPSAnTW9zY293JzsKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVS RSBzYWxlc19zdGF0ZSA9ICdNb3Njb3cnOworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdI RVJFIHNhbGVzbWFuX25hbWUgPSAnSXZhbm92JzsKKworU0VUIGVuYWJsZV9pbmRleHNjYW4g PSBPTjsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9OOworCitEUk9QIFRBQkxFIHNhbGVzX2xp c3Q7CisKKy0tCitEUk9QIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43NTE3M2UyNzUyYQotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwKQEAgLTAsMCArMSw4 MzkgQEAKKy0tCistLSBQQVJUSVRJT05fU1BMSVQKKy0tIFRlc3RzIGZvciAiQUxURVIgVEFC TEUgLi4uIFNQTElUIFBBUlRJVElPTiAuLi4iIGNvbW1hbmQKKy0tCisKK0NSRUFURSBTQ0hF TUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlv bl9zcGxpdF9zY2hlbWEsIHB1YmxpYzsKKworLS0KKy0tIEJZIFJBTkdFIHBhcnRpdGlvbmlu ZworLS0KKworLS0KKy0tIFRlc3QgZm9yIGVycm9yIGNvZGVzCistLQorQ1JFQVRFIFRBQkxF IHNhbGVzX3JhbmdlIChzYWxlc21hbl9pZCBpbnQsIHNhbGVzbWFuX25hbWUgdmFyY2hhcigz MCksIHNhbGVzX2Ftb3VudCBpbnQsIHNhbGVzX2RhdGUgZGF0ZSkgUEFSVElUSU9OIEJZIFJB TkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcy MDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJ VElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8g KCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBERUZBVUxUOworCistLSBFUlJPUjogIHJlbGF0aW9uICJzYWxlc194 eHgiIGRvZXMgbm90IGV4aXN0CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJU SVRJT04gc2FsZXNfeHh4IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAo JzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9SOiAg cmVsYXRpb24gInNhbGVzX2phbjIwMjIiIGFscmVhZHkgZXhpc3RzCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDIt MDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBU TyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9SOiAgaW52YWxpZCBib3VuZCBzcGVjaWZp Y2F0aW9uIGZvciBhIHJhbmdlIHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2Ug U1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIElOICgnMjAyMi0wNS0wMScsICcyMDIyLTA2 LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXBy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykp OworCistLSBFUlJPUjogIGVtcHR5IHJhbmdlIGJvdW5kIHNwZWNpZmllZCBmb3IgcGFydGl0 aW9uICJzYWxlc19tYXIyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFS VElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNf ZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAzLTAxJykgVE8gKCcyMDIyLTAyLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOwor CistLUVSUk9SOiAgbGlzdCBvZiBzcGxpdHRlZCBwYXJ0aXRpb25zIHNob3VsZCBjb250YWlu cyBhdCBsZWFzdCB0d28gaXRlbXMKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBB UlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVz X2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0xMC0w MScpKTsKKworLS0gRVJST1I6ICBib3VuZHMgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIy IiBhcmUgb3V0c2lkZSBib3VuZHMgb2Ygc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEt MDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBU TyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9SOiAgbmFtZSAic2FsZXNfZmViX21hcl9h cHIyMDIyIiBhbHJlYWR5IHVzZWQKKy0tIChXZSBjYW4gY3JlYXRlIHBhcnRpdGlvbiB3aXRo IHRoZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uLCBidXQgY2FuJ3QgY3JlYXRlIHR3 byBwYXJ0aXRpb25zIHdpdGggdGhlIHNhbWUgbmFtZSkKK0FMVEVSIFRBQkxFIHNhbGVzX3Jh bmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFS VElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAy LTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9h cHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9SOiAgbmFtZSAic2FsZXNf ZmViMjAyMiIgYWxyZWFkeSB1c2VkCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQ QVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7 CisKKy0tIEVSUk9SOiAgInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIgaXMgbm90IGEgcGFydGl0 aW9uZWQgdGFibGUKK0FMVEVSIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBTUExJVCBQ QVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7 CisKKy0tIEVSUk9SOiAgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19hcHIyMDIy IiBpcyBub3QgZXF1YWxzIHRvIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXBy MjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf bWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTA0LTAxJykgVE8gKCcyMDIyLTA2LTAxJykpOworCistLSBFUlJPUjogIG5ldyBwYXJ0aXRp b24gInNhbGVzX2ZlYjIwMjIiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIChub3Qgc3Bs aXQpIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3Jhbmdl IFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElU SU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgn MjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNh bGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0w NS0wMScpKTsKKworLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVz X21hcjIwMjIiIGlzIG5vdCBlcXVhbHMgdG8gdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFy dGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNf ZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAo JzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIFRlc3RzIGZv ciBzcGFjZXMgYmV0d2VlbiBwYXJ0aXRpb25zLCB0aGVtIHNob3VsZCBiZSBleGVjdXRlZCB3 aXRob3V0IERFRkFVTFQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBERVRB Q0ggUEFSVElUSU9OIHNhbGVzX290aGVyczsKKworLS0gRVJST1I6ICBsb3dlciBib3VuZCBv ZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIG5vdCBlcXVhbHMgdG8gbG93ZXIgYm91 bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQ QVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDInKSBUTyAoJzIwMjItMDMt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7 CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CitEUk9QIFRBQkxFIHNhbGVzX290aGVyczsK KworLS0KKy0tIEFkZCByb3dzIGludG8gcGFydGl0aW9uZWQgdGFibGUgdGhlbiBzcGxpdCBw YXJ0aXRpb24KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lkIElO VCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNf ZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBz YWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgICdNYXknLCAgICAgIDEwMDAsICcy MDIyLTAxLTMxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDIsICAnU21p cm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0 LTEzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDUsICAnRGVldicsICAg ICAyNTAsICAnMjAyMi0wNC0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT ICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDgsICAnRXJpY3Nzb24nLCAxODUs ICAnMjAyMi0wMi0yMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg5LCAg J011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAy Mi0wNC0wNicpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMiwgJ1BsYXRv JywgICAgMzUwLCAgJzIwMjItMDMtMTknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0w NCcpOworCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNf ZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAo JzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKK1NFTEVDVCAqIEZS T00gc2FsZXNfcmFuZ2U7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjI7CitTRUxFQ1Qg KiBGUk9NIHNhbGVzX2ZlYjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX21hcjIwMjI7CitT RUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVy czsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworCistLQorLS0gQWRkIHNw bGl0IHBhcnRpdGlvbiB0aGVuIGFkZCByb3dzIGludG8gcGFydGl0aW9uZWQgdGFibGUKKy0t CitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lkIElOVCwgc2FsZXNtYW5f bmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQ QVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ph bjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFy X2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhl cnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0w MScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFS VElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRP ICgnMjAyMi0wNS0wMScpKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgx LCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDMsICAnRm9yZCcsICAgICAyMDAwLCAn MjAyMi0wNC0zMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg0LCAgJ0l2 YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3Jyk7CitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0w Mi0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg3LCAgJ0xpJywgICAg ICAgMTc1LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMCwgJ0hhbGRlcicsICAgMzUw LCAgJzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTEs ICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIw MjItMDEtMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0 aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFu Z2U7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVz X2ZlYjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX21hcjIwMjI7CitTRUxFQ1QgKiBGUk9N IHNhbGVzX2FwcjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyczsKKworRFJPUCBU QUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworCistLQorLS0gVGVzdCBmb3I6CistLSAgICog Y29tcG9zaXRlIHBhcnRpdGlvbiBrZXk7CistLSAgICogR0VORVJBVEVEIGNvbHVtbjsKKy0t ICAgKiBjb2x1bW4gd2l0aCBERUZBVUxUIHZhbHVlLgorLS0KK0NSRUFURSBUQUJMRSBzYWxl c19kYXRlIChzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc195ZWFyIElOVCwgc2Fs ZXNfbW9udGggSU5ULCBzYWxlc19kYXkgSU5ULAorICBzYWxlc19kYXRlIFZBUkNIQVIoMTAp IEdFTkVSQVRFRCBBTFdBWVMgQVMKKyAgICAoTFBBRChzYWxlc195ZWFyOjp0ZXh0LCA0LCAn MCcpIHx8ICcuJyB8fCBMUEFEKHNhbGVzX21vbnRoOjp0ZXh0LCAyLCAnMCcpIHx8ICcuJyB8 fCBMUEFEKHNhbGVzX2RheTo6dGV4dCwgMiwgJzAnKSkgU1RPUkVELAorICBzYWxlc19kZXBh cnRtZW50IFZBUkNIQVIoMzApIERFRkFVTFQgJ1NhbGVzIGRlcGFydG1lbnQnKQorICBQQVJU SVRJT04gQlkgUkFOR0UgKHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpOwor CitDUkVBVEUgVEFCTEUgc2FsZXNfZGVjMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBG T1IgVkFMVUVTIEZST00gKDIwMjEsIDEyLCAxKSBUTyAoMjAyMiwgMSwgMSk7CitDUkVBVEUg VEFCTEUgc2FsZXNfamFuX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZB TFVFUyBGUk9NICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwgMywgMSk7CitDUkVBVEUgVEFCTEUg c2FsZXNfb3RoZXIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgy MDIyLCAzLCAxKSBUTyAoTUFYVkFMVUUsIE1BWFZBTFVFLCBNQVhWQUxVRSk7CisKK0lOU0VS VCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9u dGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjEnLCAyMDIxLCAxMiwgNyk7CitJTlNF UlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21v bnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIyJywgMjAyMSwgMTIsIDgpOworSU5T RVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19t b250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMycsIDIwMjIsIDEsIDEpOworSU5T RVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19t b250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMScsIDIwMjIsIDIsIDQpOworSU5T RVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19t b250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMicsIDIwMjIsIDEsIDIpOworSU5T RVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19t b250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMycsIDIwMjIsIDIsIDEpOworSU5T RVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19t b250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMScsIDIwMjIsIDMsIDMpOworSU5T RVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19t b250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMicsIDIwMjIsIDMsIDQpOworSU5T RVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19t b250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMycsIDIwMjIsIDUsIDEpOworCitT RUxFQ1QgKiBGUk9NIHNhbGVzX2RhdGU7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RlYzIwMjI7 CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbl9mZWIyMDIyOworU0VMRUNUICogRlJPTSBzYWxl c19vdGhlcjsKKworQUxURVIgVEFCTEUgc2FsZXNfZGF0ZSBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfamFuX2ZlYjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZB TFVFUyBGUk9NICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwgMiwgMSksCisgICBQQVJUSVRJT04g c2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDIsIDEpIFRPICgyMDIyLCAz LCAxKSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNf eWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjEnLCAyMDIy LCAxLCAxMCk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVz X3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIyJywgMjAy MiwgMiwgMTApOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RhdGU7CitTRUxFQ1QgKiBGUk9N IHNhbGVzX2RlYzIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjI7CitTRUxFQ1Qg KiBGUk9NIHNhbGVzX2ZlYjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyOworCist LUVSUk9SOiAgcmVsYXRpb24gInNhbGVzX2phbl9mZWIyMDIyIiBkb2VzIG5vdCBleGlzdAor U0VMRUNUICogRlJPTSBzYWxlc19qYW5fZmViMjAyMjsKKworRFJPUCBUQUJMRSBzYWxlc19k YXRlIENBU0NBREU7CisKKy0tCistLSBUZXN0OiBzcGxpdCBERUZBVUxUIHBhcnRpdGlvbjsg dXNpbmcgYSBpbmRleCBvbiBwYXJ0aXRpb24ga2V5OyBjaGVjayBpbmRleCBhZnRlciBzcGxp dAorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNtYW5faWQgSU5ULCBzYWxl c21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERB VEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290 aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0NSRUFURSBJTkRFWCBz YWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lORyBidHJlZSAo c2FsZXNfZGF0ZSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgICdN YXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjIt MDQtMzAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNCwgICdJdmFub3Yn LCAgIDc1MCwgICcyMDIyLTA0LTEzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpOworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNywgICdMaScsICAgICAgIDE3 NSwgICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDgs ICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpOworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKTsKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcy MDIyLTAxLTI4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDExLCAnVHJ1 bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAx LTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDE0LCAnU21pdGgnLCAg ICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyczsK K1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfb3Ro ZXJzJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJzsKKworQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAy LTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykg VE8gKCcyMDIyLTA1LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQp OworCistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0IGluZGV4ZXMKK1NFVCBlbmFibGVfaW5k ZXhzY2FuID0gT047CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CisKK1NFTEVDVCAqIEZS T00gc2FsZXNfZmViMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworU0VM RUNUICogRlJPTSBzYWxlc19tYXIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0w MSc7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcy MDIyLTAxLTAxJzsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzIHdoZXJlIHNhbGVzX2Rh dGUgPiAnMjAyMi0wMS0wMSc7CisKK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gT047CitTRVQg ZW5hYmxlX3NlcXNjYW4gPSBPTjsKKworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJF IHRhYmxlbmFtZSA9ICdzYWxlc19mZWIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRp b25fc3BsaXRfc2NoZW1hJzsKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJs ZW5hbWUgPSAnc2FsZXNfbWFyMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3Nw bGl0X3NjaGVtYSc7CitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1l ID0gJ3NhbGVzX2FwcjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9z Y2hlbWEnOworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdz YWxlc19vdGhlcnMnIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEn OworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CisKKy0tCistLSBUZXN0OiBz b21lIGNhc2VzIGZvciBzcGxpdCBERUZBVUxUIHBhcnRpdGlvbiAoZGlmZmVyZW50IGJvdW5k cykKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lkIElOVCwgc2Fs ZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBJ TlQpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCistLSBzYWxl c19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZGVjMjAyMiAobG93ZXIgYm91bmQpCist LSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIGNvbmZs aWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZGVj MjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19v dGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIgRk9SIFZBTFVFUyBGUk9N ICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBG T1IgVkFMVUVTIEZST00gKDIwMjExMjMwKSBUTyAoMjAyMjAyMDEpLAorICAgUEFSVElUSU9O IHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAx KSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CisKKy0tIHNhbGVzX2Vy cm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19mZWIyMDIyICh1cHBlciBib3VuZCkKKy0tIEVS Uk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBjb25mbGlj dHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBwYXJ0aXRpb24gInNhbGVzX2Vycm9y IgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVy cyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIw MjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBW QUxVRVMgRlJPTSAoMjAyMjAxMDEpIFRPICgyMDIyMDIwMiksCisgICBQQVJUSVRJT04gc2Fs ZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAor ICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworLS0gc2FsZXNfZXJyb3Ig aW50ZXJzZWN0cyB3aXRoIHNhbGVzX2RlYzIwMjIgKGluc2lkZSBib3VuZCkKKy0tIEVSUk9S OiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJvciIgY29uZmxpY3RzIHdp dGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9uICJzYWxlc19kZWMyMDIyIgor QUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJ TlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjEx MjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxV RVMgRlJPTSAoMjAyMTEyMTApIFRPICgyMDIxMTIyMCksCisgICBQQVJUSVRJT04gc2FsZXNf ZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAg UEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworLS0gc2FsZXNfZXJyb3IgaW50 ZXJzZWN0cyB3aXRoIHNhbGVzX2RlYzIwMjIgKGV4YWN0IHRoZSBzYW1lIGJvdW5kcykKKy0t IEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJvciIgY29uZmxp Y3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9uICJzYWxlc19kZWMy MDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290 aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00g KDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZP UiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04g c2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEp LAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworLS0gRVJST1I6ICBh bnkgcGFydGl0aW9uIGluIHRoZSBsaXN0IHNob3VsZCBiZSBERUZBVUxUIGJlY2F1c2Ugc3Bs aXQgcGFydGl0aW9uIGlzIERFRkFVTFQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElU IFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIw MjIgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAxMDEpIFRPICgyMDIy MDIwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIw MjIwMjAxKSBUTyAoMjAyMjAzMDEpKTsKKworLS0gbm8gZXJyb3I6IGJvdW5kcyBvZiBzYWxl c19ub2Vycm9yIGJldHdlZW4gc2FsZXNfZGVjMjAyMiBhbmQgc2FsZXNfZmViMjAyMgorQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAx KSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX25vZXJyb3IgRk9SIFZBTFVF UyBGUk9NICgyMDIyMDExMCkgVE8gKDIwMjIwMTIwKSwKKyAgIFBBUlRJVElPTiBzYWxlc19m ZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQ QVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCitEUk9QIFRBQkxFIHNhbGVzX3Jh bmdlOworCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lkIElOVCwgc2Fs ZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBJ TlQpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCistLSBubyBl cnJvcjogYm91bmRzIG9mIHNhbGVzX25vZXJyb3IgZXF1YWxzIHRvIGxvd2VyIGFuZCB1cHBl ciBib3VuZHMgb2Ygc2FsZXNfZGVjMjAyMiBhbmQgc2FsZXNfZmViMjAyMgorQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQ QVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAo MjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX25vZXJyb3IgRk9SIFZBTFVFUyBGUk9N ICgyMDIxMDEwMSkgVE8gKDIwMjEwMjAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJ T04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOwor CistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIHdpdGggQ0hFQ0sgYW5kIEZPUkVJR04g S0VZIENPTlNUUkFJTlRzIG9uIHBhcnRpdGlvbmVkIHRhYmxlCistLQorQ1JFQVRFIFRBQkxF IHNhbGVzbWFucyhzYWxlc21hbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzbWFuX25hbWUg VkFSQ0hBUigzMCkpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMSwgICdQb2ly b3QnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlICgKK3NhbGVzbWFuX2lkIElOVCBS RUZFUkVOQ0VTIHNhbGVzbWFucyhzYWxlc21hbl9pZCksCitzYWxlc19hbW91bnQgSU5UIENI RUNLIChzYWxlc19hbW91bnQgPiAxKSwKK3NhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZ IFJBTkdFIChzYWxlc19kYXRlKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBU TyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIg UEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEn KSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElU SU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWlu dGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNv bnJlbGlkID0gJ3NhbGVzX2ZlYl9tYXJfYXByMjAyMic6OnJlZ2NsYXNzOjpvaWQ7CisKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2Fw cjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVz X21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0w MScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0gV2Ugc2hvdWxkIHNlZSB0aGUg c2FtZSBDT05TVFJBSU5UcyBhcyBvbiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgcGFydGl0aW9u CitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5IEZS T00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19mZWIyMDIyJzo6cmVn Y2xhc3M6Om9pZDsKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpLCBjb25uYW1l LCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVzX21h cjIwMjInOjpyZWdjbGFzczo6b2lkOworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9p ZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQg PSAnc2FsZXNfYXByMjAyMic6OnJlZ2NsYXNzOjpvaWQ7CisKKy0tIEVSUk9SOiAgbmV3IHJv dyBmb3IgcmVsYXRpb24gInNhbGVzX21hcjIwMjIiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFp bnQgInNhbGVzX3JhbmdlX3NhbGVzbWFuX2lkX2NoZWNrIgorSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICgxLCAwLCAnMjAyMi0wMy0xMScpOworLS0gRVJST1I6ICBpbnNlcnQg b3IgdXBkYXRlIG9uIHRhYmxlICJzYWxlc19tYXIyMDIyIiB2aW9sYXRlcyBmb3JlaWduIGtl eSBjb25zdHJhaW50ICJzYWxlc19yYW5nZV9zYWxlc21hbl9pZF9ma2V5IgorSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgtMSwgMTAsICcyMDIyLTAzLTExJyk7CistLSBvawor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAxMCwgJzIwMjItMDMtMTEnKTsK KworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworRFJPUCBUQUJMRSBzYWxlc21h bnMgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiBvbiBwYXJ0aXRp b25lZCB0YWJsZSBpbiBjYXNlIGV4aXN0cyBGT1JFSUdOIEtFWSByZWZlcmVuY2UgZnJvbSBh bm90aGVyIHRhYmxlCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzbWFucyhzYWxlc21hbl9pZCBJ TlQgUFJJTUFSWSBLRVksIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBC WSBSQU5HRSAoc2FsZXNtYW5faWQpOworQ1JFQVRFIFRBQkxFIHNhbGVzIChzYWxlc21hbl9p ZCBJTlQgUkVGRVJFTkNFUyBzYWxlc21hbnMoc2FsZXNtYW5faWQpLCBzYWxlc19hbW91bnQg SU5ULCBzYWxlc19kYXRlIERBVEUpOworCitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zMDFfMTAg UEFSVElUSU9OIE9GIHNhbGVzbWFucyBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitD UkVBVEUgVEFCTEUgc2FsZXNtYW5zMTBfNDAgUEFSVElUSU9OIE9GIHNhbGVzbWFucyBGT1Ig VkFMVUVTIEZST00gKDEwKSBUTyAoNDApOworCitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFM VUVTICgxLCAgJ1BvaXJvdCcpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMTAs ICdNYXknKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxVRVMgKDE5LCAnSXZhbm92Jyk7 CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgyMCwgJ1NtaXJub2ZmJyk7CitJTlNF UlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgzMCwgJ0ZvcmQnKTsKKworSU5TRVJUIElOVE8g c2FsZXMgVkFMVUVTICgxLCAgMTAwLCAnMjAyMi0wMy0wMScpOworSU5TRVJUIElOVE8gc2Fs ZXMgVkFMVUVTICgxLCAgMTEwLCAnMjAyMi0wMy0wMicpOworSU5TRVJUIElOVE8gc2FsZXMg VkFMVUVTICgxMCwgMTUwLCAnMjAyMi0wMy0wMScpOworSU5TRVJUIElOVE8gc2FsZXMgVkFM VUVTICgxMCwgOTAsICAnMjAyMi0wMy0wMycpOworSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVT ICgxOSwgMjAwLCAnMjAyMi0wMy0wNCcpOworSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTICgy MCwgNTAsICAnMjAyMi0wMy0xMicpOworSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTICgyMCwg MTcwLCAnMjAyMi0wMy0wMicpOworSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTICgzMCwgMzAs ICAnMjAyMi0wMy0wNCcpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczAxXzEwOworU0VM RUNUICogRlJPTSBzYWxlc21hbnMxMF80MDsKKworQUxURVIgVEFCTEUgc2FsZXNtYW5zIFNQ TElUIFBBUlRJVElPTiBzYWxlc21hbnMxMF80MCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNt YW5zMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKSwKKyAgIFBBUlRJVElPTiBz YWxlc21hbnMyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApLAorICAgUEFSVElU SU9OIHNhbGVzbWFuczMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCkpOworCitT RUxFQ1QgKiBGUk9NIHNhbGVzbWFuczAxXzEwOworU0VMRUNUICogRlJPTSBzYWxlc21hbnMx MF8yMDsKK1NFTEVDVCAqIEZST00gc2FsZXNtYW5zMjBfMzA7CitTRUxFQ1QgKiBGUk9NIHNh bGVzbWFuczMwXzQwOworCistLSBFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUg InNhbGVzIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJzYWxlc19zYWxlc21h bl9pZF9ma2V5IgorSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTICg0MCwgNTAsICAnMjAyMi0w My0wNCcpOworLS0gb2sKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoMzAsIDUwLCAgJzIw MjItMDMtMDQnKTsKKworRFJPUCBUQUJMRSBzYWxlcyBDQVNDQURFOworRFJPUCBUQUJMRSBz YWxlc21hbnMgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiBvZiBw YXJ0aXRpb25lZCB0YWJsZSB3aXRoIHRyaWdnZXJzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVz bWFucyhzYWxlc21hbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzbWFuX25hbWUgVkFSQ0hB UigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNtYW5faWQpOworCitDUkVBVEUgVEFC TEUgc2FsZXNtYW5zMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzbWFucyBGT1IgVkFMVUVTIEZS T00gKDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zMTBfNDAgUEFSVElUSU9O IE9GIHNhbGVzbWFucyBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoNDApOworCitJTlNFUlQg SU5UTyBzYWxlc21hbnMgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOworCitDUkVBVEUgT1IgUkVQ TEFDRSBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKSBSRVRVUk5TIHRyaWdn ZXIgTEFOR1VBR0UgJ3BscGdzcWwnIEFTICRCT0RZJAorQkVHSU4KKwlSQUlTRSBOT1RJQ0Ug J3RyaWdnZXIoJSkgY2FsbGVkOiBhY3Rpb24gPSAlLCB3aGVuID0gJSwgbGV2ZWwgPSAlJywg VEdfQVJHVlswXSwgVEdfT1AsIFRHX1dIRU4sIFRHX0xFVkVMOworICAgIFJFVFVSTiBOVUxM OworRU5EOworJEJPRFkkOworCitDUkVBVEUgVFJJR0dFUiBzYWxlc21hbnNfYWZ0ZXJfaW5z ZXJ0X3N0YXRlbWVudF90cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNt YW5zCisgICAgRk9SIEVBQ0ggU1RBVEVNRU5UCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0 ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc21hbnMnKTsKKworQ1JFQVRFIFRSSUdHRVIg c2FsZXNtYW5zX2FmdGVyX2luc2VydF9yb3dfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VSVAor ICAgIE9OIHNhbGVzbWFucworICAgIEZPUiBFQUNIIFJPVworICAgIEVYRUNVVEUgUFJPQ0VE VVJFIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcignc2FsZXNtYW5zJyk7CisKKy0tIDIgdHJp Z2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAocm93ICsgc3RhdGVtZW50KToKK0lOU0VSVCBJTlRP IHNhbGVzbWFucyBWQUxVRVMgKDEwLCAnTWF5Jyk7CistLSAxIHRyaWdnZXIgc2hvdWxkIGZp cmUgaGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVzbWFuczEwXzQwIFZBTFVFUyAoMTks ICdJdmFub3YnKTsKKworQUxURVIgVEFCTEUgc2FsZXNtYW5zIFNQTElUIFBBUlRJVElPTiBz YWxlc21hbnMxMF80MCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNtYW5zMTBfMjAgRk9SIFZB TFVFUyBGUk9NICgxMCkgVE8gKDIwKSwKKyAgIFBBUlRJVElPTiBzYWxlc21hbnMyMF8zMCBG T1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApLAorICAgUEFSVElUSU9OIHNhbGVzbWFuczMw XzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCkpOworCistLSAyIHRyaWdnZXJzIHNo b3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc21h bnMgVkFMVUVTICgyMCwgJ1NtaXJub2ZmJyk7CistLSAxIHRyaWdnZXIgc2hvdWxkIGZpcmUg aGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVzbWFuczMwXzQwIFZBTFVFUyAoMzAsICdG b3JkJyk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNtYW5zMDFfMTA7CitTRUxFQ1QgKiBGUk9N IHNhbGVzbWFuczEwXzIwOworU0VMRUNUICogRlJPTSBzYWxlc21hbnMyMF8zMDsKK1NFTEVD VCAqIEZST00gc2FsZXNtYW5zMzBfNDA7CisKK0RST1AgVEFCTEUgc2FsZXNtYW5zIENBU0NB REU7CitEUk9QIEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpOworCistLQor LS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIHdpdGNoIGlkZW50aXR5IGNvbHVtbgorLS0gSWYg c3BsaXQgcGFydGl0aW9uIGNvbHVtbiBpcyBpZGVudGl0eS1jb2x1bW4sIGNvbHVtbnMgb2Yg bmV3IHBhcnRpdGlvbnMgYXJlIGlkZW50aXR5LWNvbHVtbnMgdG9vLgorLS0KK0NSRUFURSBU QUJMRSBzYWxlc21hbnMoc2FsZXNtYW5faWQgSU5UIEdFTkVSQVRFRCBBTFdBWVMgQVMgSURF TlRJVFkgUFJJTUFSWSBLRVksIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElP TiBCWSBSQU5HRSAoc2FsZXNtYW5faWQpOworCitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zMV8y IFBBUlRJVElPTiBPRiBzYWxlc21hbnMgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7Cist LSBDcmVhdGUgbmV3IHBhcnRpdGlvbiB3aXRoIGlkZW50aXR5LWNvbHVtbjoKK0NSRUFURSBU QUJMRSBzYWxlc21hbnMyXzUoc2FsZXNtYW5faWQgSU5UIEdFTkVSQVRFRCBBTFdBWVMgQVMg SURFTlRJVFkgUFJJTUFSWSBLRVksIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCkpOworQUxU RVIgVEFCTEUgc2FsZXNtYW5zIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNtYW5zMl81IEZPUiBW QUxVRVMgRlJPTSAoMikgVE8gKDUpOworCitJTlNFUlQgSU5UTyBzYWxlc21hbnMgKHNhbGVz bWFuX25hbWUpIFZBTFVFUyAoJ1BvaXJvdCcpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIChz YWxlc21hbl9uYW1lKSBWQUxVRVMgKCdJdmFub3YnKTsKKworU0VMRUNUIGF0dG5hbWUsIGF0 dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVt ID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNtYW5zJzo6cmVnY2xhc3M6Om9pZDsKK1NFTEVD VCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRl IFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzbWFuczFfMic6OnJlZ2Ns YXNzOjpvaWQ7CistLSBTcGxpdCBwYXJ0aXRpb24gaGFzIGlkZW50aXR5LWNvbHVtbjoKK1NF TEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmli dXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzbWFuczJfNSc6OnJl Z2NsYXNzOjpvaWQ7CisKK0FMVEVSIFRBQkxFIHNhbGVzbWFucyBTUExJVCBQQVJUSVRJT04g c2FsZXNtYW5zMl81IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc21hbnMyXzMgRk9SIFZBTFVF UyBGUk9NICgyKSBUTyAoMyksCisgICBQQVJUSVRJT04gc2FsZXNtYW5zM180IEZPUiBWQUxV RVMgRlJPTSAoMykgVE8gKDQpLAorICAgUEFSVElUSU9OIHNhbGVzbWFuczRfNSBGT1IgVkFM VUVTIEZST00gKDQpIFRPICg1KSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyAoc2FsZXNt YW5fbmFtZSkgVkFMVUVTICgnTWF5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgKHNhbGVz bWFuX25hbWUpIFZBTFVFUyAoJ0ZvcmQnKTsKKworU0VMRUNUICogRlJPTSBzYWxlc21hbnMx XzI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczJfMzsKK1NFTEVDVCAqIEZST00gc2FsZXNt YW5zM180OworU0VMRUNUICogRlJPTSBzYWxlc21hbnM0XzU7CisKK1NFTEVDVCBhdHRuYW1l LCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0 dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzbWFucyc6OnJlZ2NsYXNzOjpvaWQ7CitT RUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJp YnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc21hbnMxXzInOjpy ZWdjbGFzczo6b2lkOworLS0gTmV3IHBhcnRpdGlvbnMgaGF2ZSBpZGVudGl0eS1jb2x1bW5z OgorU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19h dHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNtYW5zMl8z Jzo6cmVnY2xhc3M6Om9pZDsKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2Vu ZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlk ID0gJ3NhbGVzbWFuczNfNCc6OnJlZ2NsYXNzOjpvaWQ7CitTRUxFQ1QgYXR0bmFtZSwgYXR0 aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0g PiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc21hbnM0XzUnOjpyZWdjbGFzczo6b2lkOworCitE Uk9QIFRBQkxFIHNhbGVzbWFucyBDQVNDQURFOworCistLQorLS0gVGVzdDogc3BsaXQgcGFy dGl0aW9uIHdpdGggZGVsZXRlZCBjb2x1bW5zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzbWFu cyhzYWxlc21hbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigz MCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNtYW5faWQpOworCitDUkVBVEUgVEFCTEUg c2FsZXNtYW5zMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzbWFucyBGT1IgVkFMVUVTIEZST00g KDEpIFRPICgxMCk7CistLSBDcmVhdGUgbmV3IHBhcnRpdGlvbiB3aXRoIHNvbWUgZGVsZXRl ZCBjb2x1bW5zOgorQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczEwXzQwKGQxIFZBUkNIQVIoMzAp LCBzYWxlc21hbl9pZCBJTlQgUFJJTUFSWSBLRVksIGQyIElOVCwgZDMgREFURSwgc2FsZXNt YW5fbmFtZSBWQVJDSEFSKDMwKSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzbWFuczEwXzQwIFZB TFVFUyAoJ2R1bW15IHZhbHVlIDEnLCAxOSwgMTAwLCBub3coKSwgJ0l2YW5vdicpOworSU5T RVJUIElOVE8gc2FsZXNtYW5zMTBfNDAgVkFMVUVTICgnZHVtbXkgdmFsdWUgMicsIDIwLCAx MDEsIG5vdygpLCAnU21pcm5vZmYnKTsKKworQUxURVIgVEFCTEUgc2FsZXNtYW5zMTBfNDAg RFJPUCBDT0xVTU4gZDE7CitBTFRFUiBUQUJMRSBzYWxlc21hbnMxMF80MCBEUk9QIENPTFVN TiBkMjsKK0FMVEVSIFRBQkxFIHNhbGVzbWFuczEwXzQwIERST1AgQ09MVU1OIGQzOworCitB TFRFUiBUQUJMRSBzYWxlc21hbnMgQVRUQUNIIFBBUlRJVElPTiBzYWxlc21hbnMxMF80MCBG T1IgVkFMVUVTIEZST00gKDEwKSBUTyAoNDApOworCitJTlNFUlQgSU5UTyBzYWxlc21hbnMg VkFMVUVTICgxLCAnUG9pcm90Jyk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgx MCwgJ01heScpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMzAsICdGb3JkJyk7 CisKK0FMVEVSIFRBQkxFIHNhbGVzbWFucyBTUExJVCBQQVJUSVRJT04gc2FsZXNtYW5zMTBf NDAgSU5UTworICAoUEFSVElUSU9OIHNhbGVzbWFuczEwXzIwIEZPUiBWQUxVRVMgRlJPTSAo MTApIFRPICgyMCksCisgICBQQVJUSVRJT04gc2FsZXNtYW5zMjBfMzAgRk9SIFZBTFVFUyBG Uk9NICgyMCkgVE8gKDMwKSwKKyAgIFBBUlRJVElPTiBzYWxlc21hbnMzMF80MCBGT1IgVkFM VUVTIEZST00gKDMwKSBUTyAoNDApKTsKKworc2VsZWN0ICogZnJvbSBzYWxlc21hbnMwMV8x MDsKK3NlbGVjdCAqIGZyb20gc2FsZXNtYW5zMTBfMjA7CitzZWxlY3QgKiBmcm9tIHNhbGVz bWFuczIwXzMwOworc2VsZWN0ICogZnJvbSBzYWxlc21hbnMzMF80MDsKKworRFJPUCBUQUJM RSBzYWxlc21hbnMgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IHN1Yi1wYXJ0aXRp b24KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lkIElOVCwgc2Fs ZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBE QVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNh bGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19m ZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAy MiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0w MScpIFRPICgnMjAyMi0wNC0wMScpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiAo c2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91 bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0 ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfYXBy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7 CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzX2FwcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOwor CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBE RUZBVUxUOworCitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04g c2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworCitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgyLCAgJ1NtaXJub2ZmJywgNTAw LCAgJzIwMjItMDItMTAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMywg ICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIw MjItMDQtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNiwgICdQb2ly b3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDIt MjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOSwgICdNdWxsZXInLCAg IDI1MCwgICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTIsICdQbGF0bycsICAgIDM1MCwg ICcyMDIyLTAzLTE5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEzLCAn R2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworU0VM RUNUICogRlJPTSBzYWxlc19yYW5nZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMjsK KworQUxURVIgVEFCTEUgc2FsZXNfYXByMjAyMiBTUExJVCBQQVJUSVRJT04gc2FsZXNfYXBy X2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8wMV8xMCBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJyksCisgICBQQVJUSVRJT04g c2FsZXNfYXByMjAyMl8xMF8yMCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTEwJykgVE8g KCcyMDIyLTA0LTIwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8yMF8zMCBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTIwJykgVE8gKCcyMDIyLTA1LTAxJykpOworCitTRUxF Q1QgKiBGUk9NIHNhbGVzX3JhbmdlOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOwor U0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyXzAxXzEwOworU0VMRUNUICogRlJPTSBzYWxl c19hcHIyMDIyXzEwXzIwOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyXzIwXzMwOwor CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gQlkgTElTVCBwYXJ0aXRpb25p bmcKKy0tCisKKy0tCistLSBUZXN0OiBzcGVjaWZpYyBlcnJvcnMgZm9yIEJZIExJU1QgcGFy dGl0aW9uaW5nCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc21hbl9pZCBJ TlQsCisgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFS KDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElP TiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBB UlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdNdXJtYW5zaycsICdTdC4g UGV0ZXJzYnVyZycsICdVa2h0YScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJ T04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnTW9zY293JywgJ1Zvcm9uZXpoJywg J1Ntb2xlbnNrJywgJ0JyeWFuc2snLCAnTWFnYWRhbicsICdLYXphbicsICdLaGFiYXJvdnNr JywgJ1ZvbGdvZ3JhZCcsICdWbGFkaXZvc3RvaycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290 aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBERUZBVUxUOworCistLSBFUlJPUjogIHBh cnRpdGlvbiAic2FsZXNfZWFzdCIgd291bGQgb3ZlcmxhcCBwYXJ0aXRpb24gInNhbGVzX25v cmQiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ1Zvcm9uZXpo JywgJ1Ntb2xlbnNrJywgJ0JyeWFuc2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZP UiBWQUxVRVMgSU4gKCdNYWdhZGFuJywgJ0toYWJhcm92c2snLCAnVmxhZGl2b3N0b2snLCAn TXVybWFuc2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4g KCdNb3Njb3cnLCAnS2F6YW4nLCAnVm9sZ29ncmFkJykpOworCistLSBFUlJPUjogIG5ldyBw YXJ0aXRpb24gInNhbGVzX3dlc3QiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIG5ldyBw YXJ0aXRpb24gInNhbGVzX2NlbnRyYWwiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElU IFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9S IFZBTFVFUyBJTiAoJ1Zvcm9uZXpoJywgJ1Ntb2xlbnNrJywgJ0JyeWFuc2snKSwKKyAgIFBB UlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdNYWdhZGFuJywgJ0toYWJhcm92 c2snLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBW QUxVRVMgSU4gKCdNb3Njb3cnLCAnS2F6YW4nLCAnVm9yb25lemgnLCAnVm9sZ29ncmFkJykp OworCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIGNhbm5vdCBoYXZl IE5VTEwgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gZG9lcyBub3QgaGF2ZQorQUxU RVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdWb3JvbmV6aCcsICdTbW9s ZW5zaycsICdCcnlhbnNrJywgTlVMTCksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1Ig VkFMVUVTIElOICgnTWFnYWRhbicsICdLaGFiYXJvdnNrJywgJ1ZsYWRpdm9zdG9rJyksCisg ICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnTW9zY293JywgJ0th emFuJywgJ1ZvbGdvZ3JhZCcpKTsKKworRFJPUCBUQUJMRSBzYWxlc19saXN0OworCistLQor LS0gVGVzdDogdHdvIHNwZWNpZmljIGVycm9ycyBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmc6 CistLSAgICogbmV3IHBhcnRpdGlvbnMgbm90IGhhcyBOVUxMIHZhbHVlIHRoYXQgc3BsaXQg cGFydGl0aW9uIGhhcy4KKy0tICAgKiBuZXcgcGFydGl0aW9ucyBub3QgaGFzIGEgdmFsdWUg dGhhdCBzcGxpdCBwYXJ0aXRpb24gaGFzLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19saXN0 Cisoc2FsZXNtYW5faWQgSU5ULAorIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksCisgc2Fs ZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRl IERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworCitDUkVBVEUgVEFC TEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgn TXVybWFuc2snLCAnU3QuIFBldGVyc2J1cmcnLCAnVWtodGEnKTsKK0NSRUFURSBUQUJMRSBz YWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ01vc2Nv dycsICdWb3JvbmV6aCcsICdTbW9sZW5zaycsICdCcnlhbnNrJywgJ01hZ2FkYW4nLCAnS2F6 YW4nLCAnS2hhYmFyb3ZzaycsICdWb2xnb2dyYWQnLCAnVmxhZGl2b3N0b2snLCBOVUxMKTsK KworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9ucyBub3QgaGF2ZSB2YWx1ZSBOVUxMIGJ1dCBz cGxpdCBwYXJ0aXRpb24gaGFzCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJ VElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVF UyBJTiAoJ1Zvcm9uZXpoJywgJ1Ntb2xlbnNrJywgJ0JyeWFuc2snKSwKKyAgIFBBUlRJVElP TiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdNYWdhZGFuJywgJ0toYWJhcm92c2snLCAn VmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMg SU4gKCdNb3Njb3cnLCAnS2F6YW4nLCAnVm9sZ29ncmFkJykpOworCistLSBFUlJPUjogIG5l dyBwYXJ0aXRpb25zIG5vdCBoYXZlIHZhbHVlICdWb2xnb2dyYWQnIGJ1dCBzcGxpdCBwYXJ0 aXRpb24gaGFzCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxl c19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ1Zv cm9uZXpoJywgJ1Ntb2xlbnNrJywgJ0JyeWFuc2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19l YXN0IEZPUiBWQUxVRVMgSU4gKCdNYWdhZGFuJywgJ0toYWJhcm92c2snLCAnVmxhZGl2b3N0 b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdNb3Nj b3cnLCAnS2F6YW4nLCBOVUxMKSk7CisKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKworLS0K Ky0tIFRlc3Q6IEJZIExJU1QgcGFydGl0aW9uaW5nLCBTUExJVCBQQVJUSVRJT04gd2l0aCBk YXRhCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc21hbl9pZCBJTlQgR0VO RVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSwKKyBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzAp LAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2Fs ZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKKworQ1JF QVRFIElOREVYIHNhbGVzX2xpc3Rfc2FsZXNtYW5fbmFtZV9pZHggT04gc2FsZXNfbGlzdCBV U0lORyBidHJlZSAoc2FsZXNtYW5fbmFtZSk7CitDUkVBVEUgSU5ERVggc2FsZXNfbGlzdF9z YWxlc19zdGF0ZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNfc3RhdGUp OworCitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBG T1IgVkFMVUVTIElOICgnTXVybWFuc2snLCAnU3QuIFBldGVyc2J1cmcnLCAnVWtodGEnKTsK K0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZB TFVFUyBJTiAoJ01vc2NvdycsICdWb3JvbmV6aCcsICdTbW9sZW5zaycsICdCcnlhbnNrJywg J01hZ2FkYW4nLCAnS2F6YW4nLCAnS2hhYmFyb3ZzaycsICdWb2xnb2dyYWQnLCAnVmxhZGl2 b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVz X2xpc3QgREVGQVVMVDsKKworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFt ZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnVHJ1 bXAnLCAgICAnTWFnYWRhbicsICAgICAgICAxMDAwLCAnMjAyMi0wMy0wMScpOworSU5TRVJU IElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ft b3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnU21pcm5vZmYnLCAnU21vbGVuc2snLCAgICAg ICA1MDAsICAnMjAyMi0wMy0wMycpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNt YW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVT ICgnRm9yZCcsICAgICAnU3QuIFBldGVyc2J1cmcnLCAyMDAwLCAnMjAyMi0wMy0wNScpOwor SU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNh bGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnSXZhbm92JywgICAnTW9zY293Jywg ICAgICAgICA3NTAsICAnMjAyMi0wMy0wNCcpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAo c2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkg VkFMVUVTICgnRGVldicsICAgICAnVm9yb25lemgnLCAgICAgICAyNTAsICAnMjAyMi0wMy0w NycpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3Rh dGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnUG9pcm90JywgICAnS2F6 YW4nLCAgICAgICAgICAxMDAwLCAnMjAyMi0wMy0wMScpOworSU5TRVJUIElOVE8gc2FsZXNf bGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNf ZGF0ZSkgVkFMVUVTICgnTWF5JywgICAgICAnVWtodGEnLCAgICAgICAgICAxMjAwLCAnMjAy Mi0wMy0wNicpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2Fs ZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnTGknLCAgICAg ICAnVmxhZGl2b3N0b2snLCAgICAxMTUwLCAnMjAyMi0wMy0wOScpOworSU5TRVJUIElOVE8g c2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwg c2FsZXNfZGF0ZSkgVkFMVUVTICgnTWF5JywgICAgICAnVWtodGEnLCAgICAgICAgICAxMjAw LCAnMjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFt ZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnSGFs ZGVyJywgICAnTXVybWFuc2snLCAgICAgICA4MDAsICAnMjAyMi0wMy0wMicpOworSU5TRVJU IElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ft b3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnTXVsbGVyJywgICAnQnJ5YW5zaycsICAgICAg ICA2NTAsICAnMjAyMi0wMy0wNScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNt YW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVT ICgnU21pdGgnLCAgICAnVm9sZ29ncmFkJywgICAgICAzNTAsICAnMjAyMi0wMy0xMCcpOwor SU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNh bGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnR2FuZGknLCAgICAnTW9zY293Jywg ICAgICAgICAxNTAsICAnMjAyMi0wMy0wOCcpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAo c2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkg VkFMVUVTICgnUGxhdG8nLCAgICAnVm9yb25lemgnLCAgICAgICA5NTAsICAnMjAyMi0wMy0w NScpOworCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19h bGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ1Zvcm9u ZXpoJywgJ1Ntb2xlbnNrJywgJ0JyeWFuc2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0 IEZPUiBWQUxVRVMgSU4gKCdNYWdhZGFuJywgJ0toYWJhcm92c2snLCAnVmxhZGl2b3N0b2sn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdNb3Njb3cn LCAnS2F6YW4nLCAnVm9sZ29ncmFkJykpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3Q7 CitTRUxFQ1QgKiBGUk9NIHNhbGVzX3dlc3Q7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2Vhc3Q7 CitTRUxFQ1QgKiBGUk9NIHNhbGVzX25vcmQ7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2NlbnRy YWw7CisKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3QgaW5kZXhlcyBhZnRlciBzcGxpdCBw YXJ0aXRpb24KK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gT047CitTRVQgZW5hYmxlX3NlcXNj YW4gPSBPRkY7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfY2VudHJhbCBXSEVSRSBzYWxlc19z dGF0ZSA9ICdNb3Njb3cnOworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVz X3N0YXRlID0gJ01vc2Nvdyc7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2Fs ZXNtYW5fbmFtZSA9ICdJdmFub3YnOworCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IE9OOwor U0VUIGVuYWJsZV9zZXFzY2FuID0gT047CisKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKwor LS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIHNwbGl0IERFRkFVTFQgcGFydGl0aW9uIHRvIHBh cnRpdGlvbnMgd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHM7CistLSAgICogcmFuZG9tIG9y ZGVyIG9mIHBhcnRpdGlvbnMgaW4gU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQuCistLQorQ1JF QVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUg VkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElU SU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMg UEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDIsICAnU21pcm5vZmYnLCA1MDAsICAn MjAyMi0wMi0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgzLCAgJ0Zv cmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyk7CitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0w NC0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg2LCAgJ1BvaXJvdCcs ICAgMTUwLCAgJzIwMjItMDItMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg5LCAgJ011bGxlcicsICAgMjUw LCAgJzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTAs ICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIw MjItMDMtMTknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTMsICdHYW5k aScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitBTFRFUiBU QUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCwKKyAgIFBBUlRJVElPTiBzYWxlc19t YXIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAy Mi0wMy0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2phbjIwMjJfMWRlY2FkZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAxLTEwJyksCisgICBQQVJUSVRJ T04gc2FsZXNfZmViMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEn KSBUTyAoJzIwMjItMDItMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzFkZWNh ZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xMCcpKTsK KworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyXzFkZWNhZGU7CitTRUxFQ1QgKiBGUk9N IHNhbGVzX2ZlYjIwMjJfMWRlY2FkZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfbWFyMjAyMl8x ZGVjYWRlOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyXzFkZWNhZGU7CitTRUxFQ1Qg KiBGUk9NIHNhbGVzX290aGVyczsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKworLS0K Ky0tIFRlc3QgZm9yOgorLS0gICAqIHNwbGl0IG5vbi1ERUZBVUxUIHBhcnRpdGlvbiB0byBw YXJ0aXRpb25zIHdpdGggc3BhY2VzIGJldHdlZW4gYm91bmRzOworLS0gICAqIHJhbmRvbSBv cmRlciBvZiBwYXJ0aXRpb25zIGluIFNQTElUIFBBUlRJVElPTiBjb21tYW5kLgorLS0KK0NS RUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1l IFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJ VElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykg VE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDIt MDknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMywgICdGb3JkJywgICAg IDIwMDAsICcyMDIyLTA0LTMwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNiwgICdQb2lyb3QnLCAgIDE1MCwg ICcyMDIyLTAyLTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDcsICAn TGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIy LTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEwLCAnSGFsZGVy JywgICAzNTAsICAnMjAyMi0wMS0yOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5 Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEzLCAnR2FuZGknLCAgICAz NzcsICAnMjAyMi0wMS0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgx NCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04g c2FsZXNfbWFyMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBU TyAoJzIwMjItMDMtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19qYW4yMDIyXzFkZWNhZGUg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMS0xMCcpLAorICAg UEFSVElUSU9OIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAyLTAxJykgVE8gKCcyMDIyLTAyLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAy Ml8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQt MTAnKSk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMl8xZGVjYWRlOworU0VMRUNU ICogRlJPTSBzYWxlc19mZWIyMDIyXzFkZWNhZGU7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX21h cjIwMjJfMWRlY2FkZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8xZGVjYWRlOwor U0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7 CisKKy0tCistLSBUZXN0IGZvciBzcGxpdCBub24tREVGQVVMVCBwYXJ0aXRpb24gdG8gREVG QVVMVCBwYXJ0aXRpb24gKyBwYXJ0aXRpb25zCistLSB3aXRoIHNwYWNlcyBiZXR3ZWVuIGJv dW5kcy4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lkIElOVCwg c2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0 ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAy LTEwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDMsICAnRm9yZCcsICAg ICAyMDAwLCAnMjAyMi0wNC0zMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT ICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3Jyk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDYsICAnUG9pcm90JywgICAxNTAs ICAnMjAyMi0wMi0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg3LCAg J0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAy Mi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMCwgJ0hhbGRl cicsICAgMzUwLCAgJzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2Jyk7CitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0x OScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMywgJ0dhbmRpJywgICAg Mzc3LCAgJzIwMjItMDEtMDknKTsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQg UEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykg VE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQp OworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDE0LCAnU21pdGgnLCAgICA1 MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworU0VM RUNUICogRlJPTSBzYWxlc19qYW4yMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIy OworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19v dGhlcnM7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCitEUk9QIFNDSEVNQSBw YXJ0aXRpb25fc3BsaXRfc2NoZW1hOwo= --------------eM21MGCCSPBFH3Zad9qyj8Cf--