Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dnGwf-0001Ec-UI for pgsql-hackers@arkaria.postgresql.org; Thu, 31 Aug 2017 04:19:10 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1dnGwe-0001X6-SX for pgsql-hackers@arkaria.postgresql.org; Thu, 31 Aug 2017 04:19:08 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1dnGuS-00072k-57 for pgsql-hackers@postgresql.org; Thu, 31 Aug 2017 04:16:52 +0000 Received: from out1-smtp.messagingengine.com ([66.111.4.25]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1dnGuL-0003tS-TP for pgsql-hackers@postgresql.org; Thu, 31 Aug 2017 04:16:50 +0000 Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailout.nyi.internal (Postfix) with ESMTP id 9264920D94 for ; Thu, 31 Aug 2017 00:16:44 -0400 (EDT) Received: from frontend1 ([10.202.2.160]) by compute7.internal (MEProxy); Thu, 31 Aug 2017 00:16:44 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:message-id :mime-version:subject:to:x-me-sender:x-me-sender:x-sasl-enc :x-sasl-enc; s=fm1; bh=XT+CXOF2pyC7aLgwjl8193UbX8J3Z4ITtkHPvTWiy no=; b=sKGBlTMLc/bepL0rJXT48seicYMZ6IxDkb9/T4Piu7tlF9Di/AKE9oNVp elphy3ananhMzXEYbCS8qL6i59l0hzwQHO3Hp7cWoAHtuOc9Lv7gTE5mSB42ubiz jjYxk6ETfdTc0SYSlyK5K5Nx19gRe8NM7Lob2IiiMQ/CvBnZnQbYjnPHn/AjXAG3 YNTBoLteB7ODwXbVv2ov1qjJnwrdWqExICtZ9FjHDCRbtqYC7SXyMH2dzoiGdiLa w5BWPX3S2rxWl2wi9R4U2Oppu3iQLb/IUv11sRlbN93I0F4rWJg67JbWkFfcue27 Cb6rHH3nJC2AwIbLUscFRzlel9Xmg== X-ME-Sender: X-Sasl-enc: 9EXK5wp/ohLsaKEhFT/NIMi959tLMaMTWg9XEwVBMgZ/ 1504153003 Received: from april.local (c-73-13-66-39.hsd1.pa.comcast.net [73.13.66.39]) by mail.messagingengine.com (Postfix) with ESMTPA id 9D26D7E77A for ; Thu, 31 Aug 2017 00:16:43 -0400 (EDT) From: Peter Eisentraut Subject: generated columns To: pgsql-hackers Organization: 2ndQuadrant Message-ID: Date: Thu, 31 Aug 2017 00:16:43 -0400 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------C821A67F37A6C5ADB9EE3F01" Content-Language: en-US List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-hackers Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org This is a multi-part message in MIME format. --------------C821A67F37A6C5ADB9EE3F01 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Here is another attempt to implement generated columns. This is a well-known SQL-standard feature, also available for instance in DB2, MySQL, Oracle. A quick example: CREATE TABLE t1 ( ..., height_cm numeric, height_in numeric GENERATED ALWAYS AS (height_cm * 2.54) ); (This is not related to the recent identity columns feature, other than the similar syntax and some overlap internally.) In previous discussions, it has often been a source of confusion whether these generated columns are supposed to be computed on insert/update and stored, or computed when read. The SQL standard is not explicit, but appears to lean toward stored. DB2 stores. Oracle computes on read. MySQL supports both. So I target implementing both. This makes sense: Both regular views and materialized views have their uses, too. For the syntax, I use the MySQL/Oracle syntax of appending [VIRTUAL|STORED]. In this patch, only VIRTUAL is fully implemented. I also have STORED kind of working, but it wasn't fully baked, so I haven't included it here. Known bugs: - pg_dump produces a warning about a dependency loop when dumping these. Will need to be fixed at some point, but it doesn't prevent anything from working right now. Open design issues: - COPY behavior: Currently, generated columns are automatically omitted if there is no column list, and prohibited if specified explicitly. When stored generated columns are implemented, they could be copied out. Some user options might be possible here. - Catalog storage: I store the generation expression in pg_attrdef, like a default. For the most part, this works well. It is not clear, however, what pg_attribute.atthasdef should say. Half the code thinks that atthasdef means "there is something in pg_attrdef", the other half thinks "column has a DEFAULT expression". Currently, I'm going with the former interpretation, because that is wired in quite deeply and things start to crash if you violate it, but then code that wants to know whether a column has a traditional DEFAULT expression needs to check atthasdef && !attgenerated or something like that. Missing/future functionality: - STORED variant - various ALTER TABLE variants - index support (and related constraint support) These can be added later once the basics are nailed down. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services --------------C821A67F37A6C5ADB9EE3F01 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="0001-Generated-columns.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Generated-columns.patch" RnJvbSBmMDkzODEwOWY5OTVhZGY3YjRiMGI0YWRiZTY1MmQ5ODgxNTQ5Y2Vl IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRy YXV0IDxwZXRlcl9lQGdteC5uZXQ+CkRhdGU6IFdlZCwgMzAgQXVnIDIwMTcg MjM6Mzg6MDggLTA0MDAKU3ViamVjdDogW1BBVENIXSBHZW5lcmF0ZWQgY29s dW1ucwoKVGhpcyBpcyBhbiBTUUwtc3RhbmRhcmQgZmVhdHVyZSB0aGF0IGFs bG93cyBjcmVhdGluZyBjb2x1bW5zIHRoYXQgYXJlCmNvbXB1dGVkIGZyb20g ZXhwcmVzc2lvbnMgcmF0aGVyIHRoYW4gYXNzaWduZWQsIHNpbWlsYXIgdG8g YSB2aWV3IGJ1dCBvbgphIGNvbHVtbiBiYXNpcy4KLS0tCiBkb2Mvc3JjL3Nn bWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgICB8ICAxMSAr CiBkb2Mvc3JjL3NnbWwvaW5mb3JtYXRpb25fc2NoZW1hLnNnbWwgICAgICAg ICAgICB8ICAxMCArLQogZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwgICAg ICAgICAgICAgICAgICAgICAgfCAgIDMgKy0KIGRvYy9zcmMvc2dtbC9yZWYv Y3JlYXRlX3RhYmxlLnNnbWwgICAgICAgICAgICAgIHwgIDQ2ICsrKy0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vdHVwZGVzYy5jICAgICAgICAgICAg IHwgICA1ICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvZ2VuYmtpLnBsICAgICAg ICAgICAgICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvaGVh cC5jICAgICAgICAgICAgICAgICAgICAgIHwgIDkzICsrKysrLS0KIHNyYy9i YWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgICAgICAgIHwg ICAxICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5mb3JtYXRpb25fc2NoZW1h LnNxbCAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5 LmMgICAgICAgICAgICAgICAgICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAgICAgICAgICAgfCAgMjQgKy0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAg ICAgIHwgIDQ1ICsrKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIu YyAgICAgICAgICAgICAgICAgIHwgIDM2ICsrKwogc3JjL2JhY2tlbmQvY29t bWFuZHMvdHlwZWNtZHMuYyAgICAgICAgICAgICAgICAgfCAgIDYgKy0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICAgICAgICAg IHwgICA3ICstCiBzcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYyAgICAg ICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9ub2Rlcy9lcXVh bGZ1bmNzLmMgICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2Vu ZC9ub2Rlcy9vdXRmdW5jcy5jICAgICAgICAgICAgICAgICAgICB8ICAgOSAr CiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAg ICAgICB8ICAyNiArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5j ICAgICAgICAgICAgICAgICAgfCAgMTEgKwogc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX2V4cHIuYyAgICAgICAgICAgICAgICAgfCAgIDUgKwogc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyAgICAgICAgICAgICAgICAgfCAg MTIgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyAgICAg ICAgICAgICAgfCAgODcgKysrKysrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC93b3JrZXIuYyAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNr ZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYyAgICAgICAgICAgIHwgMTIy ICsrKysrKysrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNo ZS5jICAgICAgICAgICAgIHwgIDMyICsrKwogc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvcmVsY2FjaGUuYyAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAgICAgICAgfCAg MzkgKystCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMSArCiBzcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdf ZHVtcC5wbCAgICAgICAgICAgICAgICB8ICAzOSArKysKIHNyYy9iaW4vcHNx bC9kZXNjcmliZS5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI4ICsr LQogc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmggICAgICAgICAg ICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvaGVhcC5oICAg ICAgICAgICAgICAgICAgICAgIHwgICA1ICstCiBzcmMvaW5jbHVkZS9jYXRh bG9nL3BnX2F0dHJpYnV0ZS5oICAgICAgICAgICAgICB8ICAyMyArLQogc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19jbGFzcy5oICAgICAgICAgICAgICAgICAg fCAgIDIgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAg ICAgICAgICAgICAgIHwgIDEyICstCiBzcmMvaW5jbHVkZS9wYXJzZXIva3ds aXN0LmggICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVk ZS9wYXJzZXIvcGFyc2Vfbm9kZS5oICAgICAgICAgICAgICAgICB8ICAgMyAr LQogc3JjL2luY2x1ZGUvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oICAgICAg ICAgICAgfCAgIDMgKy0KIHNyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5o ICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvY3JlYXRlX3RhYmxlX2xpa2Uub3V0IHwgIDQ2ICsrKysKIHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2VuZXJhdGVkLm91dCAgICAgICAg IHwgMzA5ICsrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVn cmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgICAgICAgfCAgIDIgKy0K IHNyYy90ZXN0L3JlZ3Jlc3Mvc2VyaWFsX3NjaGVkdWxlICAgICAgICAgICAg ICAgIHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV90YWJs ZV9saWtlLnNxbCAgICAgIHwgIDE0ICsrCiBzcmMvdGVzdC9yZWdyZXNzL3Nx bC9nZW5lcmF0ZWQuc3FsICAgICAgICAgICAgICB8IDE5MiArKysrKysrKysr KysrKysKIDQ2IGZpbGVzIGNoYW5nZWQsIDEyNjIgaW5zZXJ0aW9ucygrKSwg ODMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9nZW5lcmF0ZWQub3V0CiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2VuZXJhdGVkLnNxbAoKZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3Ny Yy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggZWY3MDU0Y2YyNi4uZjVmYjVl OTI5MSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTExNDAsNiAr MTE0MCwxNyBAQCA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfYXR0cmlidXRlPC8+ IENvbHVtbnM8L3RpdGxlPgogICAgICAgPC9lbnRyeT4KICAgICAgPC9yb3c+ CiAKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+YXR0 Z2VuZXJhdGVkPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorICAgICAgPGVudHJ5 Pjx0eXBlPmNoYXI8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48L2Vu dHJ5PgorICAgICAgPGVudHJ5PgorICAgICAgIElmIGEgemVybyBieXRlICg8 bGl0ZXJhbD4nJzwvbGl0ZXJhbD4pLCB0aGVuIG5vdCBhIGdlbmVyYXRlZCBj b2x1bW4uCisgICAgICAgT3RoZXJ3aXNlLCA8bGl0ZXJhbD5zPC9saXRlcmFs PiA9IHN0b3JlZCwgPGxpdGVyYWw+djwvbGl0ZXJhbD4gPQorICAgICAgIHZp cnR1YWwuCisgICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8 cm93PgogICAgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5hdHRpc2Ryb3BwZWQ8 L3N0cnVjdGZpZWxkPjwvZW50cnk+CiAgICAgICA8ZW50cnk+PHR5cGU+Ym9v bDwvdHlwZT48L2VudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2lu Zm9ybWF0aW9uX3NjaGVtYS5zZ21sIGIvZG9jL3NyYy9zZ21sL2luZm9ybWF0 aW9uX3NjaGVtYS5zZ21sCmluZGV4IGUwN2ZmMzViY2EuLjNiN2RkM2FjMTcg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9pbmZvcm1hdGlvbl9zY2hlbWEu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvaW5mb3JtYXRpb25fc2NoZW1hLnNn bWwKQEAgLTE2NDgsMTMgKzE2NDgsMTkgQEAgPHRpdGxlPjxsaXRlcmFsPmNv bHVtbnM8L2xpdGVyYWw+IENvbHVtbnM8L3RpdGxlPgogICAgICA8cm93Pgog ICAgICAgPGVudHJ5PjxsaXRlcmFsPmlzX2dlbmVyYXRlZDwvbGl0ZXJhbD48 L2VudHJ5PgogICAgICAgPGVudHJ5Pjx0eXBlPmNoYXJhY3Rlcl9kYXRhPC90 eXBlPjwvZW50cnk+Ci0gICAgICA8ZW50cnk+QXBwbGllcyB0byBhIGZlYXR1 cmUgbm90IGF2YWlsYWJsZSBpbiA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwv PjwvZW50cnk+CisgICAgICA8ZW50cnk+CisgICAgICAgSWYgdGhlIGNvbHVt biBpcyBhIGdlbmVyYXRlZCBjb2x1bW4sIHRoZW4gPGxpdGVyYWw+QUxXQVlT PC9saXRlcmFsPiwKKyAgICAgICBlbHNlIDxsaXRlcmFsPk5FVkVSPC9saXRl cmFsPi4KKyAgICAgIDwvZW50cnk+CiAgICAgIDwvcm93PgogCiAgICAgIDxy b3c+CiAgICAgICA8ZW50cnk+PGxpdGVyYWw+Z2VuZXJhdGlvbl9leHByZXNz aW9uPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICA8ZW50cnk+PHR5cGU+Y2hh cmFjdGVyX2RhdGE8L3R5cGU+PC9lbnRyeT4KLSAgICAgIDxlbnRyeT5BcHBs aWVzIHRvIGEgZmVhdHVyZSBub3QgYXZhaWxhYmxlIGluIDxwcm9kdWN0bmFt ZT5Qb3N0Z3JlU1FMPC8+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT4KKyAgICAg ICBJZiB0aGUgY29sdW1uIGlzIGEgZ2VuZXJhdGVkIGNvbHVtbiwgdGhlbiB0 aGUgZ2VuZXJhdGlvbiBleHByZXNzaW9uLAorICAgICAgIGVsc2UgbnVsbC4K KyAgICAgIDwvZW50cnk+CiAgICAgIDwvcm93PgogCiAgICAgIDxyb3c+CmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbCBiL2RvYy9z cmMvc2dtbC9yZWYvY29weS5zZ21sCmluZGV4IDhkZTExNTBkZmIuLmYwOGZj N2Q1MTggMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sCkBAIC0xMDMsNyAr MTAzLDggQEAgPHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxlPgogICAgICA8bGlz dGl0ZW0+CiAgICAgIDxwYXJhPgogICAgICAgQW4gb3B0aW9uYWwgbGlzdCBv ZiBjb2x1bW5zIHRvIGJlIGNvcGllZC4gIElmIG5vIGNvbHVtbiBsaXN0IGlz Ci0gICAgICBzcGVjaWZpZWQsIGFsbCBjb2x1bW5zIG9mIHRoZSB0YWJsZSB3 aWxsIGJlIGNvcGllZC4KKyAgICAgIHNwZWNpZmllZCwgYWxsIGNvbHVtbnMg b2YgdGhlIHRhYmxlIGV4Y2VwdGVkIGdlbmVyYXRlZCBjb2x1bW5zIHdpbGwg YmUKKyAgICAgIGNvcGllZC4KICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0 ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVm L2NyZWF0ZV90YWJsZS5zZ21sCmluZGV4IGU5YzJjNDk1MzMuLmEwZTk3NTFh OTMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxl LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dt bApAQCAtNjIsNiArNjIsNyBAQAogICBOVUxMIHwKICAgQ0hFQ0sgKCA8cmVw bGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+ZXhwcmVzc2lvbjwvcmVwbGFj ZWFibGU+ICkgWyBOTyBJTkhFUklUIF0gfAogICBERUZBVUxUIDxyZXBsYWNl YWJsZT5kZWZhdWx0X2V4cHI8L3JlcGxhY2VhYmxlPiB8CisgIEdFTkVSQVRF RCBBTFdBWVMgQVMgKCA8cmVwbGFjZWFibGU+Z2VuZXJhdGlvbl9leHByPC9y ZXBsYWNlYWJsZT4gKSBbIFZJUlRVQUwgfCBTVE9SRUQgXSB8CiAgIEdFTkVS QVRFRCB7IEFMV0FZUyB8IEJZIERFRkFVTFQgfSBBUyBJREVOVElUWSBbICgg PHJlcGxhY2VhYmxlPnNlcXVlbmNlX29wdGlvbnM8L3JlcGxhY2VhYmxlPiAp IF0gfAogICBVTklRVUUgPHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVURVIi PmluZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2VhYmxlPiB8CiAgIFBSSU1BUlkg S0VZIDxyZXBsYWNlYWJsZSBjbGFzcz0iUEFSQU1FVEVSIj5pbmRleF9wYXJh bWV0ZXJzPC9yZXBsYWNlYWJsZT4gfApAQCAtODIsNyArODMsNyBAQAogCiA8 cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+bGlr ZV9vcHRpb248L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KIAoteyBJTkNM VURJTkcgfCBFWENMVURJTkcgfSB7IERFRkFVTFRTIHwgQ09OU1RSQUlOVFMg fCBJREVOVElUWSB8IElOREVYRVMgfCBTVE9SQUdFIHwgQ09NTUVOVFMgfCBB TEwgfQoreyBJTkNMVURJTkcgfCBFWENMVURJTkcgfSB7IERFRkFVTFRTIHwg Q09OU1RSQUlOVFMgfCBJREVOVElUWSB8IEdFTkVSQVRFRCB8IElOREVYRVMg fCBTVE9SQUdFIHwgQ09NTUVOVFMgfCBBTEwgfQogCiA8cGhyYXNlPmFuZCA8 cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+cGFydGl0aW9uX2JvdW5k X3NwZWM8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KIApAQCAtNTMwLDYg KzUzMSwxMiBAQCA8dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+CiAgICAgICBz ZXF1ZW5jZSBpcyBjcmVhdGVkIGZvciBlYWNoIGlkZW50aXR5IGNvbHVtbiBv ZiB0aGUgbmV3IHRhYmxlLCBzZXBhcmF0ZQogICAgICAgZnJvbSB0aGUgc2Vx dWVuY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgb2xkIHRhYmxlLgogICAgICA8 L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgR2VuZXJhdGVkIGNvbHVtbnMg d2lsbCBvbmx5IGJlY29tZSBnZW5lcmF0ZWQgY29sdW1ucyBpbiB0aGUgbmV3 IHRhYmxlCisgICAgICBpZiA8bGl0ZXJhbD5JTkNMVURJTkcgR0VORVJBVEVE PC9saXRlcmFsPiBpcyBzcGVjaWZpZWQsIHdoaWNoIHdpbGwgY29weQorICAg ICAgdGhlIGdlbmVyYXRpb24gZXhwcmVzc2lvbiBhbmQgdGhlIHZpcnR1YWwv c3RvcmVkIGNob2ljZS4gIE90aGVyd2lzZSwgdGhlCisgICAgICBuZXcgY29s dW1uIHdpbGwgYmUgYSByZWd1bGFyIGJhc2UgY29sdW1uLgorICAgICA8L3Bh cmE+CiAgICAgIDxwYXJhPgogICAgICAgTm90LW51bGwgY29uc3RyYWludHMg YXJlIGFsd2F5cyBjb3BpZWQgdG8gdGhlIG5ldyB0YWJsZS4KICAgICAgIDxs aXRlcmFsPkNIRUNLPC9saXRlcmFsPiBjb25zdHJhaW50cyB3aWxsIGJlIGNv cGllZCBvbmx5IGlmCkBAIC01NjIsNyArNTY5LDcgQEAgPHRpdGxlPlBhcmFt ZXRlcnM8L3RpdGxlPgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAg ICAgPGxpdGVyYWw+SU5DTFVESU5HIEFMTDwvbGl0ZXJhbD4gaXMgYW4gYWJi cmV2aWF0ZWQgZm9ybSBvZgotICAgICAgPGxpdGVyYWw+SU5DTFVESU5HIERF RkFVTFRTIElOQ0xVRElORyBJREVOVElUWSBJTkNMVURJTkcgQ09OU1RSQUlO VFMgSU5DTFVESU5HIElOREVYRVMgSU5DTFVESU5HIFNUT1JBR0UgSU5DTFVE SU5HIENPTU1FTlRTPC9saXRlcmFsPi4KKyAgICAgIDxsaXRlcmFsPklOQ0xV RElORyBERUZBVUxUUyBJTkNMVURJTkcgSURFTlRJVFkgSU5DTFVESU5HIEdF TkVSQVRFRCBJTkNMVURJTkcgQ09OU1RSQUlOVFMgSU5DTFVESU5HIElOREVY RVMgSU5DTFVESU5HIFNUT1JBR0UgSU5DTFVESU5HIENPTU1FTlRTPC9saXRl cmFsPi4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgIE5vdGUg dGhhdCB1bmxpa2UgPGxpdGVyYWw+SU5IRVJJVFM8L2xpdGVyYWw+LCBjb2x1 bW5zIGFuZApAQCAtNjc2LDYgKzY4MywzMSBAQCA8dGl0bGU+UGFyYW1ldGVy czwvdGl0bGU+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5 PgogCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPkdF TkVSQVRFRCBBTFdBWVMgQVMgKCA8cmVwbGFjZWFibGU+Z2VuZXJhdGlvbl9l eHByPC9yZXBsYWNlYWJsZT4gKSBbIFZJUlRVQUwgfCBTVE9SRUQgXTwvbGl0 ZXJhbD48aW5kZXh0ZXJtPjxwcmltYXJ5PmdlbmVyYXRlZCBjb2x1bW48L3By aW1hcnk+PC9pbmRleHRlcm0+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAg ICAgPHBhcmE+CisgICAgICBUaGlzIGNsYXVzZSBjcmVhdGVzIHRoZSBjb2x1 bW4gYXMgYSA8Zmlyc3R0ZXJtPmdlbmVyYXRlZAorICAgICAgY29sdW1uPC9m aXJzdHRlcm0+LiAgVGhlIGNvbHVtbiBjYW5ub3QgYmUgd3JpdHRlbiB0bywg YW5kIHdoZW4gcmVhZCBpdAorICAgICAgd2lsbCBiZSBjb21wdXRlZCBmcm9t IHRoZSBzcGVjaWZpZWQgZXhwcmVzc2lvbi4KKyAgICAgPC9wYXJhPgorCisg ICAgIDxwYXJhPgorICAgICAgV2hlbiA8bGl0ZXJhbD5WSVJUVUFMPC9saXRl cmFsPiBpcyBzcGVjaWZpZWQsIHRoZSBjb2x1bW4gd2lsbCBiZQorICAgICAg Y29tcHV0ZWQgd2hlbiBpdCBpcyByZWFkLCBhbmQgaXQgd2lsbCBub3Qgb2Nj dXB5IGFueSBzdG9yYWdlLgorICAgICAgV2hlbiA8bGl0ZXJhbD5TVE9SRUQ8 L2xpdGVyYWw+IGlzIHNwZWNpZmllZCwgdGhlIGNvbHVtbiB3aWxsIGJlIGNv bXB1dGVkCisgICAgICBvbiB3cml0ZSBhbmQgd2lsbCBiZSBzdG9yZWQgb24g ZGlzay4gIDxsaXRlcmFsPlZJUlRVQUw8L2xpdGVyYWw+IGlzIHRoZQorICAg ICAgZGVmYXVsdC4KKyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAg ICAgVGhlIGdlbmVyYXRpb24gZXhwcmVzc2lvbiBjYW4gcmVmZXIgdG8gb3Ro ZXIgY29sdW1ucyBpbiB0aGUgdGFibGUsIGJ1dAorICAgICAgbm90IG90aGVy IGdlbmVyYXRlZCBjb2x1bW5zLiAgQW55IGZ1bmN0aW9ucyBhbmQgb3BlcmF0 b3JzIHVzZWQgbXVzdCBiZQorICAgICAgaW1tdXRhYmxlLiAgUmVmZXJlbmNl cyB0byBvdGhlciB0YWJsZXMgYXJlIG5vdCBhbGxvd2VkLgorICAgICA8L3Bh cmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAg ICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxsaXRlcmFsPkdFTkVSQVRF RCB7IEFMV0FZUyB8IEJZIERFRkFVTFQgfSBBUyBJREVOVElUWSBbICggPHJl cGxhY2VhYmxlPnNlcXVlbmNlX29wdGlvbnM8L3JlcGxhY2VhYmxlPiApIF08 L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KQEAgLTE4MzIsNiAr MTg2NCwxNiBAQCA8dGl0bGU+TXVsdGlwbGUgSWRlbnRpdHkgQ29sdW1uczwv dGl0bGU+CiAgICA8L3BhcmE+CiAgIDwvcmVmc2VjdDI+CiAKKyAgPHJlZnNl Y3QyPgorICAgPHRpdGxlPkdlbmVyYXRlZCBDb2x1bW5zPC90aXRsZT4KKwor ICAgPHBhcmE+CisgICAgVGhlIG9wdGlvbnMgPGxpdGVyYWw+VklSVFVBTDwv bGl0ZXJhbD4gYW5kIDxsaXRlcmFsPlNUT1JFRDwvbGl0ZXJhbD4gYXJlCisg ICAgbm90IHN0YW5kYXJkIGJ1dCBhcmUgYWxzbyB1c2VkIGJ5IG90aGVyIFNR TCBpbXBsZW1lbnRhdGlvbnMuICBUaGUgU1FMCisgICAgc3RhbmRhcmQgZG9l cyBub3Qgc3BlY2lmeSB0aGUgc3RvcmFnZSBvZiBnZW5lcmF0ZWQgY29sdW1u cy4KKyAgIDwvcGFyYT4KKyAgPC9yZWZzZWN0Mj4KKwogICA8cmVmc2VjdDI+ CiAgICA8dGl0bGU+PGxpdGVyYWw+TElLRTwvPiBDbGF1c2U8L3RpdGxlPgog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3R1cGRl c2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vdHVwZGVzYy5jCmlu ZGV4IDQ0MzZjODYzNjEuLmFhZTM3MzU2OTcgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9jb21tb24vdHVwZGVzYy5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9jb21tb24vdHVwZGVzYy5jCkBAIC0xMTQsNiArMTE0LDcg QEAgQ3JlYXRlVHVwbGVEZXNjQ29weShUdXBsZURlc2MgdHVwZGVzYykKIAkJ YXR0LT5hdHRub3RudWxsID0gZmFsc2U7CiAJCWF0dC0+YXR0aGFzZGVmID0g ZmFsc2U7CiAJCWF0dC0+YXR0aWRlbnRpdHkgPSAnXDAnOworCQlhdHQtPmF0 dGdlbmVyYXRlZCA9ICdcMCc7CiAJfQogCiAJZGVzYy0+dGR0eXBlaWQgPSB0 dXBkZXNjLT50ZHR5cGVpZDsKQEAgLTIyNiw2ICsyMjcsNyBAQCBUdXBsZURl c2NDb3B5RW50cnkoVHVwbGVEZXNjIGRzdCwgQXR0ck51bWJlciBkc3RBdHRu bywKIAlkc3RBdHQtPmF0dG5vdG51bGwgPSBmYWxzZTsKIAlkc3RBdHQtPmF0 dGhhc2RlZiA9IGZhbHNlOwogCWRzdEF0dC0+YXR0aWRlbnRpdHkgPSAnXDAn OworCWRzdEF0dC0+YXR0Z2VuZXJhdGVkID0gJ1wwJzsKIH0KIAogLyoKQEAg LTM3Miw2ICszNzQsOCBAQCBlcXVhbFR1cGxlRGVzY3MoVHVwbGVEZXNjIHR1 cGRlc2MxLCBUdXBsZURlc2MgdHVwZGVzYzIpCiAJCQlyZXR1cm4gZmFsc2U7 CiAJCWlmIChhdHRyMS0+YXR0aWRlbnRpdHkgIT0gYXR0cjItPmF0dGlkZW50 aXR5KQogCQkJcmV0dXJuIGZhbHNlOworCQlpZiAoYXR0cjEtPmF0dGdlbmVy YXRlZCAhPSBhdHRyMi0+YXR0Z2VuZXJhdGVkKQorCQkJcmV0dXJuIGZhbHNl OwogCQlpZiAoYXR0cjEtPmF0dGlzZHJvcHBlZCAhPSBhdHRyMi0+YXR0aXNk cm9wcGVkKQogCQkJcmV0dXJuIGZhbHNlOwogCQlpZiAoYXR0cjEtPmF0dGlz bG9jYWwgIT0gYXR0cjItPmF0dGlzbG9jYWwpCkBAIC01MzEsNiArNTM1LDcg QEAgVHVwbGVEZXNjSW5pdEVudHJ5KFR1cGxlRGVzYyBkZXNjLAogCWF0dC0+ YXR0bm90bnVsbCA9IGZhbHNlOwogCWF0dC0+YXR0aGFzZGVmID0gZmFsc2U7 CiAJYXR0LT5hdHRpZGVudGl0eSA9ICdcMCc7CisJYXR0LT5hdHRnZW5lcmF0 ZWQgPSAnXDAnOwogCWF0dC0+YXR0aXNkcm9wcGVkID0gZmFsc2U7CiAJYXR0 LT5hdHRpc2xvY2FsID0gdHJ1ZTsKIAlhdHQtPmF0dGluaGNvdW50ID0gMDsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvZ2VuYmtpLnBsIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9nZW5ia2kucGwKaW5kZXggMmVlYmIwNjFi Ny4uOGEyYjc5ZTk3MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9nZW5ia2kucGwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9nZW5ia2ku cGwKQEAgLTQ0Niw2ICs0NDYsNyBAQCBzdWIgZW1pdF9wZ2F0dHJfcm93CiAJ CWF0dHR5cG1vZCAgICAgPT4gJy0xJywKIAkJYXR0aGFzZGVmICAgICA9PiAn ZicsCiAJCWF0dGlkZW50aXR5ICAgPT4gJycsCisJCWF0dGdlbmVyYXRlZCAg PT4gJycsCiAJCWF0dGlzZHJvcHBlZCAgPT4gJ2YnLAogCQlhdHRpc2xvY2Fs ICAgID0+ICd0JywKIAkJYXR0aW5oY291bnQgICA9PiAnMCcsCkBAIC00NzUs MTIgKzQ3NiwxNCBAQCBzdWIgZW1pdF9zY2hlbWFwZ19yb3cKIAogCSMgUmVw bGFjZSBlbXB0eSBzdHJpbmcgYnkgemVybyBjaGFyIGNvbnN0YW50CiAJJHJv dy0+e2F0dGlkZW50aXR5fSB8fD0gJ1wwJzsKKwkkcm93LT57YXR0Z2VuZXJh dGVkfSB8fD0gJ1wwJzsKIAogCSMgU3VwcGx5IGFwcHJvcHJpYXRlIHF1b3Rp bmcgZm9yIHRoZXNlIGZpZWxkcy4KIAkkcm93LT57YXR0bmFtZX0gICAgID0g cXx7InwgLiAkcm93LT57YXR0bmFtZX0gLiBxfCJ9fDsKIAkkcm93LT57YXR0 c3RvcmFnZX0gID0gcXwnfCAuICRyb3ctPnthdHRzdG9yYWdlfSAuIHF8J3w7 CiAJJHJvdy0+e2F0dGFsaWdufSAgICA9IHF8J3wgLiAkcm93LT57YXR0YWxp Z259IC4gcXwnfDsKIAkkcm93LT57YXR0aWRlbnRpdHl9ID0gcXwnfCAuICRy b3ctPnthdHRpZGVudGl0eX0gLiBxfCd8OworCSRyb3ctPnthdHRnZW5lcmF0 ZWR9ID0gcXwnfCAuICRyb3ctPnthdHRnZW5lcmF0ZWR9IC4gcXwnfDsKIAog CSMgV2UgZG9uJ3QgZW1pdCBpbml0aWFsaXplcnMgZm9yIHRoZSB2YXJpYWJs ZSBsZW5ndGggZmllbGRzIGF0IGFsbC4KIAkjIE9ubHkgdGhlIGZpeGVkLXNp emUgcG9ydGlvbnMgb2YgdGhlIGRlc2NyaXB0b3JzIGFyZSBldmVyIHVzZWQu CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCmluZGV4IDQ1ZWU5YWM4YjkuLjQ0 MWVmN2Q2MzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVh cC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCkBAIC02Nyw2 ICs2Nyw3IEBACiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2NvbGxhdGUuaCIK ICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfZXhwci5oIgogI2luY2x1ZGUgInBh cnNlci9wYXJzZV9yZWxhdGlvbi5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJz ZXRyZWUuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRl ICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc21n ci5oIgpAQCAtMTQ0LDM3ICsxNDUsMzcgQEAgc3RhdGljIExpc3QgKmluc2Vy dF9vcmRlcmVkX3VuaXF1ZV9vaWQoTGlzdCAqbGlzdCwgT2lkIGRhdHVtKTsK IHN0YXRpYyBGb3JtRGF0YV9wZ19hdHRyaWJ1dGUgYTEgPSB7CiAJMCwgeyJj dGlkIn0sIFRJRE9JRCwgMCwgc2l6ZW9mKEl0ZW1Qb2ludGVyRGF0YSksCiAJ U2VsZkl0ZW1Qb2ludGVyQXR0cmlidXRlTnVtYmVyLCAwLCAtMSwgLTEsCi0J ZmFsc2UsICdwJywgJ3MnLCB0cnVlLCBmYWxzZSwgJ1wwJywgZmFsc2UsIHRy dWUsIDAKKwlmYWxzZSwgJ3AnLCAncycsIHRydWUsIGZhbHNlLCAnXDAnLCAn XDAnLCBmYWxzZSwgdHJ1ZSwgMAogfTsKIAogc3RhdGljIEZvcm1EYXRhX3Bn X2F0dHJpYnV0ZSBhMiA9IHsKIAkwLCB7Im9pZCJ9LCBPSURPSUQsIDAsIHNp emVvZihPaWQpLAogCU9iamVjdElkQXR0cmlidXRlTnVtYmVyLCAwLCAtMSwg LTEsCi0JdHJ1ZSwgJ3AnLCAnaScsIHRydWUsIGZhbHNlLCAnXDAnLCBmYWxz ZSwgdHJ1ZSwgMAorCXRydWUsICdwJywgJ2knLCB0cnVlLCBmYWxzZSwgJ1ww JywgJ1wwJywgZmFsc2UsIHRydWUsIDAKIH07CiAKIHN0YXRpYyBGb3JtRGF0 YV9wZ19hdHRyaWJ1dGUgYTMgPSB7CiAJMCwgeyJ4bWluIn0sIFhJRE9JRCwg MCwgc2l6ZW9mKFRyYW5zYWN0aW9uSWQpLAogCU1pblRyYW5zYWN0aW9uSWRB dHRyaWJ1dGVOdW1iZXIsIDAsIC0xLCAtMSwKLQl0cnVlLCAncCcsICdpJywg dHJ1ZSwgZmFsc2UsICdcMCcsIGZhbHNlLCB0cnVlLCAwCisJdHJ1ZSwgJ3An LCAnaScsIHRydWUsIGZhbHNlLCAnXDAnLCAnXDAnLCBmYWxzZSwgdHJ1ZSwg MAogfTsKIAogc3RhdGljIEZvcm1EYXRhX3BnX2F0dHJpYnV0ZSBhNCA9IHsK IAkwLCB7ImNtaW4ifSwgQ0lET0lELCAwLCBzaXplb2YoQ29tbWFuZElkKSwK IAlNaW5Db21tYW5kSWRBdHRyaWJ1dGVOdW1iZXIsIDAsIC0xLCAtMSwKLQl0 cnVlLCAncCcsICdpJywgdHJ1ZSwgZmFsc2UsICdcMCcsIGZhbHNlLCB0cnVl LCAwCisJdHJ1ZSwgJ3AnLCAnaScsIHRydWUsIGZhbHNlLCAnXDAnLCAnXDAn LCBmYWxzZSwgdHJ1ZSwgMAogfTsKIAogc3RhdGljIEZvcm1EYXRhX3BnX2F0 dHJpYnV0ZSBhNSA9IHsKIAkwLCB7InhtYXgifSwgWElET0lELCAwLCBzaXpl b2YoVHJhbnNhY3Rpb25JZCksCiAJTWF4VHJhbnNhY3Rpb25JZEF0dHJpYnV0 ZU51bWJlciwgMCwgLTEsIC0xLAotCXRydWUsICdwJywgJ2knLCB0cnVlLCBm YWxzZSwgJ1wwJywgZmFsc2UsIHRydWUsIDAKKwl0cnVlLCAncCcsICdpJywg dHJ1ZSwgZmFsc2UsICdcMCcsICdcMCcsIGZhbHNlLCB0cnVlLCAwCiB9Owog CiBzdGF0aWMgRm9ybURhdGFfcGdfYXR0cmlidXRlIGE2ID0gewogCTAsIHsi Y21heCJ9LCBDSURPSUQsIDAsIHNpemVvZihDb21tYW5kSWQpLAogCU1heENv bW1hbmRJZEF0dHJpYnV0ZU51bWJlciwgMCwgLTEsIC0xLAotCXRydWUsICdw JywgJ2knLCB0cnVlLCBmYWxzZSwgJ1wwJywgZmFsc2UsIHRydWUsIDAKKwl0 cnVlLCAncCcsICdpJywgdHJ1ZSwgZmFsc2UsICdcMCcsICdcMCcsIGZhbHNl LCB0cnVlLCAwCiB9OwogCiAvKgpAQCAtMTg2LDcgKzE4Nyw3IEBAIHN0YXRp YyBGb3JtRGF0YV9wZ19hdHRyaWJ1dGUgYTYgPSB7CiBzdGF0aWMgRm9ybURh dGFfcGdfYXR0cmlidXRlIGE3ID0gewogCTAsIHsidGFibGVvaWQifSwgT0lE T0lELCAwLCBzaXplb2YoT2lkKSwKIAlUYWJsZU9pZEF0dHJpYnV0ZU51bWJl ciwgMCwgLTEsIC0xLAotCXRydWUsICdwJywgJ2knLCB0cnVlLCBmYWxzZSwg J1wwJywgZmFsc2UsIHRydWUsIDAKKwl0cnVlLCAncCcsICdpJywgdHJ1ZSwg ZmFsc2UsICdcMCcsICdcMCcsIGZhbHNlLCB0cnVlLCAwCiB9OwogCiBzdGF0 aWMgY29uc3QgRm9ybV9wZ19hdHRyaWJ1dGUgU3lzQXR0W10gPSB7JmExLCAm YTIsICZhMywgJmE0LCAmYTUsICZhNiwgJmE3fTsKQEAgLTYyNCw2ICs2MjUs NyBAQCBJbnNlcnRQZ0F0dHJpYnV0ZVR1cGxlKFJlbGF0aW9uIHBnX2F0dHJp YnV0ZV9yZWwsCiAJdmFsdWVzW0FudW1fcGdfYXR0cmlidXRlX2F0dG5vdG51 bGwgLSAxXSA9IEJvb2xHZXREYXR1bShuZXdfYXR0cmlidXRlLT5hdHRub3Ru dWxsKTsKIAl2YWx1ZXNbQW51bV9wZ19hdHRyaWJ1dGVfYXR0aGFzZGVmIC0g MV0gPSBCb29sR2V0RGF0dW0obmV3X2F0dHJpYnV0ZS0+YXR0aGFzZGVmKTsK IAl2YWx1ZXNbQW51bV9wZ19hdHRyaWJ1dGVfYXR0aWRlbnRpdHkgLSAxXSA9 IENoYXJHZXREYXR1bShuZXdfYXR0cmlidXRlLT5hdHRpZGVudGl0eSk7CisJ dmFsdWVzW0FudW1fcGdfYXR0cmlidXRlX2F0dGdlbmVyYXRlZCAtIDFdID0g Q2hhckdldERhdHVtKG5ld19hdHRyaWJ1dGUtPmF0dGdlbmVyYXRlZCk7CiAJ dmFsdWVzW0FudW1fcGdfYXR0cmlidXRlX2F0dGlzZHJvcHBlZCAtIDFdID0g Qm9vbEdldERhdHVtKG5ld19hdHRyaWJ1dGUtPmF0dGlzZHJvcHBlZCk7CiAJ dmFsdWVzW0FudW1fcGdfYXR0cmlidXRlX2F0dGlzbG9jYWwgLSAxXSA9IEJv b2xHZXREYXR1bShuZXdfYXR0cmlidXRlLT5hdHRpc2xvY2FsKTsKIAl2YWx1 ZXNbQW51bV9wZ19hdHRyaWJ1dGVfYXR0aW5oY291bnQgLSAxXSA9IEludDMy R2V0RGF0dW0obmV3X2F0dHJpYnV0ZS0+YXR0aW5oY291bnQpOwpAQCAtMTkw MSw3ICsxOTAzLDcgQEAgaGVhcF9kcm9wX3dpdGhfY2F0YWxvZyhPaWQgcmVs aWQpCiAgKi8KIE9pZAogU3RvcmVBdHRyRGVmYXVsdChSZWxhdGlvbiByZWws IEF0dHJOdW1iZXIgYXR0bnVtLAotCQkJCSBOb2RlICpleHByLCBib29sIGlz X2ludGVybmFsKQorCQkJCSBOb2RlICpleHByLCBib29sIGlzX2ludGVybmFs LCBib29sIGdlbmVyYXRlZF9jb2wpCiB7CiAJY2hhcgkgICAqYWRiaW47CiAJ Y2hhcgkgICAqYWRzcmM7CkBAIC0xOTg4LDcgKzE5OTAsMjIgQEAgU3RvcmVB dHRyRGVmYXVsdChSZWxhdGlvbiByZWwsIEF0dHJOdW1iZXIgYXR0bnVtLAog CS8qCiAJICogUmVjb3JkIGRlcGVuZGVuY2llcyBvbiBvYmplY3RzIHVzZWQg aW4gdGhlIGV4cHJlc3Npb24sIHRvby4KIAkgKi8KLQlyZWNvcmREZXBlbmRl bmN5T25FeHByKCZkZWZvYmplY3QsIGV4cHIsIE5JTCwgREVQRU5ERU5DWV9O T1JNQUwpOworCWlmIChnZW5lcmF0ZWRfY29sKQorCQkvKgorCQkgKiBHZW5l cmF0ZWQgY29sdW1uOiBEcm9wcGluZyBhbnl0aGluZyB0aGF0IHRoZSBnZW5l cmF0aW9uIGV4cHJlc3Npb24KKwkJICogcmVmZXJzIGF1dG9tYXRpY2FsbHkg ZHJvcHMgdGhlIGdlbmVyYXRlZCBjb2x1bW4uCisJCSAqLworCQlyZWNvcmRE ZXBlbmRlbmN5T25TaW5nbGVSZWxFeHByKCZjb2xvYmplY3QsIGV4cHIsIFJl bGF0aW9uR2V0UmVsaWQocmVsKSwKKwkJCQkJCQkJCQlERVBFTkRFTkNZX0FV VE8sCisJCQkJCQkJCQkJREVQRU5ERU5DWV9BVVRPLCBmYWxzZSk7CisJZWxz ZQorCQkvKgorCQkgKiBOb3JtYWwgZGVmYXVsdDogRHJvcHBpbmcgYW55dGhp bmcgdGhhdCB0aGUgZGVmYXVsdCByZWZlcnMgdG8KKwkJICogcmVxdWlyZXMg Q0FTQ0FERSBhbmQgZHJvcHMgdGhlIGRlZmF1bHQgb25seS4KKwkJICovCisJ CXJlY29yZERlcGVuZGVuY3lPblNpbmdsZVJlbEV4cHIoJmRlZm9iamVjdCwg ZXhwciwgUmVsYXRpb25HZXRSZWxpZChyZWwpLAorCQkJCQkJCQkJCURFUEVO REVOQ1lfTk9STUFMLAorCQkJCQkJCQkJCURFUEVOREVOQ1lfTk9STUFMLCBm YWxzZSk7CiAKIAkvKgogCSAqIFBvc3QgY3JlYXRpb24gaG9vayBmb3IgYXR0 cmlidXRlIGRlZmF1bHRzLgpAQCAtMjE1Myw3ICsyMTcwLDcgQEAgU3RvcmVD b25zdHJhaW50cyhSZWxhdGlvbiByZWwsIExpc3QgKmNvb2tlZF9jb25zdHJh aW50cywgYm9vbCBpc19pbnRlcm5hbCkKIAkJewogCQkJY2FzZSBDT05TVFJf REVGQVVMVDoKIAkJCQljb24tPmNvbm9pZCA9IFN0b3JlQXR0ckRlZmF1bHQo cmVsLCBjb24tPmF0dG51bSwgY29uLT5leHByLAotCQkJCQkJCQkJCQkgICBp c19pbnRlcm5hbCk7CisJCQkJCQkJCQkJCSAgIGlzX2ludGVybmFsLCBmYWxz ZSk7CiAJCQkJYnJlYWs7CiAJCQljYXNlIENPTlNUUl9DSEVDSzoKIAkJCQlj b24tPmNvbm9pZCA9CkBAIC0yMjUyLDcgKzIyNjksOCBAQCBBZGRSZWxhdGlv bk5ld0NvbnN0cmFpbnRzKFJlbGF0aW9uIHJlbCwKIAogCQlleHByID0gY29v a0RlZmF1bHQocHN0YXRlLCBjb2xEZWYtPnJhd19kZWZhdWx0LAogCQkJCQkJ ICAgYXRwLT5hdHR0eXBpZCwgYXRwLT5hdHR0eXBtb2QsCi0JCQkJCQkgICBO YW1lU3RyKGF0cC0+YXR0bmFtZSkpOworCQkJCQkJICAgTmFtZVN0cihhdHAt PmF0dG5hbWUpLAorCQkJCQkJICAgYXRwLT5hdHRnZW5lcmF0ZWQpOwogCiAJ CS8qCiAJCSAqIElmIHRoZSBleHByZXNzaW9uIGlzIGp1c3QgYSBOVUxMIGNv bnN0YW50LCB3ZSBkbyBub3QgYm90aGVyIHRvIG1ha2UKQEAgLTIyNjksNyAr MjI4Nyw4IEBAIEFkZFJlbGF0aW9uTmV3Q29uc3RyYWludHMoUmVsYXRpb24g cmVsLAogCQkJKElzQShleHByLCBDb25zdCkgJiYoKENvbnN0ICopIGV4cHIp LT5jb25zdGlzbnVsbCkpCiAJCQljb250aW51ZTsKIAotCQlkZWZPaWQgPSBT dG9yZUF0dHJEZWZhdWx0KHJlbCwgY29sRGVmLT5hdHRudW0sIGV4cHIsIGlz X2ludGVybmFsKTsKKwkJZGVmT2lkID0gU3RvcmVBdHRyRGVmYXVsdChyZWws IGNvbERlZi0+YXR0bnVtLCBleHByLCBpc19pbnRlcm5hbCwKKwkJCQkJCQkJ ICAoYXRwLT5hdHRnZW5lcmF0ZWQgIT0gJ1wwJykpOwogCiAJCWNvb2tlZCA9 IChDb29rZWRDb25zdHJhaW50ICopIHBhbGxvYyhzaXplb2YoQ29va2VkQ29u c3RyYWludCkpOwogCQljb29rZWQtPmNvbnR5cGUgPSBDT05TVFJfREVGQVVM VDsKQEAgLTI2MTcsNiArMjYzNiw0NiBAQCBTZXRSZWxhdGlvbk51bUNoZWNr cyhSZWxhdGlvbiByZWwsIGludCBudW1jaGVja3MpCiAJaGVhcF9jbG9zZShy ZWxyZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwogfQogCisvKgorICogQ2hlY2sg Zm9yIHJlZmVyZW5jZXMgdG8gZ2VuZXJhdGVkIGNvbHVtbnMKKyAqLworc3Rh dGljIGJvb2wKK2NoZWNrX25lc3RlZF9nZW5lcmF0ZWRfd2Fsa2VyKE5vZGUg Km5vZGUsIHZvaWQgKmNvbnRleHQpCit7CisJUGFyc2VTdGF0ZSAqcHN0YXRl ID0gY29udGV4dDsKKworCWlmIChub2RlID09IE5VTEwpCisJCXJldHVybiBm YWxzZTsKKwllbHNlIGlmIChJc0Eobm9kZSwgVmFyKSkKKwl7CisJCVZhcgkJ ICAgKnZhciA9IChWYXIgKikgbm9kZTsKKwkJT2lkCQkJcmVsaWQ7CisJCUF0 dHJOdW1iZXIJYXR0bnVtOworCisJCXJlbGlkID0gZ2V0cmVsaWQodmFyLT52 YXJubywgcHN0YXRlLT5wX3J0YWJsZSk7CisJCWF0dG51bSA9IHZhci0+dmFy YXR0bm87CisKKwkJaWYgKHJlbGlkICYmIGF0dG51bSAmJiBnZXRfYXR0Z2Vu ZXJhdGVkKHJlbGlkLCBhdHRudW0pKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkgZXJy bXNnKCJjYW5ub3QgdXNlIGdlbmVyYXRlZCBjb2x1bW4gXCIlc1wiIGluIGNv bHVtbiBnZW5lcmF0aW9uIGV4cHJlc3Npb24iLAorCQkJCQkJCWdldF9hdHRu YW1lKHJlbGlkLCBhdHRudW0pKSwKKwkJCQkJIGVycmRldGFpbCgiQSBnZW5l cmF0ZWQgY29sdW1uIGNhbm5vdCByZWZlcmVuY2UgYW5vdGhlciBnZW5lcmF0 ZWQgY29sdW1uLiIpLAorCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0 ZSwgdmFyLT5sb2NhdGlvbikpKTsKKworCQlyZXR1cm4gZmFsc2U7CisJfQor CWVsc2UKKwkJcmV0dXJuIGV4cHJlc3Npb25fdHJlZV93YWxrZXIobm9kZSwg Y2hlY2tfbmVzdGVkX2dlbmVyYXRlZF93YWxrZXIsCisJCQkJCQkJCQkgICh2 b2lkICopIGNvbnRleHQpOworfQorCitzdGF0aWMgdm9pZAorY2hlY2tfbmVz dGVkX2dlbmVyYXRlZChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKm5vZGUp Cit7CisJY2hlY2tfbmVzdGVkX2dlbmVyYXRlZF93YWxrZXIobm9kZSwgcHN0 YXRlKTsKK30KKwogLyoKICAqIFRha2UgYSByYXcgZGVmYXVsdCBhbmQgY29u dmVydCBpdCB0byBhIGNvb2tlZCBmb3JtYXQgcmVhZHkgZm9yCiAgKiBzdG9y YWdlLgpAQCAtMjYzNCw3ICsyNjkzLDggQEAgY29va0RlZmF1bHQoUGFyc2VT dGF0ZSAqcHN0YXRlLAogCQkJTm9kZSAqcmF3X2RlZmF1bHQsCiAJCQlPaWQg YXR0dHlwaWQsCiAJCQlpbnQzMiBhdHR0eXBtb2QsCi0JCQljaGFyICphdHRu YW1lKQorCQkJY2hhciAqYXR0bmFtZSwKKwkJCWNoYXIgYXR0Z2VuZXJhdGVk KQogewogCU5vZGUJICAgKmV4cHI7CiAKQEAgLTI2NDMsMTcgKzI3MDMsMjAg QEAgY29va0RlZmF1bHQoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCS8qCiAJICog VHJhbnNmb3JtIHJhdyBwYXJzZXRyZWUgdG8gZXhlY3V0YWJsZSBleHByZXNz aW9uLgogCSAqLwotCWV4cHIgPSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwgcmF3 X2RlZmF1bHQsIEVYUFJfS0lORF9DT0xVTU5fREVGQVVMVCk7CisJZXhwciA9 IHRyYW5zZm9ybUV4cHIocHN0YXRlLCByYXdfZGVmYXVsdCwgYXR0Z2VuZXJh dGVkID8gRVhQUl9LSU5EX0dFTkVSQVRFRF9DT0xVTU4gOiBFWFBSX0tJTkRf Q09MVU1OX0RFRkFVTFQpOwogCiAJLyoKIAkgKiBNYWtlIHN1cmUgZGVmYXVs dCBleHByIGRvZXMgbm90IHJlZmVyIHRvIGFueSB2YXJzICh3ZSBuZWVkIHRo aXMgY2hlY2sKIAkgKiBzaW5jZSB0aGUgcHN0YXRlIGluY2x1ZGVzIHRoZSB0 YXJnZXQgdGFibGUpLgogCSAqLwotCWlmIChjb250YWluX3Zhcl9jbGF1c2Uo ZXhwcikpCisJaWYgKCFhdHRnZW5lcmF0ZWQgJiYgY29udGFpbl92YXJfY2xh dXNlKGV4cHIpKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9DT0xVTU5fUkVGRVJFTkNFKSwKIAkJCQkgZXJybXNn KCJjYW5ub3QgdXNlIGNvbHVtbiByZWZlcmVuY2VzIGluIGRlZmF1bHQgZXhw cmVzc2lvbiIpKSk7CiAKKwlpZiAoYXR0Z2VuZXJhdGVkKQorCQljaGVja19u ZXN0ZWRfZ2VuZXJhdGVkKHBzdGF0ZSwgZXhwcik7CisKIAkvKgogCSAqIHRy YW5zZm9ybUV4cHIoKSBzaG91bGQgaGF2ZSBhbHJlYWR5IHJlamVjdGVkIHN1 YnF1ZXJpZXMsIGFnZ3JlZ2F0ZXMsCiAJICogd2luZG93IGZ1bmN0aW9ucywg YW5kIFNSRnMsIGJhc2VkIG9uIHRoZSBFWFBSX0tJTkRfIGZvciBhIGRlZmF1 bHQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCBjN2IyZjAzMWYw Li43YjhjYTJjZTZmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9n L2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBA IC0zNTQsNiArMzU0LDcgQEAgQ29uc3RydWN0VHVwbGVEZXNjcmlwdG9yKFJl bGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCXRvLT5hdHRub3RudWxsID0gZmFs c2U7CiAJCQl0by0+YXR0aGFzZGVmID0gZmFsc2U7CiAJCQl0by0+YXR0aWRl bnRpdHkgPSAnXDAnOworCQkJdG8tPmF0dGdlbmVyYXRlZCA9ICdcMCc7CiAJ CQl0by0+YXR0aXNsb2NhbCA9IHRydWU7CiAJCQl0by0+YXR0aW5oY291bnQg PSAwOwogCQkJdG8tPmF0dGNvbGxhdGlvbiA9IGNvbGxhdGlvbk9iamVjdElk W2ldOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmZvcm1h dGlvbl9zY2hlbWEuc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmZvcm1h dGlvbl9zY2hlbWEuc3FsCmluZGV4IDIzNmY2YmUzN2UuLmYwYzhiMmRlYzgg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5mb3JtYXRpb25f c2NoZW1hLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0 aW9uX3NjaGVtYS5zcWwKQEAgLTI5OSw3ICsyOTksNyBAQCBDUkVBVEUgVklF VyBhdHRyaWJ1dGVzIEFTCiAgICAgICAgICAgIENBU1QoYy5yZWxuYW1lIEFT IHNxbF9pZGVudGlmaWVyKSBBUyB1ZHRfbmFtZSwKICAgICAgICAgICAgQ0FT VChhLmF0dG5hbWUgQVMgc3FsX2lkZW50aWZpZXIpIEFTIGF0dHJpYnV0ZV9u YW1lLAogICAgICAgICAgICBDQVNUKGEuYXR0bnVtIEFTIGNhcmRpbmFsX251 bWJlcikgQVMgb3JkaW5hbF9wb3NpdGlvbiwKLSAgICAgICAgICAgQ0FTVChw Z19nZXRfZXhwcihhZC5hZGJpbiwgYWQuYWRyZWxpZCkgQVMgY2hhcmFjdGVy X2RhdGEpIEFTIGF0dHJpYnV0ZV9kZWZhdWx0LAorICAgICAgICAgICBDQVNU KHBnX2dldF9leHByKGFkLmFkYmluLCBhZC5hZHJlbGlkLCB0cnVlKSBBUyBj aGFyYWN0ZXJfZGF0YSkgQVMgYXR0cmlidXRlX2RlZmF1bHQsCiAgICAgICAg ICAgIENBU1QoQ0FTRSBXSEVOIGEuYXR0bm90bnVsbCBPUiAodC50eXB0eXBl ID0gJ2QnIEFORCB0LnR5cG5vdG51bGwpIFRIRU4gJ05PJyBFTFNFICdZRVMn IEVORAogICAgICAgICAgICAgIEFTIHllc19vcl9ubykKICAgICAgICAgICAg ICBBUyBpc19udWxsYWJsZSwgLS0gVGhpcyBjb2x1bW4gd2FzIGFwcGFyZW50 bHkgcmVtb3ZlZCBiZXR3ZWVuIFNRTDoyMDAzIGFuZCBTUUw6MjAwOC4KQEAg LTY1Niw3ICs2NTYsNyBAQCBDUkVBVEUgVklFVyBjb2x1bW5zIEFTCiAgICAg ICAgICAgIENBU1QoYy5yZWxuYW1lIEFTIHNxbF9pZGVudGlmaWVyKSBBUyB0 YWJsZV9uYW1lLAogICAgICAgICAgICBDQVNUKGEuYXR0bmFtZSBBUyBzcWxf aWRlbnRpZmllcikgQVMgY29sdW1uX25hbWUsCiAgICAgICAgICAgIENBU1Qo YS5hdHRudW0gQVMgY2FyZGluYWxfbnVtYmVyKSBBUyBvcmRpbmFsX3Bvc2l0 aW9uLAotICAgICAgICAgICBDQVNUKHBnX2dldF9leHByKGFkLmFkYmluLCBh ZC5hZHJlbGlkKSBBUyBjaGFyYWN0ZXJfZGF0YSkgQVMgY29sdW1uX2RlZmF1 bHQsCisgICAgICAgICAgIENBU1QoQ0FTRSBXSEVOIGEuYXR0Z2VuZXJhdGVk ID0gJycgVEhFTiBwZ19nZXRfZXhwcihhZC5hZGJpbiwgYWQuYWRyZWxpZCwg dHJ1ZSkgRU5EIEFTIGNoYXJhY3Rlcl9kYXRhKSBBUyBjb2x1bW5fZGVmYXVs dCwKICAgICAgICAgICAgQ0FTVChDQVNFIFdIRU4gYS5hdHRub3RudWxsIE9S ICh0LnR5cHR5cGUgPSAnZCcgQU5EIHQudHlwbm90bnVsbCkgVEhFTiAnTk8n IEVMU0UgJ1lFUycgRU5ECiAgICAgICAgICAgICAgQVMgeWVzX29yX25vKQog ICAgICAgICAgICAgIEFTIGlzX251bGxhYmxlLApAQCAtNzQ1LDggKzc0NSw4 IEBAIENSRUFURSBWSUVXIGNvbHVtbnMgQVMKICAgICAgICAgICAgQ0FTVChz ZXEuc2VxbWluIEFTIGNoYXJhY3Rlcl9kYXRhKSBBUyBpZGVudGl0eV9taW5p bXVtLAogICAgICAgICAgICBDQVNUKENBU0UgV0hFTiBzZXEuc2VxY3ljbGUg VEhFTiAnWUVTJyBFTFNFICdOTycgRU5EIEFTIHllc19vcl9ubykgQVMgaWRl bnRpdHlfY3ljbGUsCiAKLSAgICAgICAgICAgQ0FTVCgnTkVWRVInIEFTIGNo YXJhY3Rlcl9kYXRhKSBBUyBpc19nZW5lcmF0ZWQsCi0gICAgICAgICAgIENB U1QobnVsbCBBUyBjaGFyYWN0ZXJfZGF0YSkgQVMgZ2VuZXJhdGlvbl9leHBy ZXNzaW9uLAorICAgICAgICAgICBDQVNUKENBU0UgV0hFTiBhLmF0dGdlbmVy YXRlZCA8PiAnJyBUSEVOICdBTFdBWVMnIEVMU0UgJ05FVkVSJyBFTkQgQVMg Y2hhcmFjdGVyX2RhdGEpIEFTIGlzX2dlbmVyYXRlZCwKKyAgICAgICAgICAg Q0FTVChDQVNFIFdIRU4gYS5hdHRnZW5lcmF0ZWQgPD4gJycgVEhFTiBwZ19n ZXRfZXhwcihhZC5hZGJpbiwgYWQuYWRyZWxpZCwgdHJ1ZSkgRU5EIEFTIGNo YXJhY3Rlcl9kYXRhKSBBUyBnZW5lcmF0aW9uX2V4cHJlc3Npb24sCiAKICAg ICAgICAgICAgQ0FTVChDQVNFIFdIRU4gYy5yZWxraW5kIElOICgncicsICdw JykgT1IKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGMucmVsa2luZCBJ TiAoJ3YnLCAnZicpIEFORApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCmlu ZGV4IGNmYTNmMDU5YzIuLjEzZTJhMTVkODYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NvcHkuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9jb3B5LmMKQEAgLTMwMzksMTIgKzMwMzksMTIgQEAgQmVnaW5Db3B5 RnJvbShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCWZtZ3JfaW5mbyhpbl9mdW5j X29pZCwgJmluX2Z1bmN0aW9uc1thdHRudW0gLSAxXSk7CiAKIAkJLyogR2V0 IGRlZmF1bHQgaW5mbyBpZiBuZWVkZWQgKi8KLQkJaWYgKCFsaXN0X21lbWJl cl9pbnQoY3N0YXRlLT5hdHRudW1saXN0LCBhdHRudW0pKQorCQlpZiAoIWxp c3RfbWVtYmVyX2ludChjc3RhdGUtPmF0dG51bWxpc3QsIGF0dG51bSkgJiYg IWF0dC0+YXR0Z2VuZXJhdGVkKQogCQl7CiAJCQkvKiBhdHRyaWJ1dGUgaXMg Tk9UIHRvIGJlIGNvcGllZCBmcm9tIGlucHV0ICovCiAJCQkvKiB1c2UgZGVm YXVsdCB2YWx1ZSBpZiBvbmUgZXhpc3RzICovCiAJCQlFeHByCSAgICpkZWZl eHByID0gKEV4cHIgKikgYnVpbGRfY29sdW1uX2RlZmF1bHQoY3N0YXRlLT5y ZWwsCi0JCQkJCQkJCQkJCQkJCQkJYXR0bnVtKTsKKwkJCQkJCQkJCQkJCQkJ CQlhdHRudW0sIHRydWUpOwogCiAJCQlpZiAoZGVmZXhwciAhPSBOVUxMKQog CQkJewpAQCAtNDcxOSw2ICs0NzE5LDggQEAgQ29weUdldEF0dG51bXMoVHVw bGVEZXNjIHR1cERlc2MsIFJlbGF0aW9uIHJlbCwgTGlzdCAqYXR0bmFtZWxp c3QpCiAJCXsKIAkJCWlmIChUdXBsZURlc2NBdHRyKHR1cERlc2MsIGkpLT5h dHRpc2Ryb3BwZWQpCiAJCQkJY29udGludWU7CisJCQlpZiAoVHVwbGVEZXNj QXR0cih0dXBEZXNjLCBpKS0+YXR0Z2VuZXJhdGVkKQorCQkJCWNvbnRpbnVl OwkJLyogVE9ETzogY291bGQgYmUgYSBDT1BZIG9wdGlvbiAqLwogCQkJYXR0 bnVtcyA9IGxhcHBlbmRfaW50KGF0dG51bXMsIGkgKyAxKTsKIAkJfQogCX0K QEAgLTQ3NDMsNiArNDc0NSwxMiBAQCBDb3B5R2V0QXR0bnVtcyhUdXBsZURl c2MgdHVwRGVzYywgUmVsYXRpb24gcmVsLCBMaXN0ICphdHRuYW1lbGlzdCkK IAkJCQkJY29udGludWU7CiAJCQkJaWYgKG5hbWVzdHJjbXAoJihhdHQtPmF0 dG5hbWUpLCBuYW1lKSA9PSAwKQogCQkJCXsKKwkJCQkJaWYgKGF0dC0+YXR0 Z2VuZXJhdGVkKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX0NPTFVNTl9SRUZFUkVOQ0UpLAorCQkJ CQkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIGlzIGEgZ2VuZXJhdGVkIGNv bHVtbiIsCisJCQkJCQkJCQkJbmFtZSksCisJCQkJCQkJCSBlcnJkZXRhaWwo IkdlbmVyYXRlZCBjb2x1bW5zIGNhbm5vdCBiZSB1c2VkIGluIENPUFkuIikp KTsKIAkJCQkJYXR0bnVtID0gYXR0LT5hdHRudW07CiAJCQkJCWJyZWFrOwog CQkJCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4 Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5k ZXggYjYxYWFhYzI4NC4uNjU1YTU4ZTRkOCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTU5Niw2ICs1OTYsOCBAQCBEZWZp bmVJbmRleChPaWQgcmVsYXRpb25JZCwKIAkvKgogCSAqIFdlIGRpc2FsbG93 IGluZGV4ZXMgb24gc3lzdGVtIGNvbHVtbnMgb3RoZXIgdGhhbiBPSUQuICBU aGV5IHdvdWxkIG5vdAogCSAqIG5lY2Vzc2FyaWx5IGdldCB1cGRhdGVkIGNv cnJlY3RseSwgYW5kIHRoZXkgZG9uJ3Qgc2VlbSB1c2VmdWwgYW55d2F5Lgor CSAqCisJICogQWxzbyBkaXNhbGxvdyBnZW5lcmF0ZWQgY29sdW1ucyBpbiBp bmRleGVzLiAoY291bGQgYmUgaW1wbGVtZW50ZWQpCiAJICovCiAJZm9yIChp ID0gMDsgaSA8IGluZGV4SW5mby0+aWlfTnVtSW5kZXhBdHRyczsgaSsrKQog CXsKQEAgLTYwNSwxMCArNjA3LDE2IEBAIERlZmluZUluZGV4KE9pZCByZWxh dGlvbklkLAogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCQkgZXJybXNnKCJp bmRleCBjcmVhdGlvbiBvbiBzeXN0ZW0gY29sdW1ucyBpcyBub3Qgc3VwcG9y dGVkIikpKTsKKworCQlpZiAoZ2V0X2F0dGdlbmVyYXRlZChyZWxhdGlvbklk LCBhdHRubykpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShF UlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCSBlcnJtc2co ImluZGV4IGNyZWF0aW9uIG9uIGdlbmVyYXRlZCBjb2x1bW5zIGlzIG5vdCBz dXBwb3J0ZWQiKSkpOwogCX0KIAogCS8qCi0JICogQWxzbyBjaGVjayBmb3Ig c3lzdGVtIGNvbHVtbnMgdXNlZCBpbiBleHByZXNzaW9ucyBvciBwcmVkaWNh dGVzLgorCSAqIEFsc28gY2hlY2sgZm9yIHN5c3RlbSBhbmQgZ2VuZXJhdGVk IGNvbHVtbnMgdXNlZCBpbiBleHByZXNzaW9ucyBvcgorCSAqIHByZWRpY2F0 ZXMuCiAJICovCiAJaWYgKGluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnMgfHwg aW5kZXhJbmZvLT5paV9QcmVkaWNhdGUpCiAJewpAQCAtNjE3LDE0ICs2MjUs MjAgQEAgRGVmaW5lSW5kZXgoT2lkIHJlbGF0aW9uSWQsCiAJCXB1bGxfdmFy YXR0bm9zKChOb2RlICopIGluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnMsIDEs ICZpbmRleGF0dHJzKTsKIAkJcHVsbF92YXJhdHRub3MoKE5vZGUgKikgaW5k ZXhJbmZvLT5paV9QcmVkaWNhdGUsIDEsICZpbmRleGF0dHJzKTsKIAotCQlm b3IgKGkgPSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyICsg MTsgaSA8IDA7IGkrKykKKwkJaSA9IC0xOworCQl3aGlsZSAoKGkgPSBibXNf bmV4dF9tZW1iZXIoaW5kZXhhdHRycywgaSkpID49IDApCiAJCXsKLQkJCWlm IChpICE9IE9iamVjdElkQXR0cmlidXRlTnVtYmVyICYmCi0JCQkJYm1zX2lz X21lbWJlcihpIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJl ciwKLQkJCQkJCQkgIGluZGV4YXR0cnMpKQorCQkJQXR0ck51bWJlcglhdHRu byA9IGkgKyBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyOwor CisJCQlpZiAoYXR0bm8gPCAwICYmIGF0dG5vICE9IE9iamVjdElkQXR0cmli dXRlTnVtYmVyKQogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkoZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJCQkgZXJy bXNnKCJpbmRleCBjcmVhdGlvbiBvbiBzeXN0ZW0gY29sdW1ucyBpcyBub3Qg c3VwcG9ydGVkIikpKTsKKworCQkJaWYgKGdldF9hdHRnZW5lcmF0ZWQocmVs YXRpb25JZCwgYXR0bm8pKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQko ZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJ CQkgZXJybXNnKCJpbmRleCBjcmVhdGlvbiBvbiBnZW5lcmF0ZWQgY29sdW1u cyBpcyBub3Qgc3VwcG9ydGVkIikpKTsKIAkJfQogCX0KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCAwZjA4MjQ1YTY3Li42 MGNkZDkzNmIzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNt ZHMuYwpAQCAtNzIyLDYgKzcyMiw5IEBAIERlZmluZVJlbGF0aW9uKENyZWF0 ZVN0bXQgKnN0bXQsIGNoYXIgcmVsa2luZCwgT2lkIG93bmVySWQsCiAKIAkJ aWYgKGNvbERlZi0+aWRlbnRpdHkpCiAJCQlhdHRyLT5hdHRpZGVudGl0eSA9 IGNvbERlZi0+aWRlbnRpdHk7CisKKwkJaWYgKGNvbERlZi0+Z2VuZXJhdGVk KQorCQkJYXR0ci0+YXR0Z2VuZXJhdGVkID0gY29sRGVmLT5nZW5lcmF0ZWQ7 CiAJfQogCiAJLyoKQEAgLTUyNzAsNiArNTI3Myw3IEBAIEFURXhlY0FkZENv bHVtbihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJl bGF0aW9uIHJlbCwKIAlhdHRyaWJ1dGUuYXR0bm90bnVsbCA9IGNvbERlZi0+ aXNfbm90X251bGw7CiAJYXR0cmlidXRlLmF0dGhhc2RlZiA9IGZhbHNlOwog CWF0dHJpYnV0ZS5hdHRpZGVudGl0eSA9IGNvbERlZi0+aWRlbnRpdHk7CisJ YXR0cmlidXRlLmF0dGdlbmVyYXRlZCA9IGNvbERlZi0+Z2VuZXJhdGVkOwog CWF0dHJpYnV0ZS5hdHRpc2Ryb3BwZWQgPSBmYWxzZTsKIAlhdHRyaWJ1dGUu YXR0aXNsb2NhbCA9IGNvbERlZi0+aXNfbG9jYWw7CiAJYXR0cmlidXRlLmF0 dGluaGNvdW50ID0gY29sRGVmLT5pbmhjb3VudDsKQEAgLTUzNTUsNyArNTM1 OSw3IEBAIEFURXhlY0FkZENvbHVtbihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVk VGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAlpZiAocmVsa2luZCAh PSBSRUxLSU5EX1ZJRVcgJiYgcmVsa2luZCAhPSBSRUxLSU5EX0NPTVBPU0lU RV9UWVBFCiAJCSYmIHJlbGtpbmQgIT0gUkVMS0lORF9GT1JFSUdOX1RBQkxF ICYmIGF0dHJpYnV0ZS5hdHRudW0gPiAwKQogCXsKLQkJZGVmdmFsID0gKEV4 cHIgKikgYnVpbGRfY29sdW1uX2RlZmF1bHQocmVsLCBhdHRyaWJ1dGUuYXR0 bnVtKTsKKwkJZGVmdmFsID0gKEV4cHIgKikgYnVpbGRfY29sdW1uX2RlZmF1 bHQocmVsLCBhdHRyaWJ1dGUuYXR0bnVtLCB0cnVlKTsKIAogCQlpZiAoIWRl ZnZhbCAmJiBEb21haW5IYXNDb25zdHJhaW50cyh0eXBlT2lkKSkKIAkJewpA QCAtNzE0Nyw2ICs3MTUxLDQxIEBAIEFUQWRkRm9yZWlnbktleUNvbnN0cmFp bnQoQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJICov CiAJY2hlY2tGa2V5UGVybWlzc2lvbnMocGtyZWwsIHBrYXR0bnVtLCBudW1w a3MpOwogCisJLyoKKwkgKiBGb3JlaWduIGtleXMgb24gZ2VuZXJhdGVkIGNv bHVtbnMgYXJlIG5vdCB5ZXQgaW1wbGVtZW50ZWQuCisJICovCisJZm9yIChp ID0gMDsgaSA8IG51bXBrczsgaSsrKQorCXsKKwkJaWYgKGdldF9hdHRnZW5l cmF0ZWQoUmVsYXRpb25HZXRSZWxpZChwa3JlbCksIHBrYXR0bnVtW2ldKSkK KwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVB VFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJIGVycm1zZygiZm9yZWlnbiBr ZXkgY29uc3RyYWludHMgcmVmZXJlbmNpbmcgZ2VuZXJhdGVkIGNvbHVtbnMg YXJlIG5vdCBzdXBwb3J0ZWQiKSkpOworCX0KKwlmb3IgKGkgPSAwOyBpIDwg bnVtZmtzOyBpKyspCisJeworCQlpZiAoZ2V0X2F0dGdlbmVyYXRlZChSZWxh dGlvbkdldFJlbGlkKHJlbCksIGZrYXR0bnVtW2ldKSkKKwkJeworCQkJLyoK KwkJCSAqIENoZWNrIHJlc3RyaWN0aW9ucyBvbiBVUERBVEUvREVMRVRFIGFj dGlvbnMsIHBlciBTUUwgc3RhbmRhcmQKKwkJCSAqLworCQkJaWYgKGZrY29u c3RyYWludC0+ZmtfdXBkX2FjdGlvbiA9PSBGS0NPTlNUUl9BQ1RJT05fU0VU TlVMTCB8fAorCQkJCWZrY29uc3RyYWludC0+ZmtfdXBkX2FjdGlvbiA9PSBG S0NPTlNUUl9BQ1RJT05fU0VUREVGQVVMVCB8fAorCQkJCWZrY29uc3RyYWlu dC0+ZmtfdXBkX2FjdGlvbiA9PSBGS0NPTlNUUl9BQ1RJT05fQ0FTQ0FERSkK KwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9T WU5UQVhfRVJST1IpLAorCQkJCQkJIGVycm1zZygiaW52YWxpZCBPTiBVUERB VEUgYWN0aW9uIGZvciBmb3JlaWduIGtleSBjb25zdHJhaW50IGNvbnRhaW5p bmcgZ2VuZXJhdGVkIGNvbHVtbiIpKSk7CisJCQlpZiAoZmtjb25zdHJhaW50 LT5ma19kZWxfYWN0aW9uID09IEZLQ09OU1RSX0FDVElPTl9TRVROVUxMIHx8 CisJCQkJZmtjb25zdHJhaW50LT5ma19kZWxfYWN0aW9uID09IEZLQ09OU1RS X0FDVElPTl9TRVRERUZBVUxUKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkgZXJy bXNnKCJpbnZhbGlkIE9OIERFTEVURSBhY3Rpb24gZm9yIGZvcmVpZ24ga2V5 IGNvbnN0cmFpbnQgY29udGFpbmluZyBnZW5lcmF0ZWQgY29sdW1uIikpKTsK KworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9G RUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkgZXJybXNnKCJmb3JlaWdu IGtleSBjb25zdHJhaW50cyBvbiBnZW5lcmF0ZWQgY29sdW1ucyBhcmUgbm90 IHN1cHBvcnRlZCIpKSk7CisJCX0KKwl9CisKIAkvKgogCSAqIExvb2sgdXAg dGhlIGVxdWFsaXR5IG9wZXJhdG9ycyB0byB1c2UgaW4gdGhlIGNvbnN0cmFp bnQuCiAJICoKQEAgLTkwMzEsNyArOTA3MCw3IEBAIEFURXhlY0FsdGVyQ29s dW1uVHlwZShBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwK IAkgKi8KIAlpZiAoYXR0VHVwLT5hdHRoYXNkZWYpCiAJewotCQlkZWZhdWx0 ZXhwciA9IGJ1aWxkX2NvbHVtbl9kZWZhdWx0KHJlbCwgYXR0bnVtKTsKKwkJ ZGVmYXVsdGV4cHIgPSBidWlsZF9jb2x1bW5fZGVmYXVsdChyZWwsIGF0dG51 bSwgdHJ1ZSk7CiAJCUFzc2VydChkZWZhdWx0ZXhwcik7CiAJCWRlZmF1bHRl eHByID0gc3RyaXBfaW1wbGljaXRfY29lcmNpb25zKGRlZmF1bHRleHByKTsK IAkJZGVmYXVsdGV4cHIgPSBjb2VyY2VfdG9fdGFyZ2V0X3R5cGUoTlVMTCwJ Lyogbm8gVU5LTk9XTiBwYXJhbXMgKi8KQEAgLTkzNzIsNyArOTQxMSw3IEBA IEFURXhlY0FsdGVyQ29sdW1uVHlwZShBbHRlcmVkVGFibGVJbmZvICp0YWIs IFJlbGF0aW9uIHJlbCwKIAkJUmVtb3ZlQXR0ckRlZmF1bHQoUmVsYXRpb25H ZXRSZWxpZChyZWwpLCBhdHRudW0sIERST1BfUkVTVFJJQ1QsIHRydWUsCiAJ CQkJCQkgIHRydWUpOwogCi0JCVN0b3JlQXR0ckRlZmF1bHQocmVsLCBhdHRu dW0sIGRlZmF1bHRleHByLCB0cnVlKTsKKwkJU3RvcmVBdHRyRGVmYXVsdChy ZWwsIGF0dG51bSwgZGVmYXVsdGV4cHIsIHRydWUsIGZhbHNlKTsKIAl9CiAK IAlPYmplY3RBZGRyZXNzU3ViU2V0KGFkZHJlc3MsIFJlbGF0aW9uUmVsYXRp b25JZCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdn ZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwppbmRleCBk YTA4NTBiZmQ2Li44NTNkYjE2MmQyIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy90cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdHJpZ2dlci5jCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAicGFy c2VyL3BhcnNlX3JlbGF0aW9uLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNl dHJlZS5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInJld3Jp dGUvcmV3cml0ZUhhbmRsZXIuaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3Jp dGVNYW5pcC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9sbWdyLmgiCkBAIC0xMDAsNiArMTAxLDcgQEAgc3Rh dGljIHZvaWQgQWZ0ZXJUcmlnZ2VyU2F2ZUV2ZW50KEVTdGF0ZSAqZXN0YXRl LCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAogCQkJCQkgIExpc3QgKnJlY2hl Y2tJbmRleGVzLCBCaXRtYXBzZXQgKm1vZGlmaWVkQ29scywKIAkJCQkJICBU cmFuc2l0aW9uQ2FwdHVyZVN0YXRlICp0cmFuc2l0aW9uX2NhcHR1cmUpOwog c3RhdGljIHZvaWQgQWZ0ZXJUcmlnZ2VyRW5sYXJnZVF1ZXJ5U3RhdGUodm9p ZCk7CitzdGF0aWMgdm9pZCBjaGVja19tb2RpZmllZF92aXJ0dWFsX2dlbmVy YXRlZChUdXBsZURlc2MgdHVwZGVzYywgSGVhcFR1cGxlIHR1cGxlKTsKIAog CiAvKgpAQCAtNTM2LDYgKzUzOCwxMSBAQCBDcmVhdGVUcmlnZ2VyKENyZWF0 ZVRyaWdTdG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJ CQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQp LAogCQkJCQkJCQkgZXJybXNnKCJCRUZPUkUgdHJpZ2dlcidzIFdIRU4gY29u ZGl0aW9uIGNhbm5vdCByZWZlcmVuY2UgTkVXIHN5c3RlbSBjb2x1bW5zIiks CiAJCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCB2YXItPmxv Y2F0aW9uKSkpOworCQkJCQlpZiAoZ2V0X2F0dGdlbmVyYXRlZChSZWxhdGlv bkdldFJlbGlkKHJlbCksIHZhci0+dmFyYXR0bm8pICYmIFRSSUdHRVJfRk9S X0JFRk9SRSh0Z3R5cGUpKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAor CQkJCQkJCQkgZXJybXNnKCJCRUZPUkUgdHJpZ2dlcidzIFdIRU4gY29uZGl0 aW9uIGNhbm5vdCByZWZlcmVuY2UgTkVXIGdlbmVyYXRlZCBjb2x1bW5zIiks CisJCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCB2YXItPmxv Y2F0aW9uKSkpOwogCQkJCQlicmVhazsKIAkJCQlkZWZhdWx0OgogCQkJCQkv KiBjYW4ndCBoYXBwZW4gd2l0aG91dCBhZGRfbWlzc2luZ19mcm9tLCBzbyBq dXN0IGVsb2cgKi8KQEAgLTI0MDEsNiArMjQwOCw4IEBAIEV4ZWNCUkluc2Vy dFRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxp bmZvLAogCQlUdXBsZVRhYmxlU2xvdCAqbmV3c2xvdCA9IGVzdGF0ZS0+ZXNf dHJpZ190dXBsZV9zbG90OwogCQlUdXBsZURlc2MJdHVwZGVzYyA9IFJlbGF0 aW9uR2V0RGVzY3IocmVsaW5mby0+cmlfUmVsYXRpb25EZXNjKTsKIAorCQlj aGVja19tb2RpZmllZF92aXJ0dWFsX2dlbmVyYXRlZCh0dXBkZXNjLCBuZXd0 dXBsZSk7CisKIAkJaWYgKG5ld3Nsb3QtPnR0c190dXBsZURlc2NyaXB0b3Ig IT0gdHVwZGVzYykKIAkJCUV4ZWNTZXRTbG90RGVzY3JpcHRvcihuZXdzbG90 LCB0dXBkZXNjKTsKIAkJRXhlY1N0b3JlVHVwbGUobmV3dHVwbGUsIG5ld3Ns b3QsIEludmFsaWRCdWZmZXIsIGZhbHNlKTsKQEAgLTI4NzgsNiArMjg4Nyw4 IEBAIEV4ZWNCUlVwZGF0ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLCBFUFFT dGF0ZSAqZXBxc3RhdGUsCiAJCVR1cGxlVGFibGVTbG90ICpuZXdzbG90ID0g ZXN0YXRlLT5lc190cmlnX3R1cGxlX3Nsb3Q7CiAJCVR1cGxlRGVzYwl0dXBk ZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWxpbmZvLT5yaV9SZWxhdGlvbkRl c2MpOwogCisJCWNoZWNrX21vZGlmaWVkX3ZpcnR1YWxfZ2VuZXJhdGVkKHR1 cGRlc2MsIG5ld3R1cGxlKTsKKwogCQlpZiAobmV3c2xvdC0+dHRzX3R1cGxl RGVzY3JpcHRvciAhPSB0dXBkZXNjKQogCQkJRXhlY1NldFNsb3REZXNjcmlw dG9yKG5ld3Nsb3QsIHR1cGRlc2MpOwogCQlFeGVjU3RvcmVUdXBsZShuZXd0 dXBsZSwgbmV3c2xvdCwgSW52YWxpZEJ1ZmZlciwgZmFsc2UpOwpAQCAtMzI3 MCw2ICszMjgxLDcgQEAgVHJpZ2dlckVuYWJsZWQoRVN0YXRlICplc3RhdGUs IFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCiAKIAkJCW9sZENvbnRleHQgPSBN ZW1vcnlDb250ZXh0U3dpdGNoVG8oZXN0YXRlLT5lc19xdWVyeV9jeHQpOwog CQkJdGdxdWFsID0gc3RyaW5nVG9Ob2RlKHRyaWdnZXItPnRncXVhbCk7CisJ CQl0Z3F1YWwgPSAoTm9kZSAqKSBleHBhbmRfZ2VuZXJhdGVkX2NvbHVtbnNf aW5fZXhwcigoRXhwciAqKSB0Z3F1YWwsIHJlbGluZm8tPnJpX1JlbGF0aW9u RGVzYyk7CiAJCQkvKiBDaGFuZ2UgcmVmZXJlbmNlcyB0byBPTEQgYW5kIE5F VyB0byBJTk5FUl9WQVIgYW5kIE9VVEVSX1ZBUiAqLwogCQkJQ2hhbmdlVmFy Tm9kZXModGdxdWFsLCBQUlMyX09MRF9WQVJOTywgSU5ORVJfVkFSLCAwKTsK IAkJCUNoYW5nZVZhck5vZGVzKHRncXVhbCwgUFJTMl9ORVdfVkFSTk8sIE9V VEVSX1ZBUiwgMCk7CkBAIC01NDk5LDMgKzU1MTEsMjcgQEAgcGdfdHJpZ2dl cl9kZXB0aChQR19GVU5DVElPTl9BUkdTKQogewogCVBHX1JFVFVSTl9JTlQz MihNeVRyaWdnZXJEZXB0aCk7CiB9CisKKy8qCisgKiBDaGVjayB3aGV0aGVy IGEgdHJpZ2dlciBtb2RpZmllZCBhIHZpcnR1YWwgZ2VuZXJhdGVkIGNvbHVt biBhbmQgZXJyb3IgaWYKKyAqIHNvLgorICovCitzdGF0aWMgdm9pZAorY2hl Y2tfbW9kaWZpZWRfdmlydHVhbF9nZW5lcmF0ZWQoVHVwbGVEZXNjIHR1cGRl c2MsIEhlYXBUdXBsZSB0dXBsZSkKK3sKKwlpbnQJCQlpOworCisJZm9yIChp ID0gMDsgaSA8IHR1cGRlc2MtPm5hdHRzOyBpKyspCisJeworCQlpZiAoVHVw bGVEZXNjQXR0cih0dXBkZXNjLCBpKS0+YXR0Z2VuZXJhdGVkID09IEFUVFJJ QlVURV9HRU5FUkFURURfVklSVFVBTCkKKwkJeworCQkJYm9vbAkJaXNudWxs OworCisJCQlmYXN0Z2V0YXR0cih0dXBsZSwgaSArIDEsIHR1cGRlc2MsICZp c251bGwpOworCQkJaWYgKCFpc251bGwpCisJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRV9SX0lfRV9UUklHR0VSX1BST1RP Q09MX1ZJT0xBVEVEKSwKKwkJCQkJCSBlcnJtc2coInRyaWdnZXIgbW9kaWZp ZWQgdmlydHVhbCBnZW5lcmF0ZWQgY29sdW1uIHZhbHVlIikpKTsKKwkJfQor CX0KK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVj bWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jCmluZGV4 IDdlZDE2YWVmZjQuLjI1YWJjZWU4NmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvdHlwZWNtZHMuYwpAQCAtOTEyLDcgKzkxMiw4IEBAIERlZmluZURv bWFpbihDcmVhdGVEb21haW5TdG10ICpzdG10KQogCQkJCQlkZWZhdWx0RXhw ciA9IGNvb2tEZWZhdWx0KHBzdGF0ZSwgY29uc3RyLT5yYXdfZXhwciwKIAkJ CQkJCQkJCQkJICBiYXNldHlwZW9pZCwKIAkJCQkJCQkJCQkJICBiYXNldHlw ZU1vZCwKLQkJCQkJCQkJCQkJICBkb21haW5OYW1lKTsKKwkJCQkJCQkJCQkJ ICBkb21haW5OYW1lLAorCQkJCQkJCQkJCQkgIDApOwogCiAJCQkJCS8qCiAJ CQkJCSAqIElmIHRoZSBleHByZXNzaW9uIGlzIGp1c3QgYSBOVUxMIGNvbnN0 YW50LCB3ZSB0cmVhdCBpdApAQCAtMjE3Miw3ICsyMTczLDggQEAgQWx0ZXJE b21haW5EZWZhdWx0KExpc3QgKm5hbWVzLCBOb2RlICpkZWZhdWx0UmF3KQog CQlkZWZhdWx0RXhwciA9IGNvb2tEZWZhdWx0KHBzdGF0ZSwgZGVmYXVsdFJh dywKIAkJCQkJCQkJICB0eXBUdXAtPnR5cGJhc2V0eXBlLAogCQkJCQkJCQkg IHR5cFR1cC0+dHlwdHlwbW9kLAotCQkJCQkJCQkgIE5hbWVTdHIodHlwVHVw LT50eXBuYW1lKSk7CisJCQkJCQkJCSAgTmFtZVN0cih0eXBUdXAtPnR5cG5h bWUpLAorCQkJCQkJCQkgIDApOwogCiAJCS8qCiAJCSAqIElmIHRoZSBleHBy ZXNzaW9uIGlzIGp1c3QgYSBOVUxMIGNvbnN0YW50LCB3ZSB0cmVhdCB0aGUg Y29tbWFuZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5k ZXggMjk0NmEwZWRlZS4uNGVkODM4YWJlYyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjTWFpbi5jCkBAIC01Myw3ICs1Myw3IEBACiAjaW5jbHVk ZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL2NsYXVzZXMu aCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2V0cmVlLmgiCi0jaW5jbHVkZSAi cmV3cml0ZS9yZXdyaXRlTWFuaXAuaCIKKyNpbmNsdWRlICJyZXdyaXRlL3Jl d3JpdGVIYW5kbGVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIK ICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJ0Y29wL3V0 aWxpdHkuaCIKQEAgLTE4MDcsNiArMTgwNyw3IEBAIEV4ZWNSZWxDaGVjayhS ZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkJRXhwcgkgICAqY2hl Y2tjb25zdHI7CiAKIAkJCWNoZWNrY29uc3RyID0gc3RyaW5nVG9Ob2RlKGNo ZWNrW2ldLmNjYmluKTsKKwkJCWNoZWNrY29uc3RyID0gZXhwYW5kX2dlbmVy YXRlZF9jb2x1bW5zX2luX2V4cHIoY2hlY2tjb25zdHIsIHJlbCk7CiAJCQly ZXN1bHRSZWxJbmZvLT5yaV9Db25zdHJhaW50RXhwcnNbaV0gPQogCQkJCUV4 ZWNQcmVwYXJlRXhwcihjaGVja2NvbnN0ciwgZXN0YXRlKTsKIAkJfQpAQCAt MjI2OCw2ICsyMjY5LDEwIEBAIEV4ZWNCdWlsZFNsb3RWYWx1ZURlc2NyaXB0 aW9uKE9pZCByZWxvaWQsCiAJCWlmIChhdHQtPmF0dGlzZHJvcHBlZCkKIAkJ CWNvbnRpbnVlOwogCisJCS8qIGlnbm9yZSB2aXJ0dWFsIGdlbmVyYXRlZCBj b2x1bW5zOyB0aGV5IGFyZSBhbHdheXMgbnVsbCBoZXJlICovCisJCWlmIChh dHQtPmF0dGdlbmVyYXRlZCA9PSBBVFRSSUJVVEVfR0VORVJBVEVEX1ZJUlRV QUwpCisJCQljb250aW51ZTsKKwogCQlpZiAoIXRhYmxlX3Blcm0pCiAJCXsK IAkJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVu Y3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCmluZGV4IGY5 ZGRmNGVkNzYuLjhjZWFhNTU2YmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L25vZGVzL2NvcHlmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2Nv cHlmdW5jcy5jCkBAIC0yODE0LDYgKzI4MTQsNyBAQCBfY29weUNvbHVtbkRl Zihjb25zdCBDb2x1bW5EZWYgKmZyb20pCiAJQ09QWV9OT0RFX0ZJRUxEKHJh d19kZWZhdWx0KTsKIAlDT1BZX05PREVfRklFTEQoY29va2VkX2RlZmF1bHQp OwogCUNPUFlfU0NBTEFSX0ZJRUxEKGlkZW50aXR5KTsKKwlDT1BZX1NDQUxB Ul9GSUVMRChnZW5lcmF0ZWQpOwogCUNPUFlfTk9ERV9GSUVMRChjb2xsQ2xh dXNlKTsKIAlDT1BZX1NDQUxBUl9GSUVMRChjb2xsT2lkKTsKIAlDT1BZX05P REVfRklFTEQoY29uc3RyYWludHMpOwpAQCAtMjgzNyw2ICsyODM4LDcgQEAg X2NvcHlDb25zdHJhaW50KGNvbnN0IENvbnN0cmFpbnQgKmZyb20pCiAJQ09Q WV9OT0RFX0ZJRUxEKHJhd19leHByKTsKIAlDT1BZX1NUUklOR19GSUVMRChj b29rZWRfZXhwcik7CiAJQ09QWV9TQ0FMQVJfRklFTEQoZ2VuZXJhdGVkX3do ZW4pOworCUNPUFlfU0NBTEFSX0ZJRUxEKGdlbmVyYXRlZF9raW5kKTsKIAlD T1BZX05PREVfRklFTEQoa2V5cyk7CiAJQ09QWV9OT0RFX0ZJRUxEKGV4Y2x1 c2lvbnMpOwogCUNPUFlfTk9ERV9GSUVMRChvcHRpb25zKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYyBiL3NyYy9iYWNr ZW5kL25vZGVzL2VxdWFsZnVuY3MuYwppbmRleCA4ZDkyYzAzNjMzLi41YmU2 M2QyZjU0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1 bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCkBA IC0yNTQ0LDYgKzI1NDQsNyBAQCBfZXF1YWxDb2x1bW5EZWYoY29uc3QgQ29s dW1uRGVmICphLCBjb25zdCBDb2x1bW5EZWYgKmIpCiAJQ09NUEFSRV9OT0RF X0ZJRUxEKHJhd19kZWZhdWx0KTsKIAlDT01QQVJFX05PREVfRklFTEQoY29v a2VkX2RlZmF1bHQpOwogCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKGlkZW50aXR5 KTsKKwlDT01QQVJFX1NDQUxBUl9GSUVMRChnZW5lcmF0ZWQpOwogCUNPTVBB UkVfTk9ERV9GSUVMRChjb2xsQ2xhdXNlKTsKIAlDT01QQVJFX1NDQUxBUl9G SUVMRChjb2xsT2lkKTsKIAlDT01QQVJFX05PREVfRklFTEQoY29uc3RyYWlu dHMpOwpAQCAtMjU2NSw2ICsyNTY2LDcgQEAgX2VxdWFsQ29uc3RyYWludChj b25zdCBDb25zdHJhaW50ICphLCBjb25zdCBDb25zdHJhaW50ICpiKQogCUNP TVBBUkVfTk9ERV9GSUVMRChyYXdfZXhwcik7CiAJQ09NUEFSRV9TVFJJTkdf RklFTEQoY29va2VkX2V4cHIpOwogCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKGdl bmVyYXRlZF93aGVuKTsKKwlDT01QQVJFX1NDQUxBUl9GSUVMRChnZW5lcmF0 ZWRfa2luZCk7CiAJQ09NUEFSRV9OT0RFX0ZJRUxEKGtleXMpOwogCUNPTVBB UkVfTk9ERV9GSUVMRChleGNsdXNpb25zKTsKIAlDT01QQVJFX05PREVfRklF TEQob3B0aW9ucyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9v dXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwppbmRl eCA5ZWUzZTIzNzYxLi4wZmYxYjAwZjI0IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9ub2Rlcy9vdXRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVz L291dGZ1bmNzLmMKQEAgLTI4MDEsNiArMjgwMSw3IEBAIF9vdXRDb2x1bW5E ZWYoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IENvbHVtbkRlZiAqbm9kZSkKIAlX UklURV9OT0RFX0ZJRUxEKHJhd19kZWZhdWx0KTsKIAlXUklURV9OT0RFX0ZJ RUxEKGNvb2tlZF9kZWZhdWx0KTsKIAlXUklURV9DSEFSX0ZJRUxEKGlkZW50 aXR5KTsKKwlXUklURV9DSEFSX0ZJRUxEKGdlbmVyYXRlZCk7CiAJV1JJVEVf Tk9ERV9GSUVMRChjb2xsQ2xhdXNlKTsKIAlXUklURV9PSURfRklFTEQoY29s bE9pZCk7CiAJV1JJVEVfTk9ERV9GSUVMRChjb25zdHJhaW50cyk7CkBAIC0z NDUyLDYgKzM0NTMsMTQgQEAgX291dENvbnN0cmFpbnQoU3RyaW5nSW5mbyBz dHIsIGNvbnN0IENvbnN0cmFpbnQgKm5vZGUpCiAJCQlXUklURV9DSEFSX0ZJ RUxEKGdlbmVyYXRlZF93aGVuKTsKIAkJCWJyZWFrOwogCisJCWNhc2UgQ09O U1RSX0dFTkVSQVRFRDoKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoc3Ry LCAiR0VORVJBVEVEIik7CisJCQlXUklURV9OT0RFX0ZJRUxEKHJhd19leHBy KTsKKwkJCVdSSVRFX1NUUklOR19GSUVMRChjb29rZWRfZXhwcik7CisJCQlX UklURV9DSEFSX0ZJRUxEKGdlbmVyYXRlZF93aGVuKTsKKwkJCVdSSVRFX0NI QVJfRklFTEQoZ2VuZXJhdGVkX2tpbmQpOworCQkJYnJlYWs7CisKIAkJY2Fz ZSBDT05TVFJfQ0hFQ0s6CiAJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKHN0 ciwgIkNIRUNLIik7CiAJCQlXUklURV9CT09MX0ZJRUxEKGlzX25vX2luaGVy aXQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBi L3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggN2QwZGU5OWJhZi4u ZmY1ODY1MzNjNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC01NzAs NyArNTcwLDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2Vs ZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5 KTsKIAkJCQlvcHRfZnJhbWVfY2xhdXNlIGZyYW1lX2V4dGVudCBmcmFtZV9i b3VuZAogJXR5cGUgPHN0cj4JCW9wdF9leGlzdGluZ193aW5kb3dfbmFtZQog JXR5cGUgPGJvb2xlYW4+IG9wdF9pZl9ub3RfZXhpc3RzCi0ldHlwZSA8aXZh bD4JZ2VuZXJhdGVkX3doZW4gb3ZlcnJpZGVfa2luZAorJXR5cGUgPGl2YWw+ CWdlbmVyYXRlZF93aGVuIG92ZXJyaWRlX2tpbmQgb3B0X3ZpcnR1YWxfb3Jf c3RvcmVkCiAldHlwZSA8cGFydHNwZWM+CVBhcnRpdGlvblNwZWMgT3B0UGFy dGl0aW9uU3BlYwogJXR5cGUgPHN0cj4JCQlwYXJ0X3N0cmF0ZWd5CiAldHlw ZSA8cGFydGVsZW0+CXBhcnRfZWxlbQpAQCAtNjY5LDcgKzY2OSw3IEBAIHN0 YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxu YW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJU0FWRVBPSU5U IFNDSEVNQSBTQ0hFTUFTIFNDUk9MTCBTRUFSQ0ggU0VDT05EX1AgU0VDVVJJ VFkgU0VMRUNUIFNFUVVFTkNFIFNFUVVFTkNFUwogCVNFUklBTElaQUJMRSBT RVJWRVIgU0VTU0lPTiBTRVNTSU9OX1VTRVIgU0VUIFNFVFMgU0VUT0YgU0hB UkUgU0hPVwogCVNJTUlMQVIgU0lNUExFIFNLSVAgU01BTExJTlQgU05BUFNI T1QgU09NRSBTUUxfUCBTVEFCTEUgU1RBTkRBTE9ORV9QCi0JU1RBUlQgU1RB VEVNRU5UIFNUQVRJU1RJQ1MgU1RESU4gU1RET1VUIFNUT1JBR0UgU1RSSUNU X1AgU1RSSVBfUAorCVNUQVJUIFNUQVRFTUVOVCBTVEFUSVNUSUNTIFNURElO IFNURE9VVCBTVE9SQUdFIFNUT1JFRCBTVFJJQ1RfUCBTVFJJUF9QCiAJU1VC U0NSSVBUSU9OIFNVQlNUUklORyBTWU1NRVRSSUMgU1lTSUQgU1lTVEVNX1AK IAogCVRBQkxFIFRBQkxFUyBUQUJMRVNBTVBMRSBUQUJMRVNQQUNFIFRFTVAg VEVNUExBVEUgVEVNUE9SQVJZIFRFWFRfUCBUSEVOCkBAIC02ODAsNyArNjgw LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNo YXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlV TlRJTCBVUERBVEUgVVNFUiBVU0lORwogCiAJVkFDVVVNIFZBTElEIFZBTElE QVRFIFZBTElEQVRPUiBWQUxVRV9QIFZBTFVFUyBWQVJDSEFSIFZBUklBRElD IFZBUllJTkcKLQlWRVJCT1NFIFZFUlNJT05fUCBWSUVXIFZJRVdTIFZPTEFU SUxFCisJVkVSQk9TRSBWRVJTSU9OX1AgVklFVyBWSUVXUyBWSVJUVUFMIFZP TEFUSUxFCiAKIAlXSEVOIFdIRVJFIFdISVRFU1BBQ0VfUCBXSU5ET1cgV0lU SCBXSVRISU4gV0lUSE9VVCBXT1JLIFdSQVBQRVIgV1JJVEUKIApAQCAtMzQw Myw2ICszNDAzLDE3IEBAIENvbENvbnN0cmFpbnRFbGVtOgogCQkJCQluLT5s b2NhdGlvbiA9IEAxOwogCQkJCQkkJCA9IChOb2RlICopbjsKIAkJCQl9CisJ CQl8IEdFTkVSQVRFRCBnZW5lcmF0ZWRfd2hlbiBBUyAnKCcgYV9leHByICcp JyBvcHRfdmlydHVhbF9vcl9zdG9yZWQKKwkJCQl7CisJCQkJCUNvbnN0cmFp bnQgKm4gPSBtYWtlTm9kZShDb25zdHJhaW50KTsKKwkJCQkJbi0+Y29udHlw ZSA9IENPTlNUUl9HRU5FUkFURUQ7CisJCQkJCW4tPmdlbmVyYXRlZF93aGVu ID0gJDI7CisJCQkJCW4tPnJhd19leHByID0gJDU7CisJCQkJCW4tPmNvb2tl ZF9leHByID0gTlVMTDsKKwkJCQkJbi0+Z2VuZXJhdGVkX2tpbmQgPSAkNzsK KwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47 CisJCQkJfQogCQkJfCBSRUZFUkVOQ0VTIHF1YWxpZmllZF9uYW1lIG9wdF9j b2x1bW5fbGlzdCBrZXlfbWF0Y2gga2V5X2FjdGlvbnMKIAkJCQl7CiAJCQkJ CUNvbnN0cmFpbnQgKm4gPSBtYWtlTm9kZShDb25zdHJhaW50KTsKQEAgLTM0 MjUsNiArMzQzNiwxMiBAQCBnZW5lcmF0ZWRfd2hlbjoKIAkJCXwgQlkgREVG QVVMVAl7ICQkID0gQVRUUklCVVRFX0lERU5USVRZX0JZX0RFRkFVTFQ7IH0K IAkJOwogCitvcHRfdmlydHVhbF9vcl9zdG9yZWQ6CisJCQlTVE9SRUQJCQl7 ICQkID0gQVRUUklCVVRFX0dFTkVSQVRFRF9TVE9SRUQ7IH0KKwkJCXwgVklS VFVBTAkJeyAkJCA9IEFUVFJJQlVURV9HRU5FUkFURURfVklSVFVBTDsgfQor CQkJfCAvKkVNUFRZKi8JCXsgJCQgPSBBVFRSSUJVVEVfR0VORVJBVEVEX1ZJ UlRVQUw7IH0KKwkJOworCiAvKgogICogQ29uc3RyYWludEF0dHIgcmVwcmVz ZW50cyBjb25zdHJhaW50IGF0dHJpYnV0ZXMsIHdoaWNoIHdlIHBhcnNlIGFz IGlmCiAgKiB0aGV5IHdlcmUgaW5kZXBlbmRlbnQgY29uc3RyYWludCBjbGF1 c2VzLCBpbiBvcmRlciB0byBhdm9pZCBzaGlmdC9yZWR1Y2UKQEAgLTM0OTIs NiArMzUwOSw3IEBAIFRhYmxlTGlrZU9wdGlvbjoKIAkJCQlERUZBVUxUUwkJ CXsgJCQgPSBDUkVBVEVfVEFCTEVfTElLRV9ERUZBVUxUUzsgfQogCQkJCXwg Q09OU1RSQUlOVFMJCXsgJCQgPSBDUkVBVEVfVEFCTEVfTElLRV9DT05TVFJB SU5UUzsgfQogCQkJCXwgSURFTlRJVFlfUAkJeyAkJCA9IENSRUFURV9UQUJM RV9MSUtFX0lERU5USVRZOyB9CisJCQkJfCBHRU5FUkFURUQJCQl7ICQkID0g Q1JFQVRFX1RBQkxFX0xJS0VfR0VORVJBVEVEOyB9CiAJCQkJfCBJTkRFWEVT CQkJeyAkJCA9IENSRUFURV9UQUJMRV9MSUtFX0lOREVYRVM7IH0KIAkJCQl8 IFNUT1JBR0UJCQl7ICQkID0gQ1JFQVRFX1RBQkxFX0xJS0VfU1RPUkFHRTsg fQogCQkJCXwgQ09NTUVOVFMJCQl7ICQkID0gQ1JFQVRFX1RBQkxFX0xJS0Vf Q09NTUVOVFM7IH0KQEAgLTE0ODIwLDYgKzE0ODM4LDcgQEAgdW5yZXNlcnZl ZF9rZXl3b3JkOgogCQkJfCBTVERJTgogCQkJfCBTVERPVVQKIAkJCXwgU1RP UkFHRQorCQkJfCBTVE9SRUQKIAkJCXwgU1RSSUNUX1AKIAkJCXwgU1RSSVBf UAogCQkJfCBTVUJTQ1JJUFRJT04KQEAgLTE0ODU1LDYgKzE0ODc0LDcgQEAg dW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBWRVJTSU9OX1AKIAkJCXwgVklF VwogCQkJfCBWSUVXUworCQkJfCBWSVJUVUFMCiAJCQl8IFZPTEFUSUxFCiAJ CQl8IFdISVRFU1BBQ0VfUAogCQkJfCBXSVRISU4KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9hZ2cuYwppbmRleCA2NDExMWYzMTVlLi5kYzc3NzIwZTg2 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMK KysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCkBAIC01MDcs NiArNTA3LDE0IEBAIGNoZWNrX2FnZ2xldmVsc19hbmRfY29uc3RyYWludHMo UGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByKQogCQkJCWVyciA9IF8o Imdyb3VwaW5nIG9wZXJhdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIHBhcnRp dGlvbiBrZXkgZXhwcmVzc2lvbiIpOwogCiAJCQlicmVhazsKKwkJY2FzZSBF WFBSX0tJTkRfR0VORVJBVEVEX0NPTFVNTjoKKworCQkJaWYgKGlzQWdnKQor CQkJCWVyciA9IF8oImFnZ3JlZ2F0ZSBmdW5jdGlvbnMgYXJlIG5vdCBhbGxv d2VkIGluIGNvbHVtbiBnZW5lcmF0aW9uIGV4cHJlc3Npb25zIik7CisJCQll bHNlCisJCQkJZXJyID0gXygiZ3JvdXBpbmcgb3BlcmF0aW9ucyBhcmUgbm90 IGFsbG93ZWQgaW4gY29sdW1uIGdlbmVyYXRpb24gZXhwcmVzc2lvbnMiKTsK KworCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRlbnRp b25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKQEAg LTg4Myw2ICs4OTEsOSBAQCB0cmFuc2Zvcm1XaW5kb3dGdW5jQ2FsbChQYXJz ZVN0YXRlICpwc3RhdGUsIFdpbmRvd0Z1bmMgKndmdW5jLAogCQljYXNlIEVY UFJfS0lORF9QQVJUSVRJT05fRVhQUkVTU0lPTjoKIAkJCWVyciA9IF8oIndp bmRvdyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIHBhcnRpdGlvbiBr ZXkgZXhwcmVzc2lvbiIpOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5E X0dFTkVSQVRFRF9DT0xVTU46CisJCQllcnIgPSBfKCJ3aW5kb3cgZnVuY3Rp b25zIGFyZSBub3QgYWxsb3dlZCBpbiBjb2x1bW4gZ2VuZXJhdGlvbiBleHBy ZXNzaW9ucyIpOworCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBp cyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhh dCB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9l eHByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4 IDZkOGNiMDc3NjYuLmNmYWY0ZjAzZDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX2V4cHIuYwpAQCAtMTg0MCw2ICsxODQwLDkgQEAgdHJhbnNm b3JtU3ViTGluayhQYXJzZVN0YXRlICpwc3RhdGUsIFN1YkxpbmsgKnN1Ymxp bmspCiAJCWNhc2UgRVhQUl9LSU5EX1BBUlRJVElPTl9FWFBSRVNTSU9OOgog CQkJZXJyID0gXygiY2Fubm90IHVzZSBzdWJxdWVyeSBpbiBwYXJ0aXRpb24g a2V5IGV4cHJlc3Npb24iKTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lO RF9HRU5FUkFURURfQ09MVU1OOgorCQkJZXJyID0gXygiY2Fubm90IHVzZSBz dWJxdWVyeSBpbiBjb2x1bW4gZ2VuZXJhdGlvbiBleHByZXNzaW9uIik7CisJ CQlicmVhazsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFs bHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpAQCAtMzQ2 Miw2ICszNDY1LDggQEAgUGFyc2VFeHByS2luZE5hbWUoUGFyc2VFeHByS2lu ZCBleHByS2luZCkKIAkJCXJldHVybiAiV0hFTiI7CiAJCWNhc2UgRVhQUl9L SU5EX1BBUlRJVElPTl9FWFBSRVNTSU9OOgogCQkJcmV0dXJuICJQQVJUSVRJ T04gQlkiOworCQljYXNlIEVYUFJfS0lORF9HRU5FUkFURURfQ09MVU1OOgor CQkJcmV0dXJuICJHRU5FUkFURUQgQVMiOwogCiAJCQkvKgogCQkJICogVGhl cmUgaXMgaW50ZW50aW9uYWxseSBubyBkZWZhdWx0OiBjYXNlIGhlcmUsIHNv IHRoYXQgdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfZnVuYy5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYwpp bmRleCAyZjJmMmM3ZmIwLi43NmQzZTFiMThlIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCisrKyBiL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9mdW5jLmMKQEAgLTUyOCw2ICs1MjgsMTUgQEAgUGFy c2VGdW5jT3JDb2x1bW4oUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpmdW5j bmFtZSwgTGlzdCAqZmFyZ3MsCiAJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24o cHN0YXRlLCBsb2NhdGlvbikpKTsKIAl9CiAKKwlpZiAocHN0YXRlLT5wX2V4 cHJfa2luZCA9PSBFWFBSX0tJTkRfR0VORVJBVEVEX0NPTFVNTiAmJgorCQlm dW5jX3ZvbGF0aWxlKGZ1bmNpZCkgIT0gUFJPVk9MQVRJTEVfSU1NVVRBQkxF KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfU1lO VEFYX0VSUk9SKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgdXNlIGZ1bmN0aW9u ICVzIGluIGNvbHVtbiBnZW5lcmF0aW9uIGV4cHJlc3Npb24iLAorCQkJCQkJ ZnVuY19zaWduYXR1cmVfc3RyaW5nKGZ1bmNuYW1lLCBuYXJncywgYXJnbmFt ZXMsIGFjdHVhbF9hcmdfdHlwZXMpKSwKKwkJCQkgZXJyZGV0YWlsKCJGdW5j dGlvbnMgdXNlZCBpbiBhIGNvbHVtbiBnZW5lcmF0aW9uIGV4cHJlc3Npb24g bXVzdCBiZSBpbW11dGFibGUuIiksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlv bihwc3RhdGUsIGxvY2F0aW9uKSkpOworCiAJLyoKIAkgKiBJZiB0aGVyZSBh cmUgZGVmYXVsdCBhcmd1bWVudHMsIHdlIGhhdmUgdG8gaW5jbHVkZSB0aGVp ciB0eXBlcyBpbgogCSAqIGFjdHVhbF9hcmdfdHlwZXMgZm9yIHRoZSBwdXJw b3NlIG9mIGNoZWNraW5nIGdlbmVyaWMgdHlwZSBjb25zaXN0ZW5jeS4KQEAg LTIyMzUsNiArMjI0NCw5IEBAIGNoZWNrX3NyZl9jYWxsX3BsYWNlbWVudChQ YXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmxhc3Rfc3JmLCBpbnQgbG9jYXRp b24pCiAJCWNhc2UgRVhQUl9LSU5EX1BBUlRJVElPTl9FWFBSRVNTSU9OOgog CQkJZXJyID0gXygic2V0LXJldHVybmluZyBmdW5jdGlvbnMgYXJlIG5vdCBh bGxvd2VkIGluIHBhcnRpdGlvbiBrZXkgZXhwcmVzc2lvbnMiKTsKIAkJCWJy ZWFrOworCQljYXNlIEVYUFJfS0lORF9HRU5FUkFURURfQ09MVU1OOgorCQkJ ZXJyID0gXygic2V0LXJldHVybmluZyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxv d2VkIGluIGNvbHVtbiBnZW5lcmF0aW9uIGV4cHJlc3Npb25zIik7CisJCQli cmVhazsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkg bm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyBiL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKaW5kZXggMjA1ODY3OTdj Yy4uNWY2YmVjNWVkMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX3V0aWxjbWQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfdXRpbGNtZC5jCkBAIC01MDUsNiArNTA1LDcgQEAgdHJhbnNmb3JtQ29s dW1uRGVmaW5pdGlvbihDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBDb2x1bW5E ZWYgKmNvbHVtbikKIAlib29sCQlzYXdfbnVsbGFibGU7CiAJYm9vbAkJc2F3 X2RlZmF1bHQ7CiAJYm9vbAkJc2F3X2lkZW50aXR5OworCWJvb2wJCXNhd19n ZW5lcmF0ZWQ7CiAJTGlzdENlbGwgICAqY2xpc3Q7CiAKIAljeHQtPmNvbHVt bnMgPSBsYXBwZW5kKGN4dC0+Y29sdW1ucywgY29sdW1uKTsKQEAgLTYxMiw2 ICs2MTMsNyBAQCB0cmFuc2Zvcm1Db2x1bW5EZWZpbml0aW9uKENyZWF0ZVN0 bXRDb250ZXh0ICpjeHQsIENvbHVtbkRlZiAqY29sdW1uKQogCXNhd19udWxs YWJsZSA9IGZhbHNlOwogCXNhd19kZWZhdWx0ID0gZmFsc2U7CiAJc2F3X2lk ZW50aXR5ID0gZmFsc2U7CisJc2F3X2dlbmVyYXRlZCA9IGZhbHNlOwogCiAJ Zm9yZWFjaChjbGlzdCwgY29sdW1uLT5jb25zdHJhaW50cykKIAl7CkBAIC02 ODMsNiArNjg1LDQxIEBAIHRyYW5zZm9ybUNvbHVtbkRlZmluaXRpb24oQ3Jl YXRlU3RtdENvbnRleHQgKmN4dCwgQ29sdW1uRGVmICpjb2x1bW4pCiAJCQkJ CWJyZWFrOwogCQkJCX0KIAorCQkJY2FzZSBDT05TVFJfR0VORVJBVEVEOgor CQkJCWlmIChzYXdfZ2VuZXJhdGVkKQorCQkJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJ CQkgZXJybXNnKCJtdWx0aXBsZSBnZW5lcmF0aW9uIGNsYXVzZXMgc3BlY2lm aWVkIGZvciBjb2x1bW4gXCIlc1wiIG9mIHRhYmxlIFwiJXNcIiIsCisJCQkJ CQkJCQljb2x1bW4tPmNvbG5hbWUsIGN4dC0+cmVsYXRpb24tPnJlbG5hbWUp LAorCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsCisJ CQkJCQkJCQkJCQljb25zdHJhaW50LT5sb2NhdGlvbikpKTsKKwkJCQljb2x1 bW4tPmdlbmVyYXRlZCA9IGNvbnN0cmFpbnQtPmdlbmVyYXRlZF9raW5kOwor CQkJCWNvbHVtbi0+cmF3X2RlZmF1bHQgPSBjb25zdHJhaW50LT5yYXdfZXhw cjsKKwkJCQlBc3NlcnQoY29uc3RyYWludC0+Y29va2VkX2V4cHIgPT0gTlVM TCk7CisJCQkJc2F3X2dlbmVyYXRlZCA9IHRydWU7CisKKwkJCQkvKgorCQkJ CSAqIFByZXZlbnQgdmlydHVhbCBnZW5lcmF0ZWQgY29sdW1ucyBmcm9tIGhh dmluZyBhIGRvbWFpbgorCQkJCSAqIHR5cGUuICBXZSB3b3VsZCBoYXZlIHRv IGVuZm9yY2UgZG9tYWluIGNvbnN0cmFpbnRzIHdoZW4KKwkJCQkgKiBjb2x1 bW5zIHVuZGVybHlpbmcgdGhlIGdlbmVyYXRlZCBjb2x1bW4gY2hhbmdlLiAg VGhpcyBjb3VsZAorCQkJCSAqIHBvc3NpYmx5IGJlIGltcGxlbWVudGVkLCBi dXQgaXQncyBub3QuCisJCQkJICovCisJCQkJaWYgKGNvbHVtbi0+Z2VuZXJh dGVkID09IEFUVFJJQlVURV9HRU5FUkFURURfVklSVFVBTCkKKwkJCQl7CisJ CQkJCVR5cGUJCWN0eXBlOworCisJCQkJCWN0eXBlID0gdHlwZW5hbWVUeXBl KGN4dC0+cHN0YXRlLCBjb2x1bW4tPnR5cGVOYW1lLCBOVUxMKTsKKwkJCQkJ aWYgKCgoRm9ybV9wZ190eXBlKSBHRVRTVFJVQ1QoY3R5cGUpKS0+dHlwdHlw ZSA9PSBUWVBUWVBFX0RPTUFJTikKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKKwkJCQkJCQkJIGVycm1zZygidmlydHVhbCBnZW5lcmF0ZWQgY29sdW1u IFwiJXNcIiBjYW5ub3QgaGF2ZSBhIGRvbWFpbiB0eXBlIiwKKwkJCQkJCQkJ CQljb2x1bW4tPmNvbG5hbWUpLAorCQkJCQkJCQkgcGFyc2VyX2VycnBvc2l0 aW9uKGN4dC0+cHN0YXRlLAorCQkJCQkJCQkJCQkJCWNvbHVtbi0+bG9jYXRp b24pKSk7CisJCQkJCVJlbGVhc2VTeXNDYWNoZShjdHlwZSk7CisJCQkJfQor CQkJCWJyZWFrOworCiAJCQljYXNlIENPTlNUUl9DSEVDSzoKIAkJCQljeHQt PmNrY29uc3RyYWludHMgPSBsYXBwZW5kKGN4dC0+Y2tjb25zdHJhaW50cywg Y29uc3RyYWludCk7CiAJCQkJYnJlYWs7CkBAIC03NjcsNiArODA0LDUwIEBA IHRyYW5zZm9ybUNvbHVtbkRlZmluaXRpb24oQ3JlYXRlU3RtdENvbnRleHQg KmN4dCwgQ29sdW1uRGVmICpjb2x1bW4pCiAJCQkJCQkJY29sdW1uLT5jb2xu YW1lLCBjeHQtPnJlbGF0aW9uLT5yZWxuYW1lKSwKIAkJCQkJIHBhcnNlcl9l cnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwKIAkJCQkJCQkJCQljb25zdHJhaW50 LT5sb2NhdGlvbikpKTsKKworCQlpZiAoc2F3X2RlZmF1bHQgJiYgc2F3X2dl bmVyYXRlZCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVS UkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJIGVycm1zZygiYm90aCBkZWZh dWx0IGFuZCBnZW5lcmF0aW9uIGV4cHJlc3Npb24gc3BlY2lmaWVkIGZvciBj b2x1bW4gXCIlc1wiIG9mIHRhYmxlIFwiJXNcIiIsCisJCQkJCQkJY29sdW1u LT5jb2xuYW1lLCBjeHQtPnJlbGF0aW9uLT5yZWxuYW1lKSwKKwkJCQkJIHBh cnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwKKwkJCQkJCQkJCQljb25z dHJhaW50LT5sb2NhdGlvbikpKTsKKworCQlpZiAoc2F3X2lkZW50aXR5ICYm IHNhd19nZW5lcmF0ZWQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJy Y29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCSBlcnJtc2coImJv dGggaWRlbnRpdHkgYW5kIGdlbmVyYXRpb24gZXhwcmVzc2lvbiBzcGVjaWZp ZWQgZm9yIGNvbHVtbiBcIiVzXCIgb2YgdGFibGUgXCIlc1wiIiwKKwkJCQkJ CQljb2x1bW4tPmNvbG5hbWUsIGN4dC0+cmVsYXRpb24tPnJlbG5hbWUpLAor CQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLAorCQkJCQkJ CQkJCWNvbnN0cmFpbnQtPmxvY2F0aW9uKSkpOworCisJCS8qCisJCSAqIEZv ciBhIGdlbmVyYXRlZCBjb2x1bW4sIGNvbnZlcnQgdGhlIG5vdC1udWxsIGNv bnN0cmFpbnQgaW50byBhIGZ1bGwKKwkJICogY2hlY2sgY29uc3RyYWludCwg c28gdGhhdCB0aGUgZ2VuZXJhdGlvbiBleHByZXNzaW9uIGNhbiBiZSBleHBh bmRlZAorCQkgKiBhdCBjaGVjayB0aW1lLgorCQkgKi8KKwkJaWYgKGNvbHVt bi0+aXNfbm90X251bGwgJiYgY29sdW1uLT5nZW5lcmF0ZWQpCisJCXsKKwkJ CUNvbnN0cmFpbnQgKmNoayA9IG1ha2VOb2RlKENvbnN0cmFpbnQpOworCQkJ TnVsbFRlc3QgKm50ID0gbWFrZU5vZGUoTnVsbFRlc3QpOworCQkJQ29sdW1u UmVmICpjciA9IG1ha2VOb2RlKENvbHVtblJlZik7CisKKwkJCWNyLT5sb2Nh dGlvbiA9IC0xOworCQkJY3ItPmZpZWxkcyA9IGxpc3RfbWFrZTEobWFrZVN0 cmluZyhjb2x1bW4tPmNvbG5hbWUpKTsKKworCQkJbnQtPmFyZyA9IChFeHBy ICopIGNyOworCQkJbnQtPm51bGx0ZXN0dHlwZSA9IElTX05PVF9OVUxMOwor CQkJbnQtPmxvY2F0aW9uID0gLTE7CisKKwkJCWNoay0+Y29udHlwZSA9IENP TlNUUl9DSEVDSzsKKwkJCWNoay0+bG9jYXRpb24gPSAtMTsKKwkJCWNoay0+ aW5pdGlhbGx5X3ZhbGlkID0gdHJ1ZTsKKwkJCWNoay0+cmF3X2V4cHIgPSAo Tm9kZSAqKSBudDsKKworCQkJY3h0LT5ja2NvbnN0cmFpbnRzID0gbGFwcGVu ZChjeHQtPmNrY29uc3RyYWludHMsIGNoayk7CisKKwkJCWNvbHVtbi0+aXNf bm90X251bGwgPSBmYWxzZTsKKwkJfQogCX0KIAogCS8qCkBAIC0xMDE0LDcg KzEwOTUsOCBAQCB0cmFuc2Zvcm1UYWJsZUxpa2VDbGF1c2UoQ3JlYXRlU3Rt dENvbnRleHQgKmN4dCwgVGFibGVMaWtlQ2xhdXNlICp0YWJsZV9saWtlX2Ns YQogCQkgKiBDb3B5IGRlZmF1bHQsIGlmIHByZXNlbnQgYW5kIHRoZSBkZWZh dWx0IGhhcyBiZWVuIHJlcXVlc3RlZAogCQkgKi8KIAkJaWYgKGF0dHJpYnV0 ZS0+YXR0aGFzZGVmICYmCi0JCQkodGFibGVfbGlrZV9jbGF1c2UtPm9wdGlv bnMgJiBDUkVBVEVfVEFCTEVfTElLRV9ERUZBVUxUUykpCisJCQkodGFibGVf bGlrZV9jbGF1c2UtPm9wdGlvbnMgJiBDUkVBVEVfVEFCTEVfTElLRV9ERUZB VUxUUyB8fAorCQkJIHRhYmxlX2xpa2VfY2xhdXNlLT5vcHRpb25zICYgQ1JF QVRFX1RBQkxFX0xJS0VfR0VORVJBVEVEKSkKIAkJewogCQkJTm9kZQkgICAq dGhpc19kZWZhdWx0ID0gTlVMTDsKIAkJCUF0dHJEZWZhdWx0ICphdHRyZGVm OwpAQCAtMTAzOSw2ICsxMTIxLDkgQEAgdHJhbnNmb3JtVGFibGVMaWtlQ2xh dXNlKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFRhYmxlTGlrZUNsYXVzZSAq dGFibGVfbGlrZV9jbGEKIAkJCSAqLwogCiAJCQlkZWYtPmNvb2tlZF9kZWZh dWx0ID0gdGhpc19kZWZhdWx0OworCQkJaWYgKGF0dHJpYnV0ZS0+YXR0Z2Vu ZXJhdGVkICYmCisJCQkJKHRhYmxlX2xpa2VfY2xhdXNlLT5vcHRpb25zICYg Q1JFQVRFX1RBQkxFX0xJS0VfR0VORVJBVEVEKSkKKwkJCQlkZWYtPmdlbmVy YXRlZCA9IGF0dHJpYnV0ZS0+YXR0Z2VuZXJhdGVkOwogCQl9CiAKIAkJLyoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv d29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dv cmtlci5jCmluZGV4IDA0MWYzODczYjkuLmQ2MzEyMWVjZjcgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIu YwpAQCAtMjUzLDcgKzI1Myw3IEBAIHNsb3RfZmlsbF9kZWZhdWx0cyhMb2dp Y2FsUmVwUmVsTWFwRW50cnkgKnJlbCwgRVN0YXRlICplc3RhdGUsCiAJCWlm IChyZWwtPmF0dHJtYXBbYXR0bnVtXSA+PSAwKQogCQkJY29udGludWU7CiAK LQkJZGVmZXhwciA9IChFeHByICopIGJ1aWxkX2NvbHVtbl9kZWZhdWx0KHJl bC0+bG9jYWxyZWwsIGF0dG51bSArIDEpOworCQlkZWZleHByID0gKEV4cHIg KikgYnVpbGRfY29sdW1uX2RlZmF1bHQocmVsLT5sb2NhbHJlbCwgYXR0bnVt ICsgMSwgdHJ1ZSk7CiAKIAkJaWYgKGRlZmV4cHIgIT0gTlVMTCkKIAkJewpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxl ci5jIGIvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCmlu ZGV4IGVmNTJkZDViOTUuLjg0YWYxOGVjOGMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYworKysgYi9zcmMvYmFj a2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKQEAgLTIwLDYgKzIwLDcg QEAKICAqLwogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKKyNpbmNsdWRlICJh Y2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N5c2F0 dHIuaCIKICNpbmNsdWRlICJjYXRhbG9nL2RlcGVuZGVuY3kuaCIKICNpbmNs dWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKQEAgLTM3LDYgKzM4LDcgQEAKICNp bmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2xz eXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgorI2luY2x1ZGUg InV0aWxzL3N5c2NhY2hlLmgiCiAKIAogLyogV2UgdXNlIGEgbGlzdCBvZiB0 aGVzZSB0byBkZXRlY3QgcmVjdXJzaW9uIGluIFJld3JpdGVRdWVyeSAqLwpA QCAtODIzLDYgKzgyNSwxMyBAQCByZXdyaXRlVGFyZ2V0TGlzdElVKExpc3Qg KnRhcmdldExpc3QsCiAKIAkJCWlmIChhdHRfdHVwLT5hdHRpZGVudGl0eSA9 PSBBVFRSSUJVVEVfSURFTlRJVFlfQllfREVGQVVMVCAmJiBvdmVycmlkZSA9 PSBPVkVSUklESU5HX1VTRVJfVkFMVUUpCiAJCQkJYXBwbHlfZGVmYXVsdCA9 IHRydWU7CisKKwkJCWlmIChhdHRfdHVwLT5hdHRnZW5lcmF0ZWQgJiYgIWFw cGx5X2RlZmF1bHQpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJj b2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBlcnJtc2coImNh bm5vdCBpbnNlcnQgaW50byBjb2x1bW4gXCIlc1wiIiwgTmFtZVN0cihhdHRf dHVwLT5hdHRuYW1lKSksCisJCQkJCQkgZXJyZGV0YWlsKCJDb2x1bW4gXCIl c1wiIGlzIGEgZ2VuZXJhdGVkIGNvbHVtbi4iLAorCQkJCQkJCQkgICBOYW1l U3RyKGF0dF90dXAtPmF0dG5hbWUpKSkpOwogCQl9CiAKIAkJaWYgKGNvbW1h bmRUeXBlID09IENNRF9VUERBVEUpCkBAIC04MzMsOSArODQyLDI4IEBAIHJl d3JpdGVUYXJnZXRMaXN0SVUoTGlzdCAqdGFyZ2V0TGlzdCwKIAkJCQkJCSBl cnJtc2coImNvbHVtbiBcIiVzXCIgY2FuIG9ubHkgYmUgdXBkYXRlZCB0byBE RUZBVUxUIiwgTmFtZVN0cihhdHRfdHVwLT5hdHRuYW1lKSksCiAJCQkJCQkg ZXJyZGV0YWlsKCJDb2x1bW4gXCIlc1wiIGlzIGFuIGlkZW50aXR5IGNvbHVt biBkZWZpbmVkIGFzIEdFTkVSQVRFRCBBTFdBWVMuIiwKIAkJCQkJCQkJICAg TmFtZVN0cihhdHRfdHVwLT5hdHRuYW1lKSkpKTsKKworCQkJaWYgKGF0dF90 dXAtPmF0dGdlbmVyYXRlZCAmJiBuZXdfdGxlICYmICFhcHBseV9kZWZhdWx0 KQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RF X1NZTlRBWF9FUlJPUiksCisJCQkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wi IGNhbiBvbmx5IGJlIHVwZGF0ZWQgdG8gREVGQVVMVCIsIE5hbWVTdHIoYXR0 X3R1cC0+YXR0bmFtZSkpLAorCQkJCQkJIGVycmRldGFpbCgiQ29sdW1uIFwi JXNcIiBpcyBhIGdlbmVyYXRlZCBjb2x1bW4uIiwKKwkJCQkJCQkJICAgTmFt ZVN0cihhdHRfdHVwLT5hdHRuYW1lKSkpKTsKIAkJfQogCi0JCWlmIChhcHBs eV9kZWZhdWx0KQorCQlpZiAoYXR0X3R1cC0+YXR0Z2VuZXJhdGVkKQorCQl7 CisJCQkvKgorCQkJICogdmlydHVhbCBnZW5lcmF0ZWQgY29sdW1uIHN0b3Jl cyBhIG51bGwgdmFsdWUKKwkJCSAqLworCQkJbmV3X3RsZSA9IE5VTEw7CisK KwkJCWlmIChhdHRfdHVwLT5hdHRnZW5lcmF0ZWQgPT0gQVRUUklCVVRFX0dF TkVSQVRFRF9TVE9SRUQpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShl cnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJ CSBlcnJtc2coInN0b3JlZCBnZW5lcmF0ZWQgY29sdW1ucyBhcmUgbm90IHll dCBpbXBsZW1lbnRlZCIpKSk7CisJCX0KKwkJZWxzZSBpZiAoYXBwbHlfZGVm YXVsdCkKIAkJewogCQkJTm9kZQkgICAqbmV3X2V4cHI7CiAKQEAgLTg0OSw3 ICs4NzcsNyBAQCByZXdyaXRlVGFyZ2V0TGlzdElVKExpc3QgKnRhcmdldExp c3QsCiAJCQkJbmV3X2V4cHIgPSAoTm9kZSAqKSBudmU7CiAJCQl9CiAJCQll bHNlCi0JCQkJbmV3X2V4cHIgPSBidWlsZF9jb2x1bW5fZGVmYXVsdCh0YXJn ZXRfcmVsYXRpb24sIGF0dHJubyk7CisJCQkJbmV3X2V4cHIgPSBidWlsZF9j b2x1bW5fZGVmYXVsdCh0YXJnZXRfcmVsYXRpb24sIGF0dHJubywgdHJ1ZSk7 CiAKIAkJCS8qCiAJCQkgKiBJZiB0aGVyZSBpcyBubyBkZWZhdWx0IChpZSwg ZGVmYXVsdCBpcyBlZmZlY3RpdmVseSBOVUxMKSwgd2UKQEAgLTExMDksNyAr MTEzNyw3IEBAIGdldF9hc3NpZ25tZW50X2lucHV0KE5vZGUgKm5vZGUpCiAg KiBJZiB0aGVyZSBpcyBubyBkZWZhdWx0LCByZXR1cm4gYSBOVUxMIGluc3Rl YWQuCiAgKi8KIE5vZGUgKgotYnVpbGRfY29sdW1uX2RlZmF1bHQoUmVsYXRp b24gcmVsLCBpbnQgYXR0cm5vKQorYnVpbGRfY29sdW1uX2RlZmF1bHQoUmVs YXRpb24gcmVsLCBpbnQgYXR0cm5vLCBib29sIGFsbG93X3R5cGRlZmF1bHQp CiB7CiAJVHVwbGVEZXNjCXJkX2F0dCA9IHJlbC0+cmRfYXR0OwogCUZvcm1f cGdfYXR0cmlidXRlIGF0dF90dXAgPSBUdXBsZURlc2NBdHRyKHJkX2F0dCwg YXR0cm5vIC0gMSk7CkBAIC0xMTM5LDcgKzExNjcsNyBAQCBidWlsZF9jb2x1 bW5fZGVmYXVsdChSZWxhdGlvbiByZWwsIGludCBhdHRybm8pCiAJCX0KIAl9 CiAKLQlpZiAoZXhwciA9PSBOVUxMKQorCWlmIChleHByID09IE5VTEwgJiYg YWxsb3dfdHlwZGVmYXVsdCkKIAl7CiAJCS8qCiAJCSAqIE5vIHBlci1jb2x1 bW4gZGVmYXVsdCwgc28gbG9vayBmb3IgYSBkZWZhdWx0IGZvciB0aGUgdHlw ZSBpdHNlbGYuCkBAIC0xMjUwLDcgKzEyNzgsNyBAQCByZXdyaXRlVmFsdWVz UlRFKFJhbmdlVGJsRW50cnkgKnJ0ZSwgUmVsYXRpb24gdGFyZ2V0X3JlbGF0 aW9uLCBMaXN0ICphdHRybm9zKQogCQkJCWF0dF90dXAgPSBUdXBsZURlc2NB dHRyKHRhcmdldF9yZWxhdGlvbi0+cmRfYXR0LCBhdHRybm8gLSAxKTsKIAog CQkJCWlmICghYXR0X3R1cC0+YXR0aXNkcm9wcGVkKQotCQkJCQluZXdfZXhw ciA9IGJ1aWxkX2NvbHVtbl9kZWZhdWx0KHRhcmdldF9yZWxhdGlvbiwgYXR0 cm5vKTsKKwkJCQkJbmV3X2V4cHIgPSBidWlsZF9jb2x1bW5fZGVmYXVsdCh0 YXJnZXRfcmVsYXRpb24sIGF0dHJubywgdHJ1ZSk7CiAJCQkJZWxzZQogCQkJ CQluZXdfZXhwciA9IE5VTEw7CS8qIGZvcmNlIGEgTlVMTCBpZiBkcm9wcGVk ICovCiAKQEAgLTM1NjMsNiArMzU5MSw3NSBAQCBSZXdyaXRlUXVlcnkoUXVl cnkgKnBhcnNldHJlZSwgTGlzdCAqcmV3cml0ZV9ldmVudHMpCiB9CiAKIAor c3RhdGljIE5vZGUgKgorZXhwYW5kX2dlbmVyYXRlZF9jb2x1bW5zX2luX2V4 cHJfbXV0YXRvcihOb2RlICpub2RlLCBSZWxhdGlvbiByZWwpCit7CisJaWYg KG5vZGUgPT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7CisKKwlpZiAoSXNBKG5v ZGUsIFZhcikpCisJeworCQlWYXIgKnYgPSAoVmFyICopIG5vZGU7CisJCU9p ZAkJCXJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChyZWwpOworCQlBdHRyTnVt YmVyCWF0dG51bSA9IHYtPnZhcmF0dG5vOworCisJCWlmIChyZWxpZCAmJiBh dHRudW0gJiYgZ2V0X2F0dGdlbmVyYXRlZChyZWxpZCwgYXR0bnVtKSA9PSBB VFRSSUJVVEVfR0VORVJBVEVEX1ZJUlRVQUwpCisJCXsKKwkJCW5vZGUgPSBi dWlsZF9jb2x1bW5fZGVmYXVsdChyZWwsIGF0dG51bSwgZmFsc2UpOworCQkJ Q2hhbmdlVmFyTm9kZXMobm9kZSwgMSwgdi0+dmFybm8sIDApOworCQl9CisK KwkJcmV0dXJuIG5vZGU7CisJfQorCWVsc2UKKwkJcmV0dXJuIGV4cHJlc3Np b25fdHJlZV9tdXRhdG9yKG5vZGUsIGV4cGFuZF9nZW5lcmF0ZWRfY29sdW1u c19pbl9leHByX211dGF0b3IsIHJlbCk7Cit9CisKKworRXhwciAqCitleHBh bmRfZ2VuZXJhdGVkX2NvbHVtbnNfaW5fZXhwcihFeHByICpleHByLCBSZWxh dGlvbiByZWwpCit7CisJcmV0dXJuIChFeHByICopIGV4cHJlc3Npb25fdHJl ZV9tdXRhdG9yKChOb2RlICopIGV4cHIsCisJCQkJCQkJCQkJCWV4cGFuZF9n ZW5lcmF0ZWRfY29sdW1uc19pbl9leHByX211dGF0b3IsCisJCQkJCQkJCQkJ CXJlbCk7Cit9CisKKworc3RhdGljIE5vZGUgKgorZXhwYW5kX2dlbmVyYXRl ZF9jb2x1bW5zX2luX3F1ZXJ5X211dGF0b3IoTm9kZSAqbm9kZSwgTGlzdCAq cnRhYmxlKQoreworCWlmIChub2RlID09IE5VTEwpCisJCXJldHVybiBOVUxM OworCisJaWYgKElzQShub2RlLCBWYXIpKQorCXsKKwkJVmFyICp2ID0gKFZh ciAqKSBub2RlOworCQlPaWQJCQlyZWxpZDsKKwkJQXR0ck51bWJlcglhdHRu dW07CisKKwkJcmVsaWQgPSBnZXRyZWxpZCh2LT52YXJubywgcnRhYmxlKTsK KwkJYXR0bnVtID0gdi0+dmFyYXR0bm87CisKKwkJaWYgKCFyZWxpZCB8fCAh YXR0bnVtKQorCQkJcmV0dXJuIG5vZGU7CisKKwkJaWYgKGdldF9hdHRnZW5l cmF0ZWQocmVsaWQsIGF0dG51bSkgPT0gQVRUUklCVVRFX0dFTkVSQVRFRF9W SVJUVUFMKQorCQl7CisJCQlSZWxhdGlvbiBydF9lbnRyeV9yZWxhdGlvbiA9 IGhlYXBfb3BlbihyZWxpZCwgTm9Mb2NrKTsKKworCQkJbm9kZSA9IGJ1aWxk X2NvbHVtbl9kZWZhdWx0KHJ0X2VudHJ5X3JlbGF0aW9uLCBhdHRudW0sIGZh bHNlKTsKKwkJCUNoYW5nZVZhck5vZGVzKG5vZGUsIDEsIHYtPnZhcm5vLCAw KTsKKworCQkJaGVhcF9jbG9zZShydF9lbnRyeV9yZWxhdGlvbiwgTm9Mb2Nr KTsKKwkJfQorCisJCXJldHVybiBub2RlOworCX0KKwllbHNlCisJCXJldHVy biBleHByZXNzaW9uX3RyZWVfbXV0YXRvcihub2RlLCBleHBhbmRfZ2VuZXJh dGVkX2NvbHVtbnNfaW5fcXVlcnlfbXV0YXRvciwgcnRhYmxlKTsKK30KKwor CiAvKgogICogUXVlcnlSZXdyaXRlIC0KICAqCSAgUHJpbWFyeSBlbnRyeSBw b2ludCB0byB0aGUgcXVlcnkgcmV3cml0ZXIuCkBAIC0zNjE4LDYgKzM3MTUs MjEgQEAgUXVlcnlSZXdyaXRlKFF1ZXJ5ICpwYXJzZXRyZWUpCiAJLyoKIAkg KiBTdGVwIDMKIAkgKgorCSAqIEV4cGFuZCBnZW5lcmF0ZWQgY29sdW1ucy4K KwkgKi8KKwlmb3JlYWNoKGwsIHF1ZXJ5bGlzdCkKKwl7CisJCVF1ZXJ5CSAg ICpxdWVyeSA9IChRdWVyeSAqKSBsZmlyc3QobCk7CisKKwkJcXVlcnkgPSBx dWVyeV90cmVlX211dGF0b3IocXVlcnksCisJCQkJCQkJCSAgIGV4cGFuZF9n ZW5lcmF0ZWRfY29sdW1uc19pbl9xdWVyeV9tdXRhdG9yLAorCQkJCQkJCQkg ICBxdWVyeS0+cnRhYmxlLAorCQkJCQkJCQkgICBRVFdfRE9OVF9DT1BZX1FV RVJZKTsKKwl9CisKKwkvKgorCSAqIFN0ZXAgNAorCSAqCiAJICogRGV0ZXJt aW5lIHdoaWNoLCBpZiBhbnksIG9mIHRoZSByZXN1bHRpbmcgcXVlcmllcyBp cyBzdXBwb3NlZCB0byBzZXQKIAkgKiB0aGUgY29tbWFuZC1yZXN1bHQgdGFn OyBhbmQgdXBkYXRlIHRoZSBjYW5TZXRUYWcgZmllbGRzIGFjY29yZGluZ2x5 LgogCSAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9s c3lzY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNo ZS5jCmluZGV4IDgyNzYzZjgwMTMuLmUwZmQwY2Y4YjEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCkBAIC04MzYsNiAr ODM2LDM4IEBAIGdldF9hdHRudW0oT2lkIHJlbGlkLCBjb25zdCBjaGFyICph dHRuYW1lKQogCQlyZXR1cm4gSW52YWxpZEF0dHJOdW1iZXI7CiB9CiAKKy8q CisgKiBnZXRfYXR0Z2VuZXJhdGVkCisgKgorICoJCUdpdmVuIHRoZSByZWxh dGlvbiBpZCBhbmQgdGhlIGF0dHJpYnV0ZSBuYW1lLAorICoJCXJldHVybiB0 aGUgImF0dGdlbmVyYXRlZCIgZmllbGQgZnJvbSB0aGUgYXR0cmlidXRlIHJl bGF0aW9uLgorICoKKyAqCQlSZXR1cm5zICdcMCcgaWYgbm90IGZvdW5kLgor ICoKKyAqCQlTaW5jZSBub3QgZ2VuZXJhdGVkIGlzIHJlcHJlc2VudGVkIGJ5 ICdcMCcsIHRoaXMgY2FuIGFsc28gYmUgdXNlZCBhcyBhCisgKgkJQm9vbGVh biB0ZXN0LgorICovCitjaGFyCitnZXRfYXR0Z2VuZXJhdGVkKE9pZCByZWxp ZCwgQXR0ck51bWJlciBhdHRudW0pCit7CisJSGVhcFR1cGxlCXRwOworCisJ dHAgPSBTZWFyY2hTeXNDYWNoZTIoQVRUTlVNLAorCQkJCQkJIE9iamVjdElk R2V0RGF0dW0ocmVsaWQpLAorCQkJCQkJIEludDE2R2V0RGF0dW0oYXR0bnVt KSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHApKQorCXsKKwkJRm9ybV9w Z19hdHRyaWJ1dGUgYXR0X3R1cCA9IChGb3JtX3BnX2F0dHJpYnV0ZSkgR0VU U1RSVUNUKHRwKTsKKwkJY2hhcgkJcmVzdWx0OworCisJCXJlc3VsdCA9IGF0 dF90dXAtPmF0dGdlbmVyYXRlZDsKKwkJUmVsZWFzZVN5c0NhY2hlKHRwKTsK KwkJcmV0dXJuIHJlc3VsdDsKKwl9CisJZWxzZQorCQlyZXR1cm4gJ1wwJzsK K30KKwogLyoKICAqIGdldF9hdHRpZGVudGl0eQogICoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCmluZGV4IGI4ZTM3ODA5YjAu LjQyY2YyMmRkM2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL3JlbGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv cmVsY2FjaGUuYwpAQCAtMzI4MCw2ICszMjgwLDcgQEAgUmVsYXRpb25CdWls ZExvY2FsUmVsYXRpb24oY29uc3QgY2hhciAqcmVsbmFtZSwKIAkJRm9ybV9w Z19hdHRyaWJ1dGUgZGF0dCA9IFR1cGxlRGVzY0F0dHIocmVsLT5yZF9hdHQs IGkpOwogCiAJCWRhdHQtPmF0dGlkZW50aXR5ID0gc2F0dC0+YXR0aWRlbnRp dHk7CisJCWRhdHQtPmF0dGdlbmVyYXRlZCA9IHNhdHQtPmF0dGdlbmVyYXRl ZDsKIAkJZGF0dC0+YXR0bm90bnVsbCA9IHNhdHQtPmF0dG5vdG51bGw7CiAJ CWhhc19ub3RfbnVsbCB8PSBzYXR0LT5hdHRub3RudWxsOwogCX0KZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5jCmluZGV4IDc1ZjA4Y2Q3OTIuLjg4MjE1ZDE0ZTYg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIv c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtMTk3MCw2ICsxOTcwLDEx IEBAIGR1bXBUYWJsZURhdGFfaW5zZXJ0KEFyY2hpdmUgKmZvdXQsIHZvaWQg KmRjb250ZXh0KQogCQkJewogCQkJCWlmIChmaWVsZCA+IDApCiAJCQkJCWFy Y2hwdXRzKCIsICIsIGZvdXQpOworCQkJCWlmICh0YmluZm8tPmF0dGdlbmVy YXRlZFtmaWVsZF0pCisJCQkJeworCQkJCQlhcmNocHV0cygiREVGQVVMVCIs IGZvdXQpOworCQkJCQljb250aW51ZTsKKwkJCQl9CiAJCQkJaWYgKFBRZ2V0 aXNudWxsKHJlcywgdHVwbGUsIGZpZWxkKSkKIAkJCQl7CiAJCQkJCWFyY2hw dXRzKCJOVUxMIiwgZm91dCk7CkBAIC03ODQ2LDYgKzc4NTEsNyBAQCBnZXRU YWJsZUF0dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5mbywg aW50IG51bVRhYmxlcykKIAlpbnQJCQlpX2F0dG5vdG51bGw7CiAJaW50CQkJ aV9hdHRoYXNkZWY7CiAJaW50CQkJaV9hdHRpZGVudGl0eTsKKwlpbnQJCQlp X2F0dGdlbmVyYXRlZDsKIAlpbnQJCQlpX2F0dGlzZHJvcHBlZDsKIAlpbnQJ CQlpX2F0dGxlbjsKIAlpbnQJCQlpX2F0dGFsaWduOwpAQCAtNzkwMiw2ICs3 OTA4LDcgQEAgZ2V0VGFibGVBdHRycyhBcmNoaXZlICpmb3V0LCBUYWJsZUlu Zm8gKnRibGluZm8sIGludCBudW1UYWJsZXMpCiAJCQkJCQkJICAiQ0FTRSBX SEVOIGEuYXR0Y29sbGF0aW9uIDw+IHQudHlwY29sbGF0aW9uICIKIAkJCQkJ CQkgICJUSEVOIGEuYXR0Y29sbGF0aW9uIEVMU0UgMCBFTkQgQVMgYXR0Y29s bGF0aW9uLCAiCiAJCQkJCQkJICAiYS5hdHRpZGVudGl0eSwgIgorCQkJCQkJ CSAgImEuYXR0Z2VuZXJhdGVkLCAiCiAJCQkJCQkJICAicGdfY2F0YWxvZy5h cnJheV90b19zdHJpbmcoQVJSQVkoIgogCQkJCQkJCSAgIlNFTEVDVCBwZ19j YXRhbG9nLnF1b3RlX2lkZW50KG9wdGlvbl9uYW1lKSB8fCAiCiAJCQkJCQkJ ICAiJyAnIHx8IHBnX2NhdGFsb2cucXVvdGVfbGl0ZXJhbChvcHRpb25fdmFs dWUpICIKQEAgLTgwMTUsNiArODAyMiw3IEBAIGdldFRhYmxlQXR0cnMoQXJj aGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVz KQogCQlpX2F0dG5vdG51bGwgPSBQUWZudW1iZXIocmVzLCAiYXR0bm90bnVs bCIpOwogCQlpX2F0dGhhc2RlZiA9IFBRZm51bWJlcihyZXMsICJhdHRoYXNk ZWYiKTsKIAkJaV9hdHRpZGVudGl0eSA9IFBRZm51bWJlcihyZXMsICJhdHRp ZGVudGl0eSIpOworCQlpX2F0dGdlbmVyYXRlZCA9IFBRZm51bWJlcihyZXMs ICJhdHRnZW5lcmF0ZWQiKTsKIAkJaV9hdHRpc2Ryb3BwZWQgPSBQUWZudW1i ZXIocmVzLCAiYXR0aXNkcm9wcGVkIik7CiAJCWlfYXR0bGVuID0gUFFmbnVt YmVyKHJlcywgImF0dGxlbiIpOwogCQlpX2F0dGFsaWduID0gUFFmbnVtYmVy KHJlcywgImF0dGFsaWduIik7CkBAIC04MDMxLDYgKzgwMzksNyBAQCBnZXRU YWJsZUF0dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5mbywg aW50IG51bVRhYmxlcykKIAkJdGJpbmZvLT5hdHRzdG9yYWdlID0gKGNoYXIg KikgcGdfbWFsbG9jKG50dXBzICogc2l6ZW9mKGNoYXIpKTsKIAkJdGJpbmZv LT50eXBzdG9yYWdlID0gKGNoYXIgKikgcGdfbWFsbG9jKG50dXBzICogc2l6 ZW9mKGNoYXIpKTsKIAkJdGJpbmZvLT5hdHRpZGVudGl0eSA9IChjaGFyICop IHBnX21hbGxvYyhudHVwcyAqIHNpemVvZihjaGFyKSk7CisJCXRiaW5mby0+ YXR0Z2VuZXJhdGVkID0gKGNoYXIgKikgcGdfbWFsbG9jKG50dXBzICogc2l6 ZW9mKGNoYXIpKTsKIAkJdGJpbmZvLT5hdHRpc2Ryb3BwZWQgPSAoYm9vbCAq KSBwZ19tYWxsb2MobnR1cHMgKiBzaXplb2YoYm9vbCkpOwogCQl0YmluZm8t PmF0dGxlbiA9IChpbnQgKikgcGdfbWFsbG9jKG50dXBzICogc2l6ZW9mKGlu dCkpOwogCQl0YmluZm8tPmF0dGFsaWduID0gKGNoYXIgKikgcGdfbWFsbG9j KG50dXBzICogc2l6ZW9mKGNoYXIpKTsKQEAgLTgwNTYsNiArODA2NSw3IEBA IGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0Ymxp bmZvLCBpbnQgbnVtVGFibGVzKQogCQkJdGJpbmZvLT5hdHRzdG9yYWdlW2pd ID0gKihQUWdldHZhbHVlKHJlcywgaiwgaV9hdHRzdG9yYWdlKSk7CiAJCQl0 YmluZm8tPnR5cHN0b3JhZ2Vbal0gPSAqKFBRZ2V0dmFsdWUocmVzLCBqLCBp X3R5cHN0b3JhZ2UpKTsKIAkJCXRiaW5mby0+YXR0aWRlbnRpdHlbal0gPSAo aV9hdHRpZGVudGl0eSA+PSAwID8gKihQUWdldHZhbHVlKHJlcywgaiwgaV9h dHRpZGVudGl0eSkpIDogJ1wwJyk7CisJCQl0YmluZm8tPmF0dGdlbmVyYXRl ZFtqXSA9IChpX2F0dGdlbmVyYXRlZCA+PSAwID8gKihQUWdldHZhbHVlKHJl cywgaiwgaV9hdHRnZW5lcmF0ZWQpKSA6ICdcMCcpOwogCQkJdGJpbmZvLT5u ZWVkc19vdmVycmlkZSA9IHRiaW5mby0+bmVlZHNfb3ZlcnJpZGUgfHwgKHRi aW5mby0+YXR0aWRlbnRpdHlbal0gPT0gQVRUUklCVVRFX0lERU5USVRZX0FM V0FZUyk7CiAJCQl0YmluZm8tPmF0dGlzZHJvcHBlZFtqXSA9IChQUWdldHZh bHVlKHJlcywgaiwgaV9hdHRpc2Ryb3BwZWQpWzBdID09ICd0Jyk7CiAJCQl0 YmluZm8tPmF0dGxlbltqXSA9IGF0b2koUFFnZXR2YWx1ZShyZXMsIGosIGlf YXR0bGVuKSk7CkBAIC04MDg4LDcgKzgwOTgsNyBAQCBnZXRUYWJsZUF0dHJz KEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5mbywgaW50IG51bVRh YmxlcykKIAkJCQkJCSAgdGJpbmZvLT5kb2JqLm5hbWUpOwogCiAJCQlwcmlu dGZQUUV4cEJ1ZmZlcihxLCAiU0VMRUNUIHRhYmxlb2lkLCBvaWQsIGFkbnVt LCAiCi0JCQkJCQkJICAicGdfY2F0YWxvZy5wZ19nZXRfZXhwcihhZGJpbiwg YWRyZWxpZCkgQVMgYWRzcmMgIgorCQkJCQkJCSAgInBnX2NhdGFsb2cucGdf Z2V0X2V4cHIoYWRiaW4sIGFkcmVsaWQsIHRydWUpIEFTIGFkc3JjICIKIAkJ CQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfYXR0cmRlZiAiCiAJCQkJCQkJ ICAiV0hFUkUgYWRyZWxpZCA9ICcldSc6OnBnX2NhdGFsb2cub2lkIiwKIAkJ CQkJCQkgIHRiaW5mby0+ZG9iai5jYXRJZC5vaWQpOwpAQCAtMTUzNjQsNiAr MTUzNzQsMjMgQEAgZHVtcFRhYmxlU2NoZW1hKEFyY2hpdmUgKmZvdXQsIFRh YmxlSW5mbyAqdGJpbmZvKQogCQkJCQkJCQkJCSAgdGJpbmZvLT5hdHR0eXBu YW1lc1tqXSk7CiAJCQkJCX0KIAorCQkJCQlpZiAoaGFzX2RlZmF1bHQpCisJ CQkJCXsKKwkJCQkJCWlmICh0YmluZm8tPmF0dGdlbmVyYXRlZFtqXSA9PSBB VFRSSUJVVEVfR0VORVJBVEVEX1NUT1JFRCkKKwkJCQkJCQlhcHBlbmRQUUV4 cEJ1ZmZlcihxLCAiIEdFTkVSQVRFRCBBTFdBWVMgQVMgKCVzKSBTVE9SRUQi LAorCQkJCQkJCQkJCQkgIHRiaW5mby0+YXR0cmRlZnNbal0tPmFkZWZfZXhw cik7CisJCQkJCQllbHNlIGlmICh0YmluZm8tPmF0dGdlbmVyYXRlZFtqXSA9 PSBBVFRSSUJVVEVfR0VORVJBVEVEX1ZJUlRVQUwpCisJCQkJCQkJYXBwZW5k UFFFeHBCdWZmZXIocSwgIiBHRU5FUkFURUQgQUxXQVlTIEFTICglcykiLAor CQkJCQkJCQkJCQkgIHRiaW5mby0+YXR0cmRlZnNbal0tPmFkZWZfZXhwcik7 CisJCQkJCQllbHNlCisJCQkJCQkJYXBwZW5kUFFFeHBCdWZmZXIocSwgIiBE RUZBVUxUICVzIiwKKwkJCQkJCQkJCQkJICB0YmluZm8tPmF0dHJkZWZzW2pd LT5hZGVmX2V4cHIpOworCQkJCQl9CisKKworCQkJCQlpZiAoaGFzX25vdG51 bGwpCisJCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxLCAiIE5PVCBOVUxM Iik7CisKIAkJCQkJLyogQWRkIGNvbGxhdGlvbiBpZiBub3QgZGVmYXVsdCBm b3IgdGhlIHR5cGUgKi8KIAkJCQkJaWYgKE9pZElzVmFsaWQodGJpbmZvLT5h dHRjb2xsYXRpb25bal0pKQogCQkJCQl7CkBAIC0xNTM3OCwxMyArMTU0MDUs NiBAQCBkdW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZv ICp0YmluZm8pCiAJCQkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocSwgZm10 SWQoY29sbC0+ZG9iai5uYW1lKSk7CiAJCQkJCQl9CiAJCQkJCX0KLQotCQkJ CQlpZiAoaGFzX2RlZmF1bHQpCi0JCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcihx LCAiIERFRkFVTFQgJXMiLAotCQkJCQkJCQkJCSAgdGJpbmZvLT5hdHRyZGVm c1tqXS0+YWRlZl9leHByKTsKLQotCQkJCQlpZiAoaGFzX25vdG51bGwpCi0J CQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxLCAiIE5PVCBOVUxMIik7CiAJ CQkJfQogCQkJfQogCkBAIC0xNzg5Miw2ICsxNzkxMiw3IEBAIGZtdENvcHlD b2x1bW5MaXN0KGNvbnN0IFRhYmxlSW5mbyAqdGksIFBRRXhwQnVmZmVyIGJ1 ZmZlcikKIAlpbnQJCQludW1hdHRzID0gdGktPm51bWF0dHM7CiAJY2hhcgkg ICoqYXR0bmFtZXMgPSB0aS0+YXR0bmFtZXM7CiAJYm9vbAkgICAqYXR0aXNk cm9wcGVkID0gdGktPmF0dGlzZHJvcHBlZDsKKwljaGFyCSAgICphdHRnZW5l cmF0ZWQgPSB0aS0+YXR0Z2VuZXJhdGVkOwogCWJvb2wJCW5lZWRDb21tYTsK IAlpbnQJCQlpOwogCkBAIC0xNzkwMSw2ICsxNzkyMiw4IEBAIGZtdENvcHlD b2x1bW5MaXN0KGNvbnN0IFRhYmxlSW5mbyAqdGksIFBRRXhwQnVmZmVyIGJ1 ZmZlcikKIAl7CiAJCWlmIChhdHRpc2Ryb3BwZWRbaV0pCiAJCQljb250aW51 ZTsKKwkJaWYgKGF0dGdlbmVyYXRlZFtpXSkKKwkJCWNvbnRpbnVlOwogCQlp ZiAobmVlZENvbW1hKQogCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoYnVmZmVy LCAiLCAiKTsKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoYnVmZmVyLCBmbXRJ ZChhdHRuYW1lc1tpXSkpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXAuaCBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKaW5kZXgg ZTc1OTNlNmRhNy4uMWFmZTdkODdjMyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5oCkBAIC0zMDksNiArMzA5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX3RhYmxl SW5mbwogCWNoYXIJICAgKnR5cHN0b3JhZ2U7CQkvKiB0eXBlIHN0b3JhZ2Ug c2NoZW1lICovCiAJYm9vbAkgICAqYXR0aXNkcm9wcGVkOwkvKiB0cnVlIGlm IGF0dHIgaXMgZHJvcHBlZDsgZG9uJ3QgZHVtcCBpdCAqLwogCWNoYXIJICAg KmF0dGlkZW50aXR5OworCWNoYXIJICAgKmF0dGdlbmVyYXRlZDsKIAlpbnQJ CSAgICphdHRsZW47CQkJLyogYXR0cmlidXRlIGxlbmd0aCwgdXNlZCBieSBi aW5hcnlfdXBncmFkZSAqLwogCWNoYXIJICAgKmF0dGFsaWduOwkJLyogYXR0 cmlidXRlIGFsaWduLCB1c2VkIGJ5IGJpbmFyeV91cGdyYWRlICovCiAJYm9v bAkgICAqYXR0aXNsb2NhbDsJCS8qIHRydWUgaWYgYXR0ciBoYXMgbG9jYWwg ZGVmaW5pdGlvbiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3Qv MDAyX3BnX2R1bXAucGwgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVt cC5wbAppbmRleCBjNDkyZmJkYzI0Li5kMWRjMDFmY2Q2IDEwMDY0NAotLS0g YS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAorKysgYi9zcmMv YmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbApAQCAtNDk4Niw2ICs0OTg2 LDQ1IEBACiAJCQlyb2xlICAgICAgICAgICAgICAgICAgICAgPT4gMSwKIAkJ CXNlY3Rpb25fcG9zdF9kYXRhICAgICAgICA9PiAxLCB9LCB9LAogCisJJ0NS RUFURSBUQUJMRSB0ZXN0X3RhYmxlX2dlbmVyYXRlZCcgPT4geworCQlhbGxf cnVucyAgICAgPT4gMSwKKwkJY2F0Y2hfYWxsICAgID0+ICdDUkVBVEUgLi4u IGNvbW1hbmRzJywKKwkJY3JlYXRlX29yZGVyID0+IDMsCisJCWNyZWF0ZV9z cWwgICA9PiAnQ1JFQVRFIFRBQkxFIGR1bXBfdGVzdC50ZXN0X3RhYmxlX2dl bmVyYXRlZCAoCisJCQkJCQkgICBjb2wxIGludCBwcmltYXJ5IGtleSwKKwkJ CQkJCSAgIGNvbDIgaW50IGdlbmVyYXRlZCBhbHdheXMgYXMgKGNvbDEgKiAy KQorCQkJCQkgICApOycsCisJCXJlZ2V4cCA9PiBxci9eCisJCQlcUUNSRUFU RSBUQUJMRSB0ZXN0X3RhYmxlX2dlbmVyYXRlZCAoXEVcbgorCQkJXHMrXFFj b2wxIGludGVnZXIgTk9UIE5VTEwsXEVcbgorCQkJXHMrXFFjb2wyIGludGVn ZXIgR0VORVJBVEVEIEFMV0FZUyBBUyAoY29sMSAqIDIpXEVcbgorCQkJXCk7 CisJCQkveG1zLAorCQlsaWtlID0+IHsKKwkJCWJpbmFyeV91cGdyYWRlICAg ICAgICAgID0+IDEsCisJCQljbGVhbiAgICAgICAgICAgICAgICAgICA9PiAx LAorCQkJY2xlYW5faWZfZXhpc3RzICAgICAgICAgPT4gMSwKKwkJCWNyZWF0 ZWRiICAgICAgICAgICAgICAgID0+IDEsCisJCQlkZWZhdWx0cyAgICAgICAg ICAgICAgICA9PiAxLAorCQkJZXhjbHVkZV90ZXN0X3RhYmxlICAgICAgPT4g MSwKKwkJCWV4Y2x1ZGVfdGVzdF90YWJsZV9kYXRhID0+IDEsCisJCQlub19i bG9icyAgICAgICAgICAgICAgICA9PiAxLAorCQkJbm9fcHJpdnMgICAgICAg ICAgICAgICAgPT4gMSwKKwkJCW5vX293bmVyICAgICAgICAgICAgICAgID0+ IDEsCisJCQlvbmx5X2R1bXBfdGVzdF9zY2hlbWEgICA9PiAxLAorCQkJcGdf ZHVtcGFsbF9kYnByaXZzICAgICAgPT4gMSwKKwkJCXNjaGVtYV9vbmx5ICAg ICAgICAgICAgID0+IDEsCisJCQlzZWN0aW9uX3ByZV9kYXRhICAgICAgICA9 PiAxLAorCQkJdGVzdF9zY2hlbWFfcGx1c19ibG9icyAgPT4gMSwKKwkJCXdp dGhfb2lkcyAgICAgICAgICAgICAgID0+IDEsIH0sCisJCXVubGlrZSA9PiB7 CisJCQlleGNsdWRlX2R1bXBfdGVzdF9zY2hlbWEgPT4gMSwKKwkJCW9ubHlf ZHVtcF90ZXN0X3RhYmxlICAgICA9PiAxLAorCQkJcGdfZHVtcGFsbF9nbG9i YWxzICAgICAgID0+IDEsCisJCQlwZ19kdW1wYWxsX2dsb2JhbHNfY2xlYW4g PT4gMSwKKwkJCXJvbGUgICAgICAgICAgICAgICAgICAgICA9PiAxLAorCQkJ c2VjdGlvbl9wb3N0X2RhdGEgICAgICAgID0+IDEsIH0sIH0sCisKIAknQ1JF QVRFIFNUQVRJU1RJQ1MgZXh0ZW5kZWRfc3RhdHNfbm9fb3B0aW9ucycgPT4g ewogCQlhbGxfcnVucyAgICAgPT4gMSwKIAkJY2F0Y2hfYWxsICAgID0+ICdD UkVBVEUgLi4uIGNvbW1hbmRzJywKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNx bC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKaW5kZXgg ZjYwNDljYzllNS4uZjYyNDJiYWJjOCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w c3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMK QEAgLTE1OTQsNyArMTU5NCw3IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxz KGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJICovCiAJcHJpbnRmUFFFeHBC dWZmZXIoJmJ1ZiwgIlNFTEVDVCBhLmF0dG5hbWUsIik7CiAJYXBwZW5kUFFF eHBCdWZmZXJTdHIoJmJ1ZiwgIlxuICBwZ19jYXRhbG9nLmZvcm1hdF90eXBl KGEuYXR0dHlwaWQsIGEuYXR0dHlwbW9kKSwiCi0JCQkJCQkgIlxuICAoU0VM RUNUIHN1YnN0cmluZyhwZ19jYXRhbG9nLnBnX2dldF9leHByKGQuYWRiaW4s IGQuYWRyZWxpZCkgZm9yIDEyOCkiCisJCQkJCQkgIlxuICAoU0VMRUNUIHN1 YnN0cmluZyhwZ19jYXRhbG9nLnBnX2dldF9leHByKGQuYWRiaW4sIGQuYWRy ZWxpZCwgdHJ1ZSkgZm9yIDEyOCkiCiAJCQkJCQkgIlxuICAgRlJPTSBwZ19j YXRhbG9nLnBnX2F0dHJkZWYgZCIKIAkJCQkJCSAiXG4gICBXSEVSRSBkLmFk cmVsaWQgPSBhLmF0dHJlbGlkIEFORCBkLmFkbnVtID0gYS5hdHRudW0gQU5E IGEuYXR0aGFzZGVmKSwiCiAJCQkJCQkgIlxuICBhLmF0dG5vdG51bGwsIGEu YXR0bnVtLCIpOwpAQCAtMTYwNyw2ICsxNjA3LDEwIEBAIGRlc2NyaWJlT25l VGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKCZidWYsICIsXG4gIGEuYXR0aWRlbnRpdHkiKTsK IAllbHNlCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICIsXG4gICcn OjpwZ19jYXRhbG9nLmNoYXIgQVMgYXR0aWRlbnRpdHkiKTsKKwlpZiAocHNl dC5zdmVyc2lvbiA+PSAxMTAwMDApCisJCWFwcGVuZFBRRXhwQnVmZmVyU3Ry KCZidWYsICIsXG4gIGEuYXR0Z2VuZXJhdGVkIik7CisJZWxzZQorCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiLFxuICAnJzo6cGdfY2F0YWxvZy5j aGFyIEFTIGF0dGdlbmVyYXRlZCIpOwogCWlmICh0YWJsZWluZm8ucmVsa2lu ZCA9PSBSRUxLSU5EX0lOREVYKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigm YnVmLCAiLFxuICBwZ19jYXRhbG9nLnBnX2dldF9pbmRleGRlZihhLmF0dHJl bGlkLCBhLmF0dG51bSwgVFJVRSkgQVMgaW5kZXhkZWYiKTsKIAllbHNlCkBA IC0xNzk0LDYgKzE3OTgsNyBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhj b25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQlpZiAoc2hvd19jb2x1bW5fZGV0 YWlscykKIAkJewogCQkJY2hhcgkgICAqaWRlbnRpdHk7CisJCQljaGFyCSAg ICpnZW5lcmF0ZWQ7CiAJCQljaGFyCSAgICpkZWZhdWx0X3N0ciA9ICIiOwog CiAJCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMs IGksIDUpLCBmYWxzZSwgZmFsc2UpOwpAQCAtMTgwMSwxNiArMTgwNiwyMSBA QCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFu YW1lLAogCQkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIHN0cmNtcChQUWdl dHZhbHVlKHJlcywgaSwgMyksICJ0IikgPT0gMCA/ICJub3QgbnVsbCIgOiAi IiwgZmFsc2UsIGZhbHNlKTsKIAogCQkJaWRlbnRpdHkgPSBQUWdldHZhbHVl KHJlcywgaSwgNik7CisJCQlnZW5lcmF0ZWQgPSBQUWdldHZhbHVlKHJlcywg aSwgNyk7CiAKLQkJCWlmICghaWRlbnRpdHlbMF0pCi0JCQkJLyogKG5vdGU6 IGFib3ZlIHdlIGN1dCBvZmYgdGhlICdkZWZhdWx0JyBzdHJpbmcgYXQgMTI4 KSAqLwotCQkJCWRlZmF1bHRfc3RyID0gUFFnZXR2YWx1ZShyZXMsIGksIDIp OwotCQkJZWxzZSBpZiAoaWRlbnRpdHlbMF0gPT0gQVRUUklCVVRFX0lERU5U SVRZX0FMV0FZUykKKwkJCWlmIChpZGVudGl0eVswXSA9PSBBVFRSSUJVVEVf SURFTlRJVFlfQUxXQVlTKQogCQkJCWRlZmF1bHRfc3RyID0gImdlbmVyYXRl ZCBhbHdheXMgYXMgaWRlbnRpdHkiOwogCQkJZWxzZSBpZiAoaWRlbnRpdHlb MF0gPT0gQVRUUklCVVRFX0lERU5USVRZX0JZX0RFRkFVTFQpCiAJCQkJZGVm YXVsdF9zdHIgPSAiZ2VuZXJhdGVkIGJ5IGRlZmF1bHQgYXMgaWRlbnRpdHki OworCQkJZWxzZSBpZiAoZ2VuZXJhdGVkWzBdID09IEFUVFJJQlVURV9HRU5F UkFURURfU1RPUkVEKQorCQkJCWRlZmF1bHRfc3RyID0gcHNwcmludGYoImdl bmVyYXRlZCBhbHdheXMgYXMgKCVzKSBzdG9yZWQiLCBQUWdldHZhbHVlKHJl cywgaSwgMikpOworCQkJZWxzZSBpZiAoZ2VuZXJhdGVkWzBdID09IEFUVFJJ QlVURV9HRU5FUkFURURfVklSVFVBTCkKKwkJCQlkZWZhdWx0X3N0ciA9IHBz cHJpbnRmKCJnZW5lcmF0ZWQgYWx3YXlzIGFzICglcykiLCBQUWdldHZhbHVl KHJlcywgaSwgMikpOworCQkJZWxzZQorCQkJCS8qIChub3RlOiBhYm92ZSB3 ZSBjdXQgb2ZmIHRoZSAnZGVmYXVsdCcgc3RyaW5nIGF0IDEyOCkgKi8KKwkJ CQlkZWZhdWx0X3N0ciA9IFBRZ2V0dmFsdWUocmVzLCBpLCAyKTsKIAotCQkJ cHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIGRlZmF1bHRfc3RyLCBmYWxzZSwg ZmFsc2UpOworCQkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIGRlZmF1bHRf c3RyLCBmYWxzZSwgZ2VuZXJhdGVkWzBdID8gdHJ1ZSA6IGZhbHNlKTsKIAkJ fQogCiAJCS8qIFZhbHVlOiBmb3Igc2VxdWVuY2VzIG9ubHkgKi8KQEAgLTE4 MTksMTYgKzE4MjksMTYgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29u c3QgY2hhciAqc2NoZW1hbmFtZSwKIAogCQkvKiBFeHByZXNzaW9uIGZvciBp bmRleCBjb2x1bW4gKi8KIAkJaWYgKHRhYmxlaW5mby5yZWxraW5kID09IFJF TEtJTkRfSU5ERVgpCi0JCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFn ZXR2YWx1ZShyZXMsIGksIDcpLCBmYWxzZSwgZmFsc2UpOworCQkJcHJpbnRU YWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCA4KSwgZmFs c2UsIGZhbHNlKTsKIAogCQkvKiBGRFcgb3B0aW9ucyBmb3IgZm9yZWlnbiB0 YWJsZSBjb2x1bW4sIG9ubHkgZm9yIDkuMiBvciBsYXRlciAqLwogCQlpZiAo dGFibGVpbmZvLnJlbGtpbmQgPT0gUkVMS0lORF9GT1JFSUdOX1RBQkxFICYm IHBzZXQuc3ZlcnNpb24gPj0gOTAyMDApCi0JCQlwcmludFRhYmxlQWRkQ2Vs bCgmY29udCwgUFFnZXR2YWx1ZShyZXMsIGksIDgpLCBmYWxzZSwgZmFsc2Up OworCQkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVz LCBpLCA5KSwgZmFsc2UsIGZhbHNlKTsKIAogCQkvKiBTdG9yYWdlIGFuZCBE ZXNjcmlwdGlvbiAqLwogCQlpZiAodmVyYm9zZSkKIAkJewotCQkJaW50CQkJ Zmlyc3R2Y29sID0gOTsKKwkJCWludAkJCWZpcnN0dmNvbCA9IDEwOwogCQkJ Y2hhcgkgICAqc3RvcmFnZSA9IFBRZ2V0dmFsdWUocmVzLCBpLCBmaXJzdHZj b2wpOwogCiAJCQkvKiB0aGVzZSBzdHJpbmdzIGFyZSBsaXRlcmFsIGluIG91 ciBzeW50YXgsIHNvIG5vdCB0cmFuc2xhdGVkLiAqLwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmggYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL2NhdHZlcnNpb24uaAppbmRleCAwZGFmZDZiZjJhLi4wZWUy ZjMzZDQwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZl cnNpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24u aApAQCAtNTMsNiArNTMsNiBAQAogICovCiAKIC8qCQkJCQkJCXl5eXltbWRk TiAqLwotI2RlZmluZSBDQVRBTE9HX1ZFUlNJT05fTk8JMjAxNzA3MjExCisj ZGVmaW5lIENBVEFMT0dfVkVSU0lPTl9OTwkyMDE3MDgxNzUKIAogI2VuZGlm CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAuaCBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvaGVhcC5oCmluZGV4IGNiMWJjODg3ZjguLjFh NzYyYTZlNjMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaGVh cC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaGVhcC5oCkBAIC0xMDMs MTMgKzEwMywxNCBAQCBleHRlcm4gTGlzdCAqQWRkUmVsYXRpb25OZXdDb25z dHJhaW50cyhSZWxhdGlvbiByZWwsCiAJCQkJCQkgIGJvb2wgaXNfaW50ZXJu YWwpOwogCiBleHRlcm4gT2lkIFN0b3JlQXR0ckRlZmF1bHQoUmVsYXRpb24g cmVsLCBBdHRyTnVtYmVyIGF0dG51bSwKLQkJCQkgTm9kZSAqZXhwciwgYm9v bCBpc19pbnRlcm5hbCk7CisJCQkJCQkJTm9kZSAqZXhwciwgYm9vbCBpc19p bnRlcm5hbCwgYm9vbCBnZW5lcmF0ZWRfY29sKTsKIAogZXh0ZXJuIE5vZGUg KmNvb2tEZWZhdWx0KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCU5vZGUgKnJh d19kZWZhdWx0LAogCQkJT2lkIGF0dHR5cGlkLAogCQkJaW50MzIgYXR0dHlw bW9kLAotCQkJY2hhciAqYXR0bmFtZSk7CisJCQljaGFyICphdHRuYW1lLAor CQkJY2hhciBhdHRnZW5lcmF0ZWQpOwogCiBleHRlcm4gdm9pZCBEZWxldGVS ZWxhdGlvblR1cGxlKE9pZCByZWxpZCk7CiBleHRlcm4gdm9pZCBEZWxldGVB dHRyaWJ1dGVUdXBsZXMoT2lkIHJlbGlkKTsKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfYXR0cmlidXRlLmggYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX2F0dHJpYnV0ZS5oCmluZGV4IGJjZjI4ZThmMDQuLjVkMGFl OGQ5ZDQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYXR0 cmlidXRlLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hdHRyaWJ1 dGUuaApAQCAtMTM2LDYgKzEzNiw5IEBAIENBVEFMT0cocGdfYXR0cmlidXRl LDEyNDkpIEJLSV9CT09UU1RSQVAgQktJX1dJVEhPVVRfT0lEUyBCS0lfUk9X VFlQRV9PSUQoNzUpIEJLCiAJLyogT25lIG9mIHRoZSBBVFRSSUJVVEVfSURF TlRJVFlfKiBjb25zdGFudHMgYmVsb3csIG9yICdcMCcgKi8KIAljaGFyCQlh dHRpZGVudGl0eTsKIAorCS8qIE9uZSBvZiB0aGUgQVRUUklCVVRFX0dFTkVS QVRFRF8qIGNvbnN0YW50cyBiZWxvdywgb3IgJ1wwJyAqLworCWNoYXIJCWF0 dGdlbmVyYXRlZDsKKwogCS8qIElzIGRyb3BwZWQgKGllLCBsb2dpY2FsbHkg aW52aXNpYmxlKSBvciBub3QgKi8KIAlib29sCQlhdHRpc2Ryb3BwZWQ7CiAK QEAgLTE5MSw3ICsxOTQsNyBAQCB0eXBlZGVmIEZvcm1EYXRhX3BnX2F0dHJp YnV0ZSAqRm9ybV9wZ19hdHRyaWJ1dGU7CiAgKiAtLS0tLS0tLS0tLS0tLS0t CiAgKi8KIAotI2RlZmluZSBOYXR0c19wZ19hdHRyaWJ1dGUJCQkJMjIKKyNk ZWZpbmUgTmF0dHNfcGdfYXR0cmlidXRlCQkJCTIzCiAjZGVmaW5lIEFudW1f cGdfYXR0cmlidXRlX2F0dHJlbGlkCQkxCiAjZGVmaW5lIEFudW1fcGdfYXR0 cmlidXRlX2F0dG5hbWUJCTIKICNkZWZpbmUgQW51bV9wZ19hdHRyaWJ1dGVf YXR0dHlwaWQJCTMKQEAgLTIwNywxMyArMjEwLDE0IEBAIHR5cGVkZWYgRm9y bURhdGFfcGdfYXR0cmlidXRlICpGb3JtX3BnX2F0dHJpYnV0ZTsKICNkZWZp bmUgQW51bV9wZ19hdHRyaWJ1dGVfYXR0bm90bnVsbAkxMwogI2RlZmluZSBB bnVtX3BnX2F0dHJpYnV0ZV9hdHRoYXNkZWYJCTE0CiAjZGVmaW5lIEFudW1f cGdfYXR0cmlidXRlX2F0dGlkZW50aXR5CTE1Ci0jZGVmaW5lIEFudW1fcGdf YXR0cmlidXRlX2F0dGlzZHJvcHBlZAkxNgotI2RlZmluZSBBbnVtX3BnX2F0 dHJpYnV0ZV9hdHRpc2xvY2FsCTE3Ci0jZGVmaW5lIEFudW1fcGdfYXR0cmli dXRlX2F0dGluaGNvdW50CTE4Ci0jZGVmaW5lIEFudW1fcGdfYXR0cmlidXRl X2F0dGNvbGxhdGlvbgkxOQotI2RlZmluZSBBbnVtX3BnX2F0dHJpYnV0ZV9h dHRhY2wJCTIwCi0jZGVmaW5lIEFudW1fcGdfYXR0cmlidXRlX2F0dG9wdGlv bnMJMjEKLSNkZWZpbmUgQW51bV9wZ19hdHRyaWJ1dGVfYXR0ZmR3b3B0aW9u cyAyMgorI2RlZmluZSBBbnVtX3BnX2F0dHJpYnV0ZV9hdHRnZW5lcmF0ZWQJ MTYKKyNkZWZpbmUgQW51bV9wZ19hdHRyaWJ1dGVfYXR0aXNkcm9wcGVkCTE3 CisjZGVmaW5lIEFudW1fcGdfYXR0cmlidXRlX2F0dGlzbG9jYWwJMTgKKyNk ZWZpbmUgQW51bV9wZ19hdHRyaWJ1dGVfYXR0aW5oY291bnQJMTkKKyNkZWZp bmUgQW51bV9wZ19hdHRyaWJ1dGVfYXR0Y29sbGF0aW9uCTIwCisjZGVmaW5l IEFudW1fcGdfYXR0cmlidXRlX2F0dGFjbAkJMjEKKyNkZWZpbmUgQW51bV9w Z19hdHRyaWJ1dGVfYXR0b3B0aW9ucwkyMgorI2RlZmluZSBBbnVtX3BnX2F0 dHJpYnV0ZV9hdHRmZHdvcHRpb25zIDIzCiAKIAogLyogLS0tLS0tLS0tLS0t LS0tLQpAQCAtMjI4LDQgKzIzMiw3IEBAIHR5cGVkZWYgRm9ybURhdGFfcGdf YXR0cmlidXRlICpGb3JtX3BnX2F0dHJpYnV0ZTsKICNkZWZpbmUJCSAgQVRU UklCVVRFX0lERU5USVRZX0FMV0FZUwkJJ2EnCiAjZGVmaW5lCQkgIEFUVFJJ QlVURV9JREVOVElUWV9CWV9ERUZBVUxUICdkJwogCisjZGVmaW5lCQkgIEFU VFJJQlVURV9HRU5FUkFURURfU1RPUkVECSdzJworI2RlZmluZQkJICBBVFRS SUJVVEVfR0VORVJBVEVEX1ZJUlRVQUwJJ3YnCisKICNlbmRpZgkJCQkJCQkv KiBQR19BVFRSSUJVVEVfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19jbGFzcy5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19j bGFzcy5oCmluZGV4IGIyNTY2NTdiZGEuLjQwZjVjYzRmMTggMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY2xhc3MuaAorKysgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX2NsYXNzLmgKQEAgLTE0OSw3ICsxNDksNyBA QCB0eXBlZGVmIEZvcm1EYXRhX3BnX2NsYXNzICpGb3JtX3BnX2NsYXNzOwog ICovCiBEQVRBKGluc2VydCBPSUQgPSAxMjQ3ICggIHBnX3R5cGUJCVBHTlNQ IDcxIDAgUEdVSUQgMCAwIDAgMCAwIDAgMCBmIGYgcCByIDMwIDAgdCBmIGYg ZiBmIGYgZiB0IG4gZiAzIDEgX251bGxfIF9udWxsXyBfbnVsbF8pKTsKIERF U0NSKCIiKTsKLURBVEEoaW5zZXJ0IE9JRCA9IDEyNDkgKCAgcGdfYXR0cmli dXRlCVBHTlNQIDc1IDAgUEdVSUQgMCAwIDAgMCAwIDAgMCBmIGYgcCByIDIy IDAgZiBmIGYgZiBmIGYgZiB0IG4gZiAzIDEgX251bGxfIF9udWxsXyBfbnVs bF8pKTsKK0RBVEEoaW5zZXJ0IE9JRCA9IDEyNDkgKCAgcGdfYXR0cmlidXRl CVBHTlNQIDc1IDAgUEdVSUQgMCAwIDAgMCAwIDAgMCBmIGYgcCByIDIzIDAg ZiBmIGYgZiBmIGYgZiB0IG4gZiAzIDEgX251bGxfIF9udWxsXyBfbnVsbF8p KTsKIERFU0NSKCIiKTsKIERBVEEoaW5zZXJ0IE9JRCA9IDEyNTUgKCAgcGdf cHJvYwkJUEdOU1AgODEgMCBQR1VJRCAwIDAgMCAwIDAgMCAwIGYgZiBwIHIg MjkgMCB0IGYgZiBmIGYgZiBmIHQgbiBmIDMgMSBfbnVsbF8gX251bGxfIF9u dWxsXykpOwogREVTQ1IoIiIpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oCmluZGV4IDVmMmE0YTc1ZGEuLmZjZTY2ZWUwYjMgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMv aW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTY0Nyw2ICs2NDcsNyBA QCB0eXBlZGVmIHN0cnVjdCBDb2x1bW5EZWYKIAlOb2RlCSAgICpyYXdfZGVm YXVsdDsJLyogZGVmYXVsdCB2YWx1ZSAodW50cmFuc2Zvcm1lZCBwYXJzZSB0 cmVlKSAqLwogCU5vZGUJICAgKmNvb2tlZF9kZWZhdWx0OyAvKiBkZWZhdWx0 IHZhbHVlICh0cmFuc2Zvcm1lZCBleHByIHRyZWUpICovCiAJY2hhcgkJaWRl bnRpdHk7CQkvKiBhdHRpZGVudGl0eSBzZXR0aW5nICovCisJY2hhcgkJZ2Vu ZXJhdGVkOwkJLyogYXR0Z2VuZXJhdGVkIHNldHRpbmcgKi8KIAlDb2xsYXRl Q2xhdXNlICpjb2xsQ2xhdXNlOwkvKiB1bnRyYW5zZm9ybWVkIENPTExBVEUg c3BlYywgaWYgYW55ICovCiAJT2lkCQkJY29sbE9pZDsJCS8qIGNvbGxhdGlv biBPSUQgKEludmFsaWRPaWQgaWYgbm90IHNldCkgKi8KIAlMaXN0CSAgICpj b25zdHJhaW50czsJLyogb3RoZXIgY29uc3RyYWludHMgb24gY29sdW1uICov CkBAIC02NjksOSArNjcwLDEwIEBAIHR5cGVkZWYgZW51bSBUYWJsZUxpa2VP cHRpb24KIAlDUkVBVEVfVEFCTEVfTElLRV9ERUZBVUxUUyA9IDEgPDwgMCwK IAlDUkVBVEVfVEFCTEVfTElLRV9DT05TVFJBSU5UUyA9IDEgPDwgMSwKIAlD UkVBVEVfVEFCTEVfTElLRV9JREVOVElUWSA9IDEgPDwgMiwKLQlDUkVBVEVf VEFCTEVfTElLRV9JTkRFWEVTID0gMSA8PCAzLAotCUNSRUFURV9UQUJMRV9M SUtFX1NUT1JBR0UgPSAxIDw8IDQsCi0JQ1JFQVRFX1RBQkxFX0xJS0VfQ09N TUVOVFMgPSAxIDw8IDUsCisJQ1JFQVRFX1RBQkxFX0xJS0VfR0VORVJBVEVE ID0gMSA8PCAzLAorCUNSRUFURV9UQUJMRV9MSUtFX0lOREVYRVMgPSAxIDw8 IDQsCisJQ1JFQVRFX1RBQkxFX0xJS0VfU1RPUkFHRSA9IDEgPDwgNSwKKwlD UkVBVEVfVEFCTEVfTElLRV9DT01NRU5UUyA9IDEgPDwgNiwKIAlDUkVBVEVf VEFCTEVfTElLRV9BTEwgPSBQR19JTlQzMl9NQVgKIH0gVGFibGVMaWtlT3B0 aW9uOwogCkBAIC0yMDQ0LDYgKzIwNDYsNyBAQCB0eXBlZGVmIGVudW0gQ29u c3RyVHlwZQkJCS8qIHR5cGVzIG9mIGNvbnN0cmFpbnRzICovCiAJQ09OU1RS X05PVE5VTEwsCiAJQ09OU1RSX0RFRkFVTFQsCiAJQ09OU1RSX0lERU5USVRZ LAorCUNPTlNUUl9HRU5FUkFURUQsCiAJQ09OU1RSX0NIRUNLLAogCUNPTlNU Ul9QUklNQVJZLAogCUNPTlNUUl9VTklRVUUsCkBAIC0yMDgyLDcgKzIwODUs OCBAQCB0eXBlZGVmIHN0cnVjdCBDb25zdHJhaW50CiAJYm9vbAkJaXNfbm9f aW5oZXJpdDsJLyogaXMgY29uc3RyYWludCBub24taW5oZXJpdGFibGU/ICov CiAJTm9kZQkgICAqcmF3X2V4cHI7CQkvKiBleHByLCBhcyB1bnRyYW5zZm9y bWVkIHBhcnNlIHRyZWUgKi8KIAljaGFyCSAgICpjb29rZWRfZXhwcjsJLyog ZXhwciwgYXMgbm9kZVRvU3RyaW5nIHJlcHJlc2VudGF0aW9uICovCi0JY2hh cgkJZ2VuZXJhdGVkX3doZW47CisJY2hhcgkJZ2VuZXJhdGVkX3doZW47CS8q IEFMV0FZUyBvciBCWSBERUZBVUxUICovCisJY2hhcgkJZ2VuZXJhdGVkX2tp bmQ7IC8qIFNUT1JFRCBvciBWSVJUVUFMICovCiAKIAkvKiBGaWVsZHMgdXNl ZCBmb3IgdW5pcXVlIGNvbnN0cmFpbnRzIChVTklRVUUgYW5kIFBSSU1BUlkg S0VZKTogKi8KIAlMaXN0CSAgICprZXlzOwkJCS8qIFN0cmluZyBub2RlcyBu YW1pbmcgcmVmZXJlbmNlZCBjb2x1bW4ocykgKi8KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCBiL3NyYy9pbmNsdWRlL3BhcnNl ci9rd2xpc3QuaAppbmRleCBmNTBlNDVlODg2Li43YjI4MDgwMTg2IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIvc3Jj L2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBAIC0zNzcsNiArMzc3LDcgQEAg UEdfS0VZV09SRCgic3RhdGlzdGljcyIsIFNUQVRJU1RJQ1MsIFVOUkVTRVJW RURfS0VZV09SRCkKIFBHX0tFWVdPUkQoInN0ZGluIiwgU1RESU4sIFVOUkVT RVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoInN0ZG91dCIsIFNURE9VVCwg VU5SRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgic3RvcmFnZSIsIFNU T1JBR0UsIFVOUkVTRVJWRURfS0VZV09SRCkKK1BHX0tFWVdPUkQoInN0b3Jl ZCIsIFNUT1JFRCwgVU5SRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgi c3RyaWN0IiwgU1RSSUNUX1AsIFVOUkVTRVJWRURfS0VZV09SRCkKIFBHX0tF WVdPUkQoInN0cmlwIiwgU1RSSVBfUCwgVU5SRVNFUlZFRF9LRVlXT1JEKQog UEdfS0VZV09SRCgic3Vic2NyaXB0aW9uIiwgU1VCU0NSSVBUSU9OLCBVTlJF U0VSVkVEX0tFWVdPUkQpCkBAIC00MzIsNiArNDMzLDcgQEAgUEdfS0VZV09S RCgidmVyYm9zZSIsIFZFUkJPU0UsIFRZUEVfRlVOQ19OQU1FX0tFWVdPUkQp CiBQR19LRVlXT1JEKCJ2ZXJzaW9uIiwgVkVSU0lPTl9QLCBVTlJFU0VSVkVE X0tFWVdPUkQpCiBQR19LRVlXT1JEKCJ2aWV3IiwgVklFVywgVU5SRVNFUlZF RF9LRVlXT1JEKQogUEdfS0VZV09SRCgidmlld3MiLCBWSUVXUywgVU5SRVNF UlZFRF9LRVlXT1JEKQorUEdfS0VZV09SRCgidmlydHVhbCIsIFZJUlRVQUws IFVOUkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoInZvbGF0aWxlIiwg Vk9MQVRJTEUsIFVOUkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoIndo ZW4iLCBXSEVOLCBSRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgid2hl cmUiLCBXSEVSRSwgUkVTRVJWRURfS0VZV09SRCkKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmggYi9zcmMvaW5jbHVkZS9w YXJzZXIvcGFyc2Vfbm9kZS5oCmluZGV4IDY4OTMwYzFmNGEuLjQ3MGYxNjNk YTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2Rl LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaApAQCAt NjcsNyArNjcsOCBAQCB0eXBlZGVmIGVudW0gUGFyc2VFeHByS2luZAogCUVY UFJfS0lORF9FWEVDVVRFX1BBUkFNRVRFUiwJLyogcGFyYW1ldGVyIHZhbHVl IGluIEVYRUNVVEUgKi8KIAlFWFBSX0tJTkRfVFJJR0dFUl9XSEVOLAkJLyog V0hFTiBjb25kaXRpb24gaW4gQ1JFQVRFIFRSSUdHRVIgKi8KIAlFWFBSX0tJ TkRfUE9MSUNZLAkJCS8qIFVTSU5HIG9yIFdJVEggQ0hFQ0sgZXhwciBpbiBw b2xpY3kgKi8KLQlFWFBSX0tJTkRfUEFSVElUSU9OX0VYUFJFU1NJT04JLyog UEFSVElUSU9OIEJZIGV4cHJlc3Npb24gKi8KKwlFWFBSX0tJTkRfUEFSVElU SU9OX0VYUFJFU1NJT04sCS8qIFBBUlRJVElPTiBCWSBleHByZXNzaW9uICov CisJRVhQUl9LSU5EX0dFTkVSQVRFRF9DT0xVTU4JLyogZ2VuZXJhdGlvbiBl eHByZXNzaW9uIGZvciBhIGNvbHVtbiAqLwogfSBQYXJzZUV4cHJLaW5kOwog CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Jld3JpdGUvcmV3cml0ZUhh bmRsZXIuaCBiL3NyYy9pbmNsdWRlL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIu aAppbmRleCA0OTRmYTI5ZjEwLi4zYjdiYjQ1MDY4IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmgKKysrIGIvc3Jj L2luY2x1ZGUvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oCkBAIC0yMiwxMiAr MjIsMTMgQEAgZXh0ZXJuIHZvaWQgQWNxdWlyZVJld3JpdGVMb2NrcyhRdWVy eSAqcGFyc2V0cmVlLAogCQkJCQlib29sIGZvckV4ZWN1dGUsCiAJCQkJCWJv b2wgZm9yVXBkYXRlUHVzaGVkRG93bik7CiAKLWV4dGVybiBOb2RlICpidWls ZF9jb2x1bW5fZGVmYXVsdChSZWxhdGlvbiByZWwsIGludCBhdHRybm8pOwor ZXh0ZXJuIE5vZGUgKmJ1aWxkX2NvbHVtbl9kZWZhdWx0KFJlbGF0aW9uIHJl bCwgaW50IGF0dHJubywgYm9vbCBhbGxvd190eXBkZWZhdWx0KTsKIGV4dGVy biBRdWVyeSAqZ2V0X3ZpZXdfcXVlcnkoUmVsYXRpb24gdmlldyk7CiBleHRl cm4gY29uc3QgY2hhciAqdmlld19xdWVyeV9pc19hdXRvX3VwZGF0YWJsZShR dWVyeSAqdmlld3F1ZXJ5LAogCQkJCQkJCSBib29sIGNoZWNrX2NvbHMpOwog ZXh0ZXJuIGludCByZWxhdGlvbl9pc191cGRhdGFibGUoT2lkIHJlbG9pZCwK IAkJCQkJICBib29sIGluY2x1ZGVfdHJpZ2dlcnMsCiAJCQkJCSAgQml0bWFw c2V0ICppbmNsdWRlX2NvbHMpOworZXh0ZXJuIEV4cHIgKmV4cGFuZF9nZW5l cmF0ZWRfY29sdW1uc19pbl9leHByKEV4cHIgKmV4cHIsIFJlbGF0aW9uIHJl bCk7CiAKICNlbmRpZgkJCQkJCQkvKiBSRVdSSVRFSEFORExFUl9IICovCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCBiL3Ny Yy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCmluZGV4IDA3MjA4YjU2Y2Uu LmE3ZTkyMWViYWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2xz eXNjYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5o CkBAIC04Niw2ICs4Niw3IEBAIGV4dGVybiBPaWQgZ2V0X29wZmFtaWx5X3By b2MoT2lkIG9wZmFtaWx5LCBPaWQgbGVmdHR5cGUsIE9pZCByaWdodHR5cGUs CiBleHRlcm4gY2hhciAqZ2V0X2F0dG5hbWUoT2lkIHJlbGlkLCBBdHRyTnVt YmVyIGF0dG51bSk7CiBleHRlcm4gY2hhciAqZ2V0X3JlbGlkX2F0dHJpYnV0 ZV9uYW1lKE9pZCByZWxpZCwgQXR0ck51bWJlciBhdHRudW0pOwogZXh0ZXJu IEF0dHJOdW1iZXIgZ2V0X2F0dG51bShPaWQgcmVsaWQsIGNvbnN0IGNoYXIg KmF0dG5hbWUpOworZXh0ZXJuIGNoYXIgZ2V0X2F0dGdlbmVyYXRlZChPaWQg cmVsaWQsIEF0dHJOdW1iZXIgYXR0bnVtKTsKIGV4dGVybiBjaGFyIGdldF9h dHRpZGVudGl0eShPaWQgcmVsaWQsIEF0dHJOdW1iZXIgYXR0bnVtKTsKIGV4 dGVybiBPaWQJZ2V0X2F0dHR5cGUoT2lkIHJlbGlkLCBBdHRyTnVtYmVyIGF0 dG51bSk7CiBleHRlcm4gaW50MzIgZ2V0X2F0dHR5cG1vZChPaWQgcmVsaWQs IEF0dHJOdW1iZXIgYXR0bnVtKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX3RhYmxlX2xpa2Uub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfdGFibGVfbGlrZS5vdXQKaW5k ZXggM2Y0MDVjOTRjZS4uNWQ0N2UyMjk4MSAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfdGFibGVfbGlrZS5vdXQKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfdGFibGVfbGlr ZS5vdXQKQEAgLTExMyw2ICsxMTMsNTIgQEAgU0VMRUNUICogRlJPTSB0ZXN0 X2xpa2VfaWRfMzsgIC0tIGlkZW50aXR5IHdhcyBjb3BpZWQgYW5kIGFwcGxp ZWQKICgxIHJvdykKIAogRFJPUCBUQUJMRSB0ZXN0X2xpa2VfaWRfMSwgdGVz dF9saWtlX2lkXzIsIHRlc3RfbGlrZV9pZF8zOworQ1JFQVRFIFRBQkxFIHRl c3RfbGlrZV9nZW5fMSAoYSBpbnQsIGIgaW50IEdFTkVSQVRFRCBBTFdBWVMg QVMgKGEgKiAyKSk7CitcZCB0ZXN0X2xpa2VfZ2VuXzEKKyAgICAgICAgICAg ICAgICAgICAgVGFibGUgInB1YmxpYy50ZXN0X2xpa2VfZ2VuXzEiCisgQ29s dW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAg ICAgIERlZmF1bHQgICAgICAgICAgIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBhICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAg ICAgfCAKKyBiICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAg ICAgfCBnZW5lcmF0ZWQgYWx3YXlzIGFzIChhICogMikKKworSU5TRVJUIElO VE8gdGVzdF9saWtlX2dlbl8xIChhKSBWQUxVRVMgKDEpOworU0VMRUNUICog RlJPTSB0ZXN0X2xpa2VfZ2VuXzE7CisgYSB8IGIgCistLS0rLS0tCisgMSB8 IDIKKygxIHJvdykKKworQ1JFQVRFIFRBQkxFIHRlc3RfbGlrZV9nZW5fMiAo TElLRSB0ZXN0X2xpa2VfZ2VuXzEpOworXGQgdGVzdF9saWtlX2dlbl8yCisg ICAgICAgICAgVGFibGUgInB1YmxpYy50ZXN0X2xpa2VfZ2VuXzIiCisgQ29s dW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVs dCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLQorIGEgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAg ICAgICAgICB8IAorIGIgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAg ICAgICAgICB8IAorCitJTlNFUlQgSU5UTyB0ZXN0X2xpa2VfZ2VuXzIgKGEp IFZBTFVFUyAoMSk7CitTRUxFQ1QgKiBGUk9NIHRlc3RfbGlrZV9nZW5fMjsK KyBhIHwgYiAKKy0tLSstLS0KKyAxIHwgIAorKDEgcm93KQorCitDUkVBVEUg VEFCTEUgdGVzdF9saWtlX2dlbl8zIChMSUtFIHRlc3RfbGlrZV9nZW5fMSBJ TkNMVURJTkcgR0VORVJBVEVEKTsKK1xkIHRlc3RfbGlrZV9nZW5fMworICAg ICAgICAgICAgICAgICAgICBUYWJsZSAicHVibGljLnRlc3RfbGlrZV9nZW5f MyIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUg fCAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAgCistLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIGEgICAgICB8IGludGVnZXIgfCAgICAgICAgICAg fCAgICAgICAgICB8IAorIGIgICAgICB8IGludGVnZXIgfCAgICAgICAgICAg fCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdheXMgYXMgKGEgKiAyKQorCitJ TlNFUlQgSU5UTyB0ZXN0X2xpa2VfZ2VuXzMgKGEpIFZBTFVFUyAoMSk7CitT RUxFQ1QgKiBGUk9NIHRlc3RfbGlrZV9nZW5fMzsKKyBhIHwgYiAKKy0tLSst LS0KKyAxIHwgMgorKDEgcm93KQorCitEUk9QIFRBQkxFIHRlc3RfbGlrZV9n ZW5fMSwgdGVzdF9saWtlX2dlbl8yLCB0ZXN0X2xpa2VfZ2VuXzM7CiBDUkVB VEUgVEFCTEUgaW5oZyAoeCB0ZXh0LCBMSUtFIGluaHggSU5DTFVESU5HIElO REVYRVMsIHkgdGV4dCk7IC8qIGNvcGllcyBpbmRleGVzICovCiBJTlNFUlQg SU5UTyBpbmhnIFZBTFVFUyAoNSwgMTApOwogSU5TRVJUIElOVE8gaW5oZyBW QUxVRVMgKDIwLCAxMCk7IC0tIHNob3VsZCBmYWlsCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dlbmVyYXRlZC5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dlbmVyYXRlZC5vdXQKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNzg1MzYyMDNlOQotLS0g L2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2Vu ZXJhdGVkLm91dApAQCAtMCwwICsxLDMwOSBAQAorQ1JFQVRFIFRBQkxFIGd0 ZXN0MCAoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50IEdFTkVSQVRFRCBBTFdB WVMgQVMgKDU1KSk7CitDUkVBVEUgVEFCTEUgZ3Rlc3QxIChhIGludCBQUklN QVJZIEtFWSwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDIpKTsK K1NFTEVDVCB0YWJsZV9uYW1lLCBjb2x1bW5fbmFtZSwgY29sdW1uX2RlZmF1 bHQsIGlzX251bGxhYmxlLCBpc19nZW5lcmF0ZWQsIGdlbmVyYXRpb25fZXhw cmVzc2lvbiBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS5jb2x1bW5zIFdIRVJF IHRhYmxlX25hbWUgTElLRSAnZ3Rlc3RfJyBPUkRFUiBCWSAxLCAyOworIHRh YmxlX25hbWUgfCBjb2x1bW5fbmFtZSB8IGNvbHVtbl9kZWZhdWx0IHwgaXNf bnVsbGFibGUgfCBpc19nZW5lcmF0ZWQgfCBnZW5lcmF0aW9uX2V4cHJlc3Np b24gCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBndGVzdDAgICAgIHwgYSAgICAgICAgICAgfCAgICAg ICAgICAgICAgICB8IE5PICAgICAgICAgIHwgTkVWRVIgICAgICAgIHwgCisg Z3Rlc3QwICAgICB8IGIgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCBZ RVMgICAgICAgICB8IEFMV0FZUyAgICAgICB8IDU1CisgZ3Rlc3QxICAgICB8 IGEgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCBOTyAgICAgICAgICB8 IE5FVkVSICAgICAgICB8IAorIGd0ZXN0MSAgICAgfCBiICAgICAgICAgICB8 ICAgICAgICAgICAgICAgIHwgWUVTICAgICAgICAgfCBBTFdBWVMgICAgICAg fCBhICogMgorKDQgcm93cykKKworLS0gZHVwbGljYXRlIGdlbmVyYXRlZAor Q1JFQVRFIFRBQkxFIGd0ZXN0X2Vycl8xIChhIGludCBQUklNQVJZIEtFWSwg YiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDIpIEdFTkVSQVRFRCBB TFdBWVMgQVMgKGEgKiAzKSk7CitFUlJPUjogIG11bHRpcGxlIGdlbmVyYXRp b24gY2xhdXNlcyBzcGVjaWZpZWQgZm9yIGNvbHVtbiAiYiIgb2YgdGFibGUg Imd0ZXN0X2Vycl8xIgorTElORSAxOiAuLi5udCBQUklNQVJZIEtFWSwgYiBp bnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDIpIEdFTkVSQVRFRCAuLi4K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeCistLSByZWZlcmVuY2VzIHRvIG90aGVyIGdl bmVyYXRlZCBjb2x1bW5zLCBpbmNsdWRpbmcgc2VsZi1yZWZlcmVuY2VzCitD UkVBVEUgVEFCTEUgZ3Rlc3RfZXJyXzJhIChhIGludCBQUklNQVJZIEtFWSwg YiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYiAqIDIpKTsKK0VSUk9SOiAg Y2Fubm90IHVzZSBnZW5lcmF0ZWQgY29sdW1uICJiIiBpbiBjb2x1bW4gZ2Vu ZXJhdGlvbiBleHByZXNzaW9uCitERVRBSUw6ICBBIGdlbmVyYXRlZCBjb2x1 bW4gY2Fubm90IHJlZmVyZW5jZSBhbm90aGVyIGdlbmVyYXRlZCBjb2x1bW4u CitDUkVBVEUgVEFCTEUgZ3Rlc3RfZXJyXzJiIChhIGludCBQUklNQVJZIEtF WSwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDIpLCBjIGludCBH RU5FUkFURUQgQUxXQVlTIEFTIChiICogMykpOworRVJST1I6ICBjYW5ub3Qg dXNlIGdlbmVyYXRlZCBjb2x1bW4gImIiIGluIGNvbHVtbiBnZW5lcmF0aW9u IGV4cHJlc3Npb24KK0RFVEFJTDogIEEgZ2VuZXJhdGVkIGNvbHVtbiBjYW5u b3QgcmVmZXJlbmNlIGFub3RoZXIgZ2VuZXJhdGVkIGNvbHVtbi4KKy0tIGlu dmFsaWQgcmVmZXJlbmNlCitDUkVBVEUgVEFCTEUgZ3Rlc3RfZXJyXzMgKGEg aW50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChj ICogMikpOworRVJST1I6ICBjb2x1bW4gImMiIGRvZXMgbm90IGV4aXN0Cist LSBmdW5jdGlvbnMgbXVzdCBiZSBpbW11dGFibGUKK0NSRUFURSBUQUJMRSBn dGVzdF9lcnJfNCAoYSBpbnQgUFJJTUFSWSBLRVksIGIgZG91YmxlIHByZWNp c2lvbiBHRU5FUkFURUQgQUxXQVlTIEFTIChyYW5kb20oKSkpOworRVJST1I6 ICBjYW5ub3QgdXNlIGZ1bmN0aW9uIHJhbmRvbSgpIGluIGNvbHVtbiBnZW5l cmF0aW9uIGV4cHJlc3Npb24KK0RFVEFJTDogIEZ1bmN0aW9ucyB1c2VkIGlu IGEgY29sdW1uIGdlbmVyYXRpb24gZXhwcmVzc2lvbiBtdXN0IGJlIGltbXV0 YWJsZS4KKy0tIGNhbm5vdCBoYXZlIGRlZmF1bHQvaWRlbnRpdHkgYW5kIGdl bmVyYXRlZAorQ1JFQVRFIFRBQkxFIGd0ZXN0X2Vycl81YSAoYSBpbnQgUFJJ TUFSWSBLRVksIGIgaW50IERFRkFVTFQgNSBHRU5FUkFURUQgQUxXQVlTIEFT IChhICogMikpOworRVJST1I6ICBib3RoIGRlZmF1bHQgYW5kIGdlbmVyYXRp b24gZXhwcmVzc2lvbiBzcGVjaWZpZWQgZm9yIGNvbHVtbiAiYiIgb2YgdGFi bGUgImd0ZXN0X2Vycl81YSIKK0xJTkUgMTogLi4uIGd0ZXN0X2Vycl81YSAo YSBpbnQgUFJJTUFSWSBLRVksIGIgaW50IERFRkFVTFQgNSBHRU5FUkFURUQg Li4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXgorQ1JFQVRFIFRBQkxFIGd0ZXN0X2Vy cl81YiAoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50IEdFTkVSQVRFRCBBTFdB WVMgQVMgaWRlbnRpdHkgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDIpKTsK K0VSUk9SOiAgYm90aCBpZGVudGl0eSBhbmQgZ2VuZXJhdGlvbiBleHByZXNz aW9uIHNwZWNpZmllZCBmb3IgY29sdW1uICJiIiBvZiB0YWJsZSAiZ3Rlc3Rf ZXJyXzViIgorTElORSAxOiAuLi50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5F UkFURUQgQUxXQVlTIEFTIGlkZW50aXR5IEdFTkVSQVRFRCAuLi4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCitJTlNFUlQgSU5UTyBndGVzdDEgVkFMVUVTICgxKTsK K0lOU0VSVCBJTlRPIGd0ZXN0MSBWQUxVRVMgKDIsIERFRkFVTFQpOworSU5T RVJUIElOVE8gZ3Rlc3QxIFZBTFVFUyAoMywgMzMpOyAgLS0gZXJyb3IKK0VS Uk9SOiAgY2Fubm90IGluc2VydCBpbnRvIGNvbHVtbiAiYiIKK0RFVEFJTDog IENvbHVtbiAiYiIgaXMgYSBnZW5lcmF0ZWQgY29sdW1uLgorU0VMRUNUICog RlJPTSBndGVzdDEgT1JERVIgQlkgYTsKKyBhIHwgYiAKKy0tLSstLS0KKyAx IHwgMgorIDIgfCA0CisoMiByb3dzKQorCitVUERBVEUgZ3Rlc3QxIFNFVCBi ID0gREVGQVVMVCBXSEVSRSBhID0gMTsKK1VQREFURSBndGVzdDEgU0VUIGIg PSAxMSBXSEVSRSBhID0gMTsgIC0tIGVycm9yCitFUlJPUjogIGNvbHVtbiAi YiIgY2FuIG9ubHkgYmUgdXBkYXRlZCB0byBERUZBVUxUCitERVRBSUw6ICBD b2x1bW4gImIiIGlzIGEgZ2VuZXJhdGVkIGNvbHVtbi4KK1NFTEVDVCAqIEZS T00gZ3Rlc3QxIE9SREVSIEJZIGE7CisgYSB8IGIgCistLS0rLS0tCisgMSB8 IDIKKyAyIHwgNAorKDIgcm93cykKKworU0VMRUNUIGEsIGIsIGIgKiAyIEFT IGIyIEZST00gZ3Rlc3QxIE9SREVSIEJZIGE7CisgYSB8IGIgfCBiMiAKKy0t LSstLS0rLS0tLQorIDEgfCAyIHwgIDQKKyAyIHwgNCB8ICA4CisoMiByb3dz KQorCitTRUxFQ1QgYSwgYiBGUk9NIGd0ZXN0MSBXSEVSRSBiID0gNCBPUkRF UiBCWSBhOworIGEgfCBiIAorLS0tKy0tLQorIDIgfCA0CisoMSByb3cpCisK Ky0tIHRlc3Qgd2l0aCBqb2lucworQ1JFQVRFIFRBQkxFIGd0ZXN0eCAoeCBp bnQsIHkgaW50KTsKK0lOU0VSVCBJTlRPIGd0ZXN0eCBWQUxVRVMgKDExLCAx KSwgKDIyLCAyKSwgKDMzLCAzKTsKK1NFTEVDVCAqIEZST00gZ3Rlc3R4LCBn dGVzdDEgV0hFUkUgZ3Rlc3R4LnkgPSBndGVzdDEuYTsKKyB4ICB8IHkgfCBh IHwgYiAKKy0tLS0rLS0tKy0tLSstLS0KKyAxMSB8IDEgfCAxIHwgMgorIDIy IHwgMiB8IDIgfCA0CisoMiByb3dzKQorCitEUk9QIFRBQkxFIGd0ZXN0eDsK Ky0tIHRlc3QgVVBEQVRFL0RFTEVURSBxdWFscworU0VMRUNUICogRlJPTSBn dGVzdDEgT1JERVIgQlkgYTsKKyBhIHwgYiAKKy0tLSstLS0KKyAxIHwgMgor IDIgfCA0CisoMiByb3dzKQorCitVUERBVEUgZ3Rlc3QxIFNFVCBhID0gMyBX SEVSRSBiID0gNDsKK1NFTEVDVCAqIEZST00gZ3Rlc3QxIE9SREVSIEJZIGE7 CisgYSB8IGIgCistLS0rLS0tCisgMSB8IDIKKyAzIHwgNgorKDIgcm93cykK KworREVMRVRFIEZST00gZ3Rlc3QxIFdIRVJFIGIgPSAyOworU0VMRUNUICog RlJPTSBndGVzdDEgT1JERVIgQlkgYTsKKyBhIHwgYiAKKy0tLSstLS0KKyAz IHwgNgorKDEgcm93KQorCistLSBzdG9yZWQKK0NSRUFURSBUQUJMRSBndGVz dDMgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5FUkFURUQgQUxXQVlT IEFTIChhICogMykgU1RPUkVEKTsKK0lOU0VSVCBJTlRPIGd0ZXN0MyAoYSkg VkFMVUVTICgxKSwgKDIpLCAoMyk7CitFUlJPUjogIHN0b3JlZCBnZW5lcmF0 ZWQgY29sdW1ucyBhcmUgbm90IHlldCBpbXBsZW1lbnRlZAorU0VMRUNUICog RlJPTSBndGVzdDMgT1JERVIgQlkgYTsKKyBhIHwgYiAKKy0tLSstLS0KKygw IHJvd3MpCisKK1VQREFURSBndGVzdDMgU0VUIGEgPSAyMiBXSEVSRSBhID0g MjsKK0VSUk9SOiAgc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW5zIGFyZSBub3Qg eWV0IGltcGxlbWVudGVkCitTRUxFQ1QgKiBGUk9NIGd0ZXN0MyBPUkRFUiBC WSBhOworIGEgfCBiIAorLS0tKy0tLQorKDAgcm93cykKKworLS0gQ09QWQor VFJVTkNBVEUgZ3Rlc3QxOworSU5TRVJUIElOVE8gZ3Rlc3QxIChhKSBWQUxV RVMgKDEpLCAoMik7CitDT1BZIGd0ZXN0MSBUTyBzdGRvdXQ7CisxCisyCitD T1BZIGd0ZXN0MSAoYSwgYikgVE8gc3Rkb3V0OworRVJST1I6ICBjb2x1bW4g ImIiIGlzIGEgZ2VuZXJhdGVkIGNvbHVtbgorREVUQUlMOiAgR2VuZXJhdGVk IGNvbHVtbnMgY2Fubm90IGJlIHVzZWQgaW4gQ09QWS4KK0NPUFkgZ3Rlc3Qx IEZST00gc3RkaW47CitDT1BZIGd0ZXN0MSAoYSwgYikgRlJPTSBzdGRpbjsK K0VSUk9SOiAgY29sdW1uICJiIiBpcyBhIGdlbmVyYXRlZCBjb2x1bW4KK0RF VEFJTDogIEdlbmVyYXRlZCBjb2x1bW5zIGNhbm5vdCBiZSB1c2VkIGluIENP UFkuCitTRUxFQ1QgKiBGUk9NIGd0ZXN0MSBPUkRFUiBCWSBhOworIGEgfCBi IAorLS0tKy0tLQorIDEgfCAyCisgMiB8IDQKKyAzIHwgNgorKDMgcm93cykK KworLS0gZHJvcCBjb2x1bW4gYmVoYXZpb3IKK0NSRUFURSBUQUJMRSBndGVz dDEwIChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQsIGMgaW50IEdFTkVSQVRF RCBBTFdBWVMgQVMgKGIgKiAyKSk7CitBTFRFUiBUQUJMRSBndGVzdDEwIERS T1AgQ09MVU1OIGI7CitcZCBndGVzdDEwCisgICAgICAgICAgICAgIFRhYmxl ICJwdWJsaWMuZ3Rlc3QxMCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0 aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgYSAgICAgIHwg aW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCitJbmRleGVzOgor ICAgICJndGVzdDEwX3BrZXkiIFBSSU1BUlkgS0VZLCBidHJlZSAoYSkKKwor LS0gcHJpdmlsZWdlcworQ1JFQVRFIFVTRVIgcmVncmVzc191c2VyMTE7CitD UkVBVEUgVEFCTEUgZ3Rlc3QxMSAoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50 LCBjIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChiICogMikpOworSU5TRVJU IElOVE8gZ3Rlc3QxMSBWQUxVRVMgKDEsIDEwKSwgKDIsIDIwKTsKK0dSQU5U IFNFTEVDVCAoYSwgYykgT04gZ3Rlc3QxMSBUTyByZWdyZXNzX3VzZXIxMTsK K0NSRUFURSBGVU5DVElPTiBnZjEoYSBpbnQpIFJFVFVSTlMgaW50IEFTICQk IFNFTEVDVCBhICogMyAkJCBJTU1VVEFCTEUgTEFOR1VBR0UgU1FMOworUkVW T0tFIEFMTCBPTiBGVU5DVElPTiBnZjEoaW50KSBGUk9NIFBVQkxJQzsKK0NS RUFURSBUQUJMRSBndGVzdDEyIChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQs IGMgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGdmMShiKSkpOworSU5TRVJU IElOVE8gZ3Rlc3QxMiBWQUxVRVMgKDEsIDEwKSwgKDIsIDIwKTsKK0dSQU5U IFNFTEVDVCAoYSwgYykgT04gZ3Rlc3QxMiBUTyByZWdyZXNzX3VzZXIxMTsK K1NFVCBST0xFIHJlZ3Jlc3NfdXNlcjExOworU0VMRUNUIGEsIGIgRlJPTSBn dGVzdDExOyAgLS0gbm90IGFsbG93ZWQKK0VSUk9SOiAgcGVybWlzc2lvbiBk ZW5pZWQgZm9yIHJlbGF0aW9uIGd0ZXN0MTEKK1NFTEVDVCBhLCBjIEZST00g Z3Rlc3QxMTsgIC0tIGFsbG93ZWQKKyBhIHwgYyAgCistLS0rLS0tLQorIDEg fCAyMAorIDIgfCA0MAorKDIgcm93cykKKworU0VMRUNUIGdmMSgxMCk7ICAt LSBub3QgYWxsb3dlZAorRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Ig ZnVuY3Rpb24gZ2YxCitTRUxFQ1QgYSwgYyBGUk9NIGd0ZXN0MTI7ICAtLSBG SVhNRTogc2hvdWxkIGJlIGFsbG93ZWQKK0VSUk9SOiAgcGVybWlzc2lvbiBk ZW5pZWQgZm9yIGZ1bmN0aW9uIGdmMQorUkVTRVQgUk9MRTsKK0RST1AgVEFC TEUgZ3Rlc3QxMSwgZ3Rlc3QxMjsKK0RST1AgRlVOQ1RJT04gZ2YxKGludCk7 CitEUk9QIFVTRVIgcmVncmVzc191c2VyMTE7CistLSBjaGVjayBjb25zdHJh aW50cworQ1JFQVRFIFRBQkxFIGd0ZXN0MjAgKGEgaW50IFBSSU1BUlkgS0VZ LCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMikgQ0hFQ0sgKGIg PCA1MCkpOworSU5TRVJUIElOVE8gZ3Rlc3QyMCAoYSkgVkFMVUVTICgxMCk7 ICAtLSBvaworSU5TRVJUIElOVE8gZ3Rlc3QyMCAoYSkgVkFMVUVTICgzMCk7 ICAtLSB2aW9sYXRlcyBjb25zdHJhaW50CitFUlJPUjogIG5ldyByb3cgZm9y IHJlbGF0aW9uICJndGVzdDIwIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50 ICJndGVzdDIwX2JfY2hlY2siCitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250 YWlucyAoMzApLgorLS0gbm90LW51bGwgY29uc3RyYWludHMKK0NSRUFURSBU QUJMRSBndGVzdDIxIChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQgR0VORVJB VEVEIEFMV0FZUyBBUyAobnVsbGlmKGEsIDApKSBub3QgbnVsbCk7CitJTlNF UlQgSU5UTyBndGVzdDIxIChhKSBWQUxVRVMgKDEpOyAgLS0gb2sKK0lOU0VS VCBJTlRPIGd0ZXN0MjEgKGEpIFZBTFVFUyAoMCk7ICAtLSB2aW9sYXRlcyBj b25zdHJhaW50CitFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJndGVz dDIxIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJndGVzdDIxX2JfY2hl Y2siCitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoMCkuCistLSBp bmRleCBjb25zdHJhaW50cworQ1JFQVRFIFRBQkxFIGd0ZXN0MjJhIChhIGlu dCBQUklNQVJZIEtFWSwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAq IDIpIHVuaXF1ZSk7CitFUlJPUjogIGluZGV4IGNyZWF0aW9uIG9uIGdlbmVy YXRlZCBjb2x1bW5zIGlzIG5vdCBzdXBwb3J0ZWQKK0NSRUFURSBUQUJMRSBn dGVzdDIyYiAoYSBpbnQsIGIgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGEg KiAyKSwgUFJJTUFSWSBLRVkgKGEsIGIpKTsKK0VSUk9SOiAgaW5kZXggY3Jl YXRpb24gb24gZ2VuZXJhdGVkIGNvbHVtbnMgaXMgbm90IHN1cHBvcnRlZAor Q1JFQVRFIFRBQkxFIGd0ZXN0MjJjIChhIGludCBQUklNQVJZIEtFWSwgYiBp bnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDIpKTsKK0NSRUFURSBJTkRF WCBPTiBndGVzdDIyYyAoYik7CitFUlJPUjogIGluZGV4IGNyZWF0aW9uIG9u IGdlbmVyYXRlZCBjb2x1bW5zIGlzIG5vdCBzdXBwb3J0ZWQKK0NSRUFURSBJ TkRFWCBPTiBndGVzdDIyYyAoKGIgKiAyKSk7CitFUlJPUjogIGluZGV4IGNy ZWF0aW9uIG9uIGdlbmVyYXRlZCBjb2x1bW5zIGlzIG5vdCBzdXBwb3J0ZWQK K0NSRUFURSBJTkRFWCBPTiBndGVzdDIyYyAoYSkgV0hFUkUgYiA+IDA7CitF UlJPUjogIGluZGV4IGNyZWF0aW9uIG9uIGdlbmVyYXRlZCBjb2x1bW5zIGlz IG5vdCBzdXBwb3J0ZWQKKy0tIGZvcmVpZ24ga2V5cworQ1JFQVRFIFRBQkxF IGd0ZXN0MjNhICh4IGludCBQUklNQVJZIEtFWSwgeSBpbnQpOworQ1JFQVRF IFRBQkxFIGd0ZXN0MjNiIChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQgR0VO RVJBVEVEIEFMV0FZUyBBUyAoYSAqIDIpIFJFRkVSRU5DRVMgZ3Rlc3QyM2Eg KHgpIE9OIFVQREFURSBDQVNDQURFKTsKK0VSUk9SOiAgaW52YWxpZCBPTiBV UERBVEUgYWN0aW9uIGZvciBmb3JlaWduIGtleSBjb25zdHJhaW50IGNvbnRh aW5pbmcgZ2VuZXJhdGVkIGNvbHVtbgorQ1JFQVRFIFRBQkxFIGd0ZXN0MjNi IChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBB UyAoYSAqIDIpIFJFRkVSRU5DRVMgZ3Rlc3QyM2EgKHgpIE9OIERFTEVURSBT RVQgTlVMTCk7CitFUlJPUjogIGludmFsaWQgT04gREVMRVRFIGFjdGlvbiBm b3IgZm9yZWlnbiBrZXkgY29uc3RyYWludCBjb250YWluaW5nIGdlbmVyYXRl ZCBjb2x1bW4KK0NSRUFURSBUQUJMRSBndGVzdDIzYiAoYSBpbnQgUFJJTUFS WSBLRVksIGIgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGEgKiAyKSBSRUZF UkVOQ0VTIGd0ZXN0MjNhICh4KSk7CitFUlJPUjogIGZvcmVpZ24ga2V5IGNv bnN0cmFpbnRzIG9uIGdlbmVyYXRlZCBjb2x1bW5zIGFyZSBub3Qgc3VwcG9y dGVkCitEUk9QIFRBQkxFIGd0ZXN0MjNhOworLS0gZG9tYWlucworQ1JFQVRF IERPTUFJTiBndGVzdGRvbWFpbjEgQVMgaW50IENIRUNLIChWQUxVRSA8IDEw KTsKK0NSRUFURSBUQUJMRSBndGVzdDI0IChhIGludCBQUklNQVJZIEtFWSwg YiBndGVzdGRvbWFpbjEgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDIpKTsg IC0tIHByb2hpYml0ZWQKK0VSUk9SOiAgdmlydHVhbCBnZW5lcmF0ZWQgY29s dW1uICJiIiBjYW5ub3QgaGF2ZSBhIGRvbWFpbiB0eXBlCitMSU5FIDE6IENS RUFURSBUQUJMRSBndGVzdDI0IChhIGludCBQUklNQVJZIEtFWSwgYiBndGVz dGRvbWFpbjEgR0VORS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEFMVEVSIFRBQkxFCitDUkVB VEUgVEFCTEUgZ3Rlc3QyNSAoYSBpbnQgUFJJTUFSWSBLRVkpOworSU5TRVJU IElOVE8gZ3Rlc3QyNSBWQUxVRVMgKDMpLCAoNCk7CitBTFRFUiBUQUJMRSBn dGVzdDI1IEFERCBDT0xVTU4gYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAo YSAqIDMpOworU0VMRUNUICogRlJPTSBndGVzdDI1IE9SREVSIEJZIGE7Cisg YSB8IGIgIAorLS0tKy0tLS0KKyAzIHwgIDkKKyA0IHwgMTIKKygyIHJvd3Mp CisKK0FMVEVSIFRBQkxFIGd0ZXN0MjUgQUREIENPTFVNTiB4IGludCBHRU5F UkFURUQgQUxXQVlTIEFTIChiICogNCk7ICAtLSBlcnJvcgorRVJST1I6ICBj YW5ub3QgdXNlIGdlbmVyYXRlZCBjb2x1bW4gImIiIGluIGNvbHVtbiBnZW5l cmF0aW9uIGV4cHJlc3Npb24KK0RFVEFJTDogIEEgZ2VuZXJhdGVkIGNvbHVt biBjYW5ub3QgcmVmZXJlbmNlIGFub3RoZXIgZ2VuZXJhdGVkIGNvbHVtbi4K K0FMVEVSIFRBQkxFIGd0ZXN0MjUgQUREIENPTFVNTiB4IGludCBHRU5FUkFU RUQgQUxXQVlTIEFTICh6ICogNCk7ICAtLSBlcnJvcgorRVJST1I6ICBjb2x1 bW4gInoiIGRvZXMgbm90IGV4aXN0CistLSB0cmlnZ2VycworQ1JFQVRFIFRB QkxFIGd0ZXN0MjYgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5FUkFU RUQgQUxXQVlTIEFTIChhICogMikpOworQ1JFQVRFIEZVTkNUSU9OIGd0ZXN0 X3RyaWdnZXJfZnVuYygpIFJFVFVSTlMgdHJpZ2dlcgorICBMQU5HVUFHRSBw bHBnc3FsCitBUyAkJAorQkVHSU4KKyAgUkFJU0UgSU5GTyAnJTogb2xkID0g JScsIFRHX05BTUUsIE9MRDsKKyAgUkFJU0UgSU5GTyAnJTogbmV3ID0gJScs IFRHX05BTUUsIE5FVzsKKyAgUkVUVVJOIE5FVzsKK0VORAorJCQ7CitDUkVB VEUgVFJJR0dFUiBndGVzdDEgQkVGT1JFIFVQREFURSBPTiBndGVzdDI2Cisg IEZPUiBFQUNIIFJPVworICBXSEVOIChPTEQuYiA8IDApICAtLSBvaworICBF WEVDVVRFIFBST0NFRFVSRSBndGVzdF90cmlnZ2VyX2Z1bmMoKTsKK0NSRUFU RSBUUklHR0VSIGd0ZXN0MiBCRUZPUkUgVVBEQVRFIE9OIGd0ZXN0MjYKKyAg Rk9SIEVBQ0ggUk9XCisgIFdIRU4gKE5FVy5iIDwgMCkgIC0tIGVycm9yCisg IEVYRUNVVEUgUFJPQ0VEVVJFIGd0ZXN0X3RyaWdnZXJfZnVuYygpOworRVJS T1I6ICBCRUZPUkUgdHJpZ2dlcidzIFdIRU4gY29uZGl0aW9uIGNhbm5vdCBy ZWZlcmVuY2UgTkVXIGdlbmVyYXRlZCBjb2x1bW5zCitMSU5FIDM6ICAgV0hF TiAoTkVXLmIgPCAwKSAgCisgICAgICAgICAgICAgICAgXgorQ1JFQVRFIFRS SUdHRVIgZ3Rlc3QzIEFGVEVSIFVQREFURSBPTiBndGVzdDI2CisgIEZPUiBF QUNIIFJPVworICBXSEVOIChPTEQuYiA8IDApICAtLSBvaworICBFWEVDVVRF IFBST0NFRFVSRSBndGVzdF90cmlnZ2VyX2Z1bmMoKTsKK0NSRUFURSBUUklH R0VSIGd0ZXN0NCBBRlRFUiBVUERBVEUgT04gZ3Rlc3QyNgorICBGT1IgRUFD SCBST1cKKyAgV0hFTiAoTkVXLmIgPCAwKSAgLS0gb2sKKyAgRVhFQ1VURSBQ Uk9DRURVUkUgZ3Rlc3RfdHJpZ2dlcl9mdW5jKCk7CitJTlNFUlQgSU5UTyBn dGVzdDI2IChhKSBWQUxVRVMgKC0yKSwgKDApLCAoMyk7CitTRUxFQ1QgKiBG Uk9NIGd0ZXN0MjYgT1JERVIgQlkgYTsKKyBhICB8IGIgIAorLS0tLSstLS0t CisgLTIgfCAtNAorICAwIHwgIDAKKyAgMyB8ICA2CisoMyByb3dzKQorCitV UERBVEUgZ3Rlc3QyNiBTRVQgYSA9IGEgKiAtMjsKK0lORk86ICBndGVzdDE6 IG9sZCA9ICgtMiwpCitJTkZPOiAgZ3Rlc3QxOiBuZXcgPSAoNCwpCitJTkZP OiAgZ3Rlc3QzOiBvbGQgPSAoLTIsKQorSU5GTzogIGd0ZXN0MzogbmV3ID0g KDQsKQorSU5GTzogIGd0ZXN0NDogb2xkID0gKDMsKQorSU5GTzogIGd0ZXN0 NDogbmV3ID0gKC02LCkKK1NFTEVDVCAqIEZST00gZ3Rlc3QyNiBPUkRFUiBC WSBhOworIGEgIHwgIGIgIAorLS0tLSstLS0tLQorIC02IHwgLTEyCisgIDAg fCAgIDAKKyAgNCB8ICAgOAorKDMgcm93cykKKworQ1JFQVRFIEZVTkNUSU9O IGd0ZXN0X3RyaWdnZXJfZnVuYzIoKSBSRVRVUk5TIHRyaWdnZXIKKyAgTEFO R1VBR0UgcGxwZ3NxbAorQVMgJCQKK0JFR0lOCisgIE5FVy5iID0gNTsKKyAg UkVUVVJOIE5FVzsKK0VORAorJCQ7CitDUkVBVEUgVFJJR0dFUiBndGVzdDEw IEJFRk9SRSBJTlNFUlQgT1IgVVBEQVRFIE9OIGd0ZXN0MjYKKyAgRk9SIEVB Q0ggUk9XCisgIEVYRUNVVEUgUFJPQ0VEVVJFIGd0ZXN0X3RyaWdnZXJfZnVu YzIoKTsKK0lOU0VSVCBJTlRPIGd0ZXN0MjYgKGEpIFZBTFVFUyAoMTApOwor RVJST1I6ICB0cmlnZ2VyIG1vZGlmaWVkIHZpcnR1YWwgZ2VuZXJhdGVkIGNv bHVtbiB2YWx1ZQorVVBEQVRFIGd0ZXN0MjYgU0VUIGEgPSAxIFdIRVJFIGEg PSAwOworRVJST1I6ICB0cmlnZ2VyIG1vZGlmaWVkIHZpcnR1YWwgZ2VuZXJh dGVkIGNvbHVtbiB2YWx1ZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxs ZWxfc2NoZWR1bGUKaW5kZXggZWVmZGVlYWNhZS4uZThmMmZiZTY1OSAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQor KysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC0x MTQsNyArMTE0LDcgQEAgdGVzdDogcGxhbmNhY2hlIGxpbWl0IHBscGdzcWwg Y29weTIgdGVtcCBkb21haW4gcmFuZ2VmdW5jcyBwcmVwYXJlIHdpdGhvdXRf b2lkIGMKICMgLS0tLS0tLS0tLQogIyBBbm90aGVyIGdyb3VwIG9mIHBhcmFs bGVsIHRlc3RzCiAjIC0tLS0tLS0tLS0KLXRlc3Q6IGlkZW50aXR5Cit0ZXN0 OiBpZGVudGl0eSBnZW5lcmF0ZWQKIAogIyBldmVudCB0cmlnZ2VycyBjYW5u b3QgcnVuIGNvbmN1cnJlbnRseSB3aXRoIGFueSB0ZXN0IHRoYXQgcnVucyBE REwKIHRlc3Q6IGV2ZW50X3RyaWdnZXIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc2VyaWFsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9z ZXJpYWxfc2NoZWR1bGUKaW5kZXggNzZiMGRlMzBhNy4uMzQ5M2M2MzgyNCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zZXJpYWxfc2NoZWR1bGUK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zZXJpYWxfc2NoZWR1bGUKQEAgLTE3 MSw2ICsxNzEsNyBAQCB0ZXN0OiB0cnVuY2F0ZQogdGVzdDogYWx0ZXJfdGFi bGUKIHRlc3Q6IHNlcXVlbmNlCiB0ZXN0OiBpZGVudGl0eQordGVzdDogZ2Vu ZXJhdGVkCiB0ZXN0OiBwb2x5bW9ycGhpc20KIHRlc3Q6IHJvd3R5cGVzCiB0 ZXN0OiByZXR1cm5pbmcKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2NyZWF0ZV90YWJsZV9saWtlLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2NyZWF0ZV90YWJsZV9saWtlLnNxbAppbmRleCA1NTcwNDBiYmU3Li4y YWU5NmUzZDY4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9j cmVhdGVfdGFibGVfbGlrZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvY3JlYXRlX3RhYmxlX2xpa2Uuc3FsCkBAIC01MSw2ICs1MSwyMCBAQCBD UkVBVEUgVEFCTEUgdGVzdF9saWtlX2lkXzMgKExJS0UgdGVzdF9saWtlX2lk XzEgSU5DTFVESU5HIElERU5USVRZKTsKIFNFTEVDVCAqIEZST00gdGVzdF9s aWtlX2lkXzM7ICAtLSBpZGVudGl0eSB3YXMgY29waWVkIGFuZCBhcHBsaWVk CiBEUk9QIFRBQkxFIHRlc3RfbGlrZV9pZF8xLCB0ZXN0X2xpa2VfaWRfMiwg dGVzdF9saWtlX2lkXzM7CiAKK0NSRUFURSBUQUJMRSB0ZXN0X2xpa2VfZ2Vu XzEgKGEgaW50LCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMikp OworXGQgdGVzdF9saWtlX2dlbl8xCitJTlNFUlQgSU5UTyB0ZXN0X2xpa2Vf Z2VuXzEgKGEpIFZBTFVFUyAoMSk7CitTRUxFQ1QgKiBGUk9NIHRlc3RfbGlr ZV9nZW5fMTsKK0NSRUFURSBUQUJMRSB0ZXN0X2xpa2VfZ2VuXzIgKExJS0Ug dGVzdF9saWtlX2dlbl8xKTsKK1xkIHRlc3RfbGlrZV9nZW5fMgorSU5TRVJU IElOVE8gdGVzdF9saWtlX2dlbl8yIChhKSBWQUxVRVMgKDEpOworU0VMRUNU ICogRlJPTSB0ZXN0X2xpa2VfZ2VuXzI7CitDUkVBVEUgVEFCTEUgdGVzdF9s aWtlX2dlbl8zIChMSUtFIHRlc3RfbGlrZV9nZW5fMSBJTkNMVURJTkcgR0VO RVJBVEVEKTsKK1xkIHRlc3RfbGlrZV9nZW5fMworSU5TRVJUIElOVE8gdGVz dF9saWtlX2dlbl8zIChhKSBWQUxVRVMgKDEpOworU0VMRUNUICogRlJPTSB0 ZXN0X2xpa2VfZ2VuXzM7CitEUk9QIFRBQkxFIHRlc3RfbGlrZV9nZW5fMSwg dGVzdF9saWtlX2dlbl8yLCB0ZXN0X2xpa2VfZ2VuXzM7CisKIENSRUFURSBU QUJMRSBpbmhnICh4IHRleHQsIExJS0UgaW5oeCBJTkNMVURJTkcgSU5ERVhF UywgeSB0ZXh0KTsgLyogY29waWVzIGluZGV4ZXMgKi8KIElOU0VSVCBJTlRP IGluaGcgVkFMVUVTICg1LCAxMCk7CiBJTlNFUlQgSU5UTyBpbmhnIFZBTFVF UyAoMjAsIDEwKTsgLS0gc2hvdWxkIGZhaWwKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2dlbmVyYXRlZC5zcWwgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9nZW5lcmF0ZWQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAuLjlkYzk2YWQ5M2QKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9nZW5lcmF0ZWQuc3FsCkBAIC0wLDAg KzEsMTkyIEBACitDUkVBVEUgVEFCTEUgZ3Rlc3QwIChhIGludCBQUklNQVJZ IEtFWSwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoNTUpKTsKK0NSRUFU RSBUQUJMRSBndGVzdDEgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5F UkFURUQgQUxXQVlTIEFTIChhICogMikpOworCitTRUxFQ1QgdGFibGVfbmFt ZSwgY29sdW1uX25hbWUsIGNvbHVtbl9kZWZhdWx0LCBpc19udWxsYWJsZSwg aXNfZ2VuZXJhdGVkLCBnZW5lcmF0aW9uX2V4cHJlc3Npb24gRlJPTSBpbmZv cm1hdGlvbl9zY2hlbWEuY29sdW1ucyBXSEVSRSB0YWJsZV9uYW1lIExJS0Ug J2d0ZXN0XycgT1JERVIgQlkgMSwgMjsKKworLS0gZHVwbGljYXRlIGdlbmVy YXRlZAorQ1JFQVRFIFRBQkxFIGd0ZXN0X2Vycl8xIChhIGludCBQUklNQVJZ IEtFWSwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDIpIEdFTkVS QVRFRCBBTFdBWVMgQVMgKGEgKiAzKSk7CisKKy0tIHJlZmVyZW5jZXMgdG8g b3RoZXIgZ2VuZXJhdGVkIGNvbHVtbnMsIGluY2x1ZGluZyBzZWxmLXJlZmVy ZW5jZXMKK0NSRUFURSBUQUJMRSBndGVzdF9lcnJfMmEgKGEgaW50IFBSSU1B UlkgS0VZLCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChiICogMikpOwor Q1JFQVRFIFRBQkxFIGd0ZXN0X2Vycl8yYiAoYSBpbnQgUFJJTUFSWSBLRVks IGIgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGEgKiAyKSwgYyBpbnQgR0VO RVJBVEVEIEFMV0FZUyBBUyAoYiAqIDMpKTsKKworLS0gaW52YWxpZCByZWZl cmVuY2UKK0NSRUFURSBUQUJMRSBndGVzdF9lcnJfMyAoYSBpbnQgUFJJTUFS WSBLRVksIGIgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGMgKiAyKSk7CisK Ky0tIGZ1bmN0aW9ucyBtdXN0IGJlIGltbXV0YWJsZQorQ1JFQVRFIFRBQkxF IGd0ZXN0X2Vycl80IChhIGludCBQUklNQVJZIEtFWSwgYiBkb3VibGUgcHJl Y2lzaW9uIEdFTkVSQVRFRCBBTFdBWVMgQVMgKHJhbmRvbSgpKSk7CisKKy0t IGNhbm5vdCBoYXZlIGRlZmF1bHQvaWRlbnRpdHkgYW5kIGdlbmVyYXRlZAor Q1JFQVRFIFRBQkxFIGd0ZXN0X2Vycl81YSAoYSBpbnQgUFJJTUFSWSBLRVks IGIgaW50IERFRkFVTFQgNSBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMikp OworQ1JFQVRFIFRBQkxFIGd0ZXN0X2Vycl81YiAoYSBpbnQgUFJJTUFSWSBL RVksIGIgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgaWRlbnRpdHkgR0VORVJB VEVEIEFMV0FZUyBBUyAoYSAqIDIpKTsKKworSU5TRVJUIElOVE8gZ3Rlc3Qx IFZBTFVFUyAoMSk7CitJTlNFUlQgSU5UTyBndGVzdDEgVkFMVUVTICgyLCBE RUZBVUxUKTsKK0lOU0VSVCBJTlRPIGd0ZXN0MSBWQUxVRVMgKDMsIDMzKTsg IC0tIGVycm9yCisKK1NFTEVDVCAqIEZST00gZ3Rlc3QxIE9SREVSIEJZIGE7 CisKK1VQREFURSBndGVzdDEgU0VUIGIgPSBERUZBVUxUIFdIRVJFIGEgPSAx OworVVBEQVRFIGd0ZXN0MSBTRVQgYiA9IDExIFdIRVJFIGEgPSAxOyAgLS0g ZXJyb3IKKworU0VMRUNUICogRlJPTSBndGVzdDEgT1JERVIgQlkgYTsKKwor U0VMRUNUIGEsIGIsIGIgKiAyIEFTIGIyIEZST00gZ3Rlc3QxIE9SREVSIEJZ IGE7CitTRUxFQ1QgYSwgYiBGUk9NIGd0ZXN0MSBXSEVSRSBiID0gNCBPUkRF UiBCWSBhOworCistLSB0ZXN0IHdpdGggam9pbnMKK0NSRUFURSBUQUJMRSBn dGVzdHggKHggaW50LCB5IGludCk7CitJTlNFUlQgSU5UTyBndGVzdHggVkFM VUVTICgxMSwgMSksICgyMiwgMiksICgzMywgMyk7CitTRUxFQ1QgKiBGUk9N IGd0ZXN0eCwgZ3Rlc3QxIFdIRVJFIGd0ZXN0eC55ID0gZ3Rlc3QxLmE7CitE Uk9QIFRBQkxFIGd0ZXN0eDsKKworLS0gdGVzdCBVUERBVEUvREVMRVRFIHF1 YWxzCitTRUxFQ1QgKiBGUk9NIGd0ZXN0MSBPUkRFUiBCWSBhOworVVBEQVRF IGd0ZXN0MSBTRVQgYSA9IDMgV0hFUkUgYiA9IDQ7CitTRUxFQ1QgKiBGUk9N IGd0ZXN0MSBPUkRFUiBCWSBhOworREVMRVRFIEZST00gZ3Rlc3QxIFdIRVJF IGIgPSAyOworU0VMRUNUICogRlJPTSBndGVzdDEgT1JERVIgQlkgYTsKKwor LS0gc3RvcmVkCitDUkVBVEUgVEFCTEUgZ3Rlc3QzIChhIGludCBQUklNQVJZ IEtFWSwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDMpIFNUT1JF RCk7CitJTlNFUlQgSU5UTyBndGVzdDMgKGEpIFZBTFVFUyAoMSksICgyKSwg KDMpOworU0VMRUNUICogRlJPTSBndGVzdDMgT1JERVIgQlkgYTsKK1VQREFU RSBndGVzdDMgU0VUIGEgPSAyMiBXSEVSRSBhID0gMjsKK1NFTEVDVCAqIEZS T00gZ3Rlc3QzIE9SREVSIEJZIGE7CisKKy0tIENPUFkKK1RSVU5DQVRFIGd0 ZXN0MTsKK0lOU0VSVCBJTlRPIGd0ZXN0MSAoYSkgVkFMVUVTICgxKSwgKDIp OworCitDT1BZIGd0ZXN0MSBUTyBzdGRvdXQ7CisKK0NPUFkgZ3Rlc3QxIChh LCBiKSBUTyBzdGRvdXQ7CisKK0NPUFkgZ3Rlc3QxIEZST00gc3RkaW47Cisz CitcLgorCitDT1BZIGd0ZXN0MSAoYSwgYikgRlJPTSBzdGRpbjsKKworU0VM RUNUICogRlJPTSBndGVzdDEgT1JERVIgQlkgYTsKKworLS0gZHJvcCBjb2x1 bW4gYmVoYXZpb3IKK0NSRUFURSBUQUJMRSBndGVzdDEwIChhIGludCBQUklN QVJZIEtFWSwgYiBpbnQsIGMgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGIg KiAyKSk7CitBTFRFUiBUQUJMRSBndGVzdDEwIERST1AgQ09MVU1OIGI7CisK K1xkIGd0ZXN0MTAKKworLS0gcHJpdmlsZWdlcworQ1JFQVRFIFVTRVIgcmVn cmVzc191c2VyMTE7CitDUkVBVEUgVEFCTEUgZ3Rlc3QxMSAoYSBpbnQgUFJJ TUFSWSBLRVksIGIgaW50LCBjIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChi ICogMikpOworSU5TRVJUIElOVE8gZ3Rlc3QxMSBWQUxVRVMgKDEsIDEwKSwg KDIsIDIwKTsKK0dSQU5UIFNFTEVDVCAoYSwgYykgT04gZ3Rlc3QxMSBUTyBy ZWdyZXNzX3VzZXIxMTsKKworQ1JFQVRFIEZVTkNUSU9OIGdmMShhIGludCkg UkVUVVJOUyBpbnQgQVMgJCQgU0VMRUNUIGEgKiAzICQkIElNTVVUQUJMRSBM QU5HVUFHRSBTUUw7CitSRVZPS0UgQUxMIE9OIEZVTkNUSU9OIGdmMShpbnQp IEZST00gUFVCTElDOworQ1JFQVRFIFRBQkxFIGd0ZXN0MTIgKGEgaW50IFBS SU1BUlkgS0VZLCBiIGludCwgYyBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAo Z2YxKGIpKSk7CitJTlNFUlQgSU5UTyBndGVzdDEyIFZBTFVFUyAoMSwgMTAp LCAoMiwgMjApOworR1JBTlQgU0VMRUNUIChhLCBjKSBPTiBndGVzdDEyIFRP IHJlZ3Jlc3NfdXNlcjExOworCitTRVQgUk9MRSByZWdyZXNzX3VzZXIxMTsK K1NFTEVDVCBhLCBiIEZST00gZ3Rlc3QxMTsgIC0tIG5vdCBhbGxvd2VkCitT RUxFQ1QgYSwgYyBGUk9NIGd0ZXN0MTE7ICAtLSBhbGxvd2VkCitTRUxFQ1Qg Z2YxKDEwKTsgIC0tIG5vdCBhbGxvd2VkCitTRUxFQ1QgYSwgYyBGUk9NIGd0 ZXN0MTI7ICAtLSBGSVhNRTogc2hvdWxkIGJlIGFsbG93ZWQKK1JFU0VUIFJP TEU7CisKK0RST1AgVEFCTEUgZ3Rlc3QxMSwgZ3Rlc3QxMjsKK0RST1AgRlVO Q1RJT04gZ2YxKGludCk7CitEUk9QIFVTRVIgcmVncmVzc191c2VyMTE7CisK Ky0tIGNoZWNrIGNvbnN0cmFpbnRzCitDUkVBVEUgVEFCTEUgZ3Rlc3QyMCAo YSBpbnQgUFJJTUFSWSBLRVksIGIgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMg KGEgKiAyKSBDSEVDSyAoYiA8IDUwKSk7CitJTlNFUlQgSU5UTyBndGVzdDIw IChhKSBWQUxVRVMgKDEwKTsgIC0tIG9rCitJTlNFUlQgSU5UTyBndGVzdDIw IChhKSBWQUxVRVMgKDMwKTsgIC0tIHZpb2xhdGVzIGNvbnN0cmFpbnQKKwor LS0gbm90LW51bGwgY29uc3RyYWludHMKK0NSRUFURSBUQUJMRSBndGVzdDIx IChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBB UyAobnVsbGlmKGEsIDApKSBub3QgbnVsbCk7CitJTlNFUlQgSU5UTyBndGVz dDIxIChhKSBWQUxVRVMgKDEpOyAgLS0gb2sKK0lOU0VSVCBJTlRPIGd0ZXN0 MjEgKGEpIFZBTFVFUyAoMCk7ICAtLSB2aW9sYXRlcyBjb25zdHJhaW50CisK Ky0tIGluZGV4IGNvbnN0cmFpbnRzCitDUkVBVEUgVEFCTEUgZ3Rlc3QyMmEg KGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFT IChhICogMikgdW5pcXVlKTsKK0NSRUFURSBUQUJMRSBndGVzdDIyYiAoYSBp bnQsIGIgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGEgKiAyKSwgUFJJTUFS WSBLRVkgKGEsIGIpKTsKK0NSRUFURSBUQUJMRSBndGVzdDIyYyAoYSBpbnQg UFJJTUFSWSBLRVksIGIgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGEgKiAy KSk7CitDUkVBVEUgSU5ERVggT04gZ3Rlc3QyMmMgKGIpOworQ1JFQVRFIElO REVYIE9OIGd0ZXN0MjJjICgoYiAqIDIpKTsKK0NSRUFURSBJTkRFWCBPTiBn dGVzdDIyYyAoYSkgV0hFUkUgYiA+IDA7CisKKy0tIGZvcmVpZ24ga2V5cwor Q1JFQVRFIFRBQkxFIGd0ZXN0MjNhICh4IGludCBQUklNQVJZIEtFWSwgeSBp bnQpOworQ1JFQVRFIFRBQkxFIGd0ZXN0MjNiIChhIGludCBQUklNQVJZIEtF WSwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDIpIFJFRkVSRU5D RVMgZ3Rlc3QyM2EgKHgpIE9OIFVQREFURSBDQVNDQURFKTsKK0NSRUFURSBU QUJMRSBndGVzdDIzYiAoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50IEdFTkVS QVRFRCBBTFdBWVMgQVMgKGEgKiAyKSBSRUZFUkVOQ0VTIGd0ZXN0MjNhICh4 KSBPTiBERUxFVEUgU0VUIE5VTEwpOworQ1JFQVRFIFRBQkxFIGd0ZXN0MjNi IChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBB UyAoYSAqIDIpIFJFRkVSRU5DRVMgZ3Rlc3QyM2EgKHgpKTsKK0RST1AgVEFC TEUgZ3Rlc3QyM2E7CisKKy0tIGRvbWFpbnMKK0NSRUFURSBET01BSU4gZ3Rl c3Rkb21haW4xIEFTIGludCBDSEVDSyAoVkFMVUUgPCAxMCk7CitDUkVBVEUg VEFCTEUgZ3Rlc3QyNCAoYSBpbnQgUFJJTUFSWSBLRVksIGIgZ3Rlc3Rkb21h aW4xIEdFTkVSQVRFRCBBTFdBWVMgQVMgKGEgKiAyKSk7ICAtLSBwcm9oaWJp dGVkCisKKy0tIEFMVEVSIFRBQkxFCitDUkVBVEUgVEFCTEUgZ3Rlc3QyNSAo YSBpbnQgUFJJTUFSWSBLRVkpOworSU5TRVJUIElOVE8gZ3Rlc3QyNSBWQUxV RVMgKDMpLCAoNCk7CitBTFRFUiBUQUJMRSBndGVzdDI1IEFERCBDT0xVTU4g YiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDMpOworU0VMRUNUICog RlJPTSBndGVzdDI1IE9SREVSIEJZIGE7CitBTFRFUiBUQUJMRSBndGVzdDI1 IEFERCBDT0xVTU4geCBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYiAqIDQp OyAgLS0gZXJyb3IKK0FMVEVSIFRBQkxFIGd0ZXN0MjUgQUREIENPTFVNTiB4 IGludCBHRU5FUkFURUQgQUxXQVlTIEFTICh6ICogNCk7ICAtLSBlcnJvcgor CistLSB0cmlnZ2VycworQ1JFQVRFIFRBQkxFIGd0ZXN0MjYgKGEgaW50IFBS SU1BUlkgS0VZLCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMikp OworCitDUkVBVEUgRlVOQ1RJT04gZ3Rlc3RfdHJpZ2dlcl9mdW5jKCkgUkVU VVJOUyB0cmlnZ2VyCisgIExBTkdVQUdFIHBscGdzcWwKK0FTICQkCitCRUdJ TgorICBSQUlTRSBJTkZPICclOiBvbGQgPSAlJywgVEdfTkFNRSwgT0xEOwor ICBSQUlTRSBJTkZPICclOiBuZXcgPSAlJywgVEdfTkFNRSwgTkVXOworICBS RVRVUk4gTkVXOworRU5ECiskJDsKKworQ1JFQVRFIFRSSUdHRVIgZ3Rlc3Qx IEJFRk9SRSBVUERBVEUgT04gZ3Rlc3QyNgorICBGT1IgRUFDSCBST1cKKyAg V0hFTiAoT0xELmIgPCAwKSAgLS0gb2sKKyAgRVhFQ1VURSBQUk9DRURVUkUg Z3Rlc3RfdHJpZ2dlcl9mdW5jKCk7CisKK0NSRUFURSBUUklHR0VSIGd0ZXN0 MiBCRUZPUkUgVVBEQVRFIE9OIGd0ZXN0MjYKKyAgRk9SIEVBQ0ggUk9XCisg IFdIRU4gKE5FVy5iIDwgMCkgIC0tIGVycm9yCisgIEVYRUNVVEUgUFJPQ0VE VVJFIGd0ZXN0X3RyaWdnZXJfZnVuYygpOworCitDUkVBVEUgVFJJR0dFUiBn dGVzdDMgQUZURVIgVVBEQVRFIE9OIGd0ZXN0MjYKKyAgRk9SIEVBQ0ggUk9X CisgIFdIRU4gKE9MRC5iIDwgMCkgIC0tIG9rCisgIEVYRUNVVEUgUFJPQ0VE VVJFIGd0ZXN0X3RyaWdnZXJfZnVuYygpOworCitDUkVBVEUgVFJJR0dFUiBn dGVzdDQgQUZURVIgVVBEQVRFIE9OIGd0ZXN0MjYKKyAgRk9SIEVBQ0ggUk9X CisgIFdIRU4gKE5FVy5iIDwgMCkgIC0tIG9rCisgIEVYRUNVVEUgUFJPQ0VE VVJFIGd0ZXN0X3RyaWdnZXJfZnVuYygpOworCitJTlNFUlQgSU5UTyBndGVz dDI2IChhKSBWQUxVRVMgKC0yKSwgKDApLCAoMyk7CitTRUxFQ1QgKiBGUk9N IGd0ZXN0MjYgT1JERVIgQlkgYTsKK1VQREFURSBndGVzdDI2IFNFVCBhID0g YSAqIC0yOworU0VMRUNUICogRlJPTSBndGVzdDI2IE9SREVSIEJZIGE7CisK KworQ1JFQVRFIEZVTkNUSU9OIGd0ZXN0X3RyaWdnZXJfZnVuYzIoKSBSRVRV Uk5TIHRyaWdnZXIKKyAgTEFOR1VBR0UgcGxwZ3NxbAorQVMgJCQKK0JFR0lO CisgIE5FVy5iID0gNTsKKyAgUkVUVVJOIE5FVzsKK0VORAorJCQ7CisKK0NS RUFURSBUUklHR0VSIGd0ZXN0MTAgQkVGT1JFIElOU0VSVCBPUiBVUERBVEUg T04gZ3Rlc3QyNgorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBQUk9DRURV UkUgZ3Rlc3RfdHJpZ2dlcl9mdW5jMigpOworCitJTlNFUlQgSU5UTyBndGVz dDI2IChhKSBWQUxVRVMgKDEwKTsKK1VQREFURSBndGVzdDI2IFNFVCBhID0g MSBXSEVSRSBhID0gMDsKCmJhc2UtY29tbWl0OiAwNGU5Njc4NjE0ZWM2NGFk OTA0MzE3NGFjOTlhMjViMWRjNDUyMzNhCi0tIAoyLjE0LjEKCg== --------------C821A67F37A6C5ADB9EE3F01 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --------------C821A67F37A6C5ADB9EE3F01--