From: Bjorn Munch Date: March 11 2011 9:07am Subject: bzr commit into mysql-5.1-mtr branch (bjorn.munch:2986) List-Archive: http://lists.mysql.com/commits/132794 Message-Id: <201103110907.p2B97f3I004334@khepri15.norway.sun.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 I0F0IGZpbGU6Ly8vaG9tZS9ibTEzNjgwMS9teS9tZXJnZS01MS8gYmFzZWQgb24gcmV2aWQ6Ympv cm4ubXVuY2hAb3JhY2xlLmNvbS0yMDExMDMwODE3NTI1Ni13bmIycHg3cDF5MWFweXdrCgogMjk4 NiBCam9ybiBNdW5jaAkyMDExLTAzLTExIFttZXJnZV0KICAgICAgbWVyZ2UgZnJvbSA1LjEgbWFp bgoKICAgIG1vZGlmaWVkOgogICAgICBteXNxbC10ZXN0L3IvZ3JhbnQucmVzdWx0CiAgICAgIG15 c3FsLXRlc3Qvci9wYXJ0aXRpb24ucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvZnVuY3Nf MS9yL2lubm9kYl9zdG9yZWRwcm9jXzA2LnJlc3VsdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2Z1 bmNzXzEvci9tZW1vcnlfc3RvcmVkcHJvY18wNi5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9zdWl0 ZS9mdW5jc18xL3IvbXlpc2FtX3N0b3JlZHByb2NfMDYucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qv c3VpdGUvZnVuY3NfMS9zdG9yZWRwcm9jL3N0b3JlZHByb2NfMDYuaW5jCiAgICAgIG15c3FsLXRl c3QvdC9ncmFudC50ZXN0CiAgICAgIG15c3FsLXRlc3QvdC9wYXJ0aXRpb24udGVzdAogICAgICBz cWwvaGFfcGFydGl0aW9uLmNjCiAgICAgIHNxbC9zcWxfYWNsLmNjCj09PSBtb2RpZmllZCBmaWxl ICdteXNxbC10ZXN0L3IvZ3JhbnQucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3IvZ3JhbnQucmVz dWx0CTIwMTAtMTItMTUgMTY6MDg6MjEgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9yL2dyYW50LnJl c3VsdAkyMDExLTAyLTA3IDEyOjA2OjIyICswMDAwCkBAIC0xMzI2LDYgKzEzMjYsMTk5IEBAIERS T1AgREFUQUJBU0UgbXlzcWx0ZXN0MjsKIERST1AgVVNFUiB0ZXN0dXNlckBsb2NhbGhvc3Q7CiB1 c2UgdGVzdDsKIAorIworIyBUZXN0IGZvciBidWcgIzM2NTQ0ICJEUk9QIFVTRVIgZG9lcyBub3Qg cmVtb3ZlIHN0b3JlZCBmdW5jdGlvbgorIyAgICAgICAgICAgICAgICAgICAgICBwcml2aWxlZ2Vz Ii4KKyMKK2NyZWF0ZSBkYXRhYmFzZSBteXNxbHRlc3QxOworY3JlYXRlIGZ1bmN0aW9uIG15c3Fs dGVzdDEuZjEoKSByZXR1cm5zIGludCByZXR1cm4gMDsKK2NyZWF0ZSBwcm9jZWR1cmUgbXlzcWx0 ZXN0MS5wMSgpIGJlZ2luIGVuZDsKKyMKKyMgMSkgQ2hlY2sgdGhhdCBEUk9QIFVTRVIgcHJvcGVy bHkgcmVtb3ZlcyBwcml2aWxlZ2VzIG9uIGJvdGgKKyMgICAgc3RvcmVkIHByb2NlZHVyZXMgYW5k IGZ1bmN0aW9ucy4KKyMKK2NyZWF0ZSB1c2VyIG15c3FsdXNlcjFAbG9jYWxob3N0OworZ3JhbnQg ZXhlY3V0ZSBvbiBmdW5jdGlvbiBteXNxbHRlc3QxLmYxIHRvIG15c3FsdXNlcjFAbG9jYWxob3N0 OworZ3JhbnQgZXhlY3V0ZSBvbiBwcm9jZWR1cmUgbXlzcWx0ZXN0MS5wMSB0byBteXNxbHVzZXIx QGxvY2FsaG9zdDsKKyMgUXVpY2sgdGVzdCB0aGF0IGdyYW50ZWQgcHJpdmlsZWdlcyBhcmUgcHJv cGVybHkgcmVmbGVjdGVkCisjIGluIHByaXZpbGVnZSB0YWJsZXMgYW5kIGluIGluLW1lbW9yeSBz dHJ1Y3R1cmVzLgorc2hvdyBncmFudHMgZm9yIG15c3FsdXNlcjFAbG9jYWxob3N0OworR3JhbnRz IGZvciBteXNxbHVzZXIxQGxvY2FsaG9zdAorR1JBTlQgVVNBR0UgT04gKi4qIFRPICdteXNxbHVz ZXIxJ0AnbG9jYWxob3N0JworR1JBTlQgRVhFQ1VURSBPTiBQUk9DRURVUkUgYG15c3FsdGVzdDFg LmBwMWAgVE8gJ215c3FsdXNlcjEnQCdsb2NhbGhvc3QnCitHUkFOVCBFWEVDVVRFIE9OIEZVTkNU SU9OIGBteXNxbHRlc3QxYC5gZjFgIFRPICdteXNxbHVzZXIxJ0AnbG9jYWxob3N0Jworc2VsZWN0 IGRiLCByb3V0aW5lX25hbWUsIHJvdXRpbmVfdHlwZSwgcHJvY19wcml2IGZyb20gbXlzcWwucHJv Y3NfcHJpdiB3aGVyZSB1c2VyPSdteXNxbHVzZXIxJyBhbmQgaG9zdD0nbG9jYWxob3N0JzsKK2Ri CXJvdXRpbmVfbmFtZQlyb3V0aW5lX3R5cGUJcHJvY19wcml2CitteXNxbHRlc3QxCWYxCUZVTkNU SU9OCUV4ZWN1dGUKK215c3FsdGVzdDEJcDEJUFJPQ0VEVVJFCUV4ZWN1dGUKKyMKKyMgQ3JlYXRl IGNvbm5lY3Rpb24gJ2J1Z18zNjU0NF9jb24xJyBhcyAnbXlzcWx1c2VyMUBsb2NhbGhvc3QnLgor Y2FsbCBteXNxbHRlc3QxLnAxKCk7CitzZWxlY3QgbXlzcWx0ZXN0MS5mMSgpOworbXlzcWx0ZXN0 MS5mMSgpCiswCisjCisjIFN3aXRjaCB0byBjb25uZWN0aW9uICdkZWZhdWx0Jy4KK2Ryb3AgdXNl ciBteXNxbHVzZXIxQGxvY2FsaG9zdDsKKyMKKyMgVGVzdCB0aGF0IGRyb3BwaW5nIG9mIHVzZXIg aXMgcHJvcGVybHkgcmVmbGVjdGVkIGluCisjIGJvdGggcHJpdmlsZWdlIHRhYmxlcyBhbmQgaW4g aW4tbWVtb3J5IHN0cnVjdHVyZXMuCisjCisjIFN3aXRjaCB0byBjb25uZWN0aW9uICdidWczNjU0 NF9jb24xJy4KKyMgVGhlIGNvbm5lY3Rpb24gY29sZCBiZSBhbGl2ZSBidXQgc2hvdWxkIG5vdCBi ZSBhYmxlIHRvCisjIGFjY2VzcyB0byBhbnkgb2YgdGhlIHN0b3JlZCByb3V0aW5lcy4KK2NhbGwg bXlzcWx0ZXN0MS5wMSgpOworRVJST1IgNDIwMDA6IGV4ZWN1dGUgY29tbWFuZCBkZW5pZWQgdG8g dXNlciAnbXlzcWx1c2VyMSdAJ2xvY2FsaG9zdCcgZm9yIHJvdXRpbmUgJ215c3FsdGVzdDEucDEn CitzZWxlY3QgbXlzcWx0ZXN0MS5mMSgpOworRVJST1IgNDIwMDA6IGV4ZWN1dGUgY29tbWFuZCBk ZW5pZWQgdG8gdXNlciAnbXlzcWx1c2VyMSdAJ2xvY2FsaG9zdCcgZm9yIHJvdXRpbmUgJ215c3Fs dGVzdDEuZjEnCisjCisjIFN3aXRjaCB0byBjb25uZWN0aW9uICdkZWZhdWx0Jy4KKyMKKyMgTm93 IGNyZWF0ZSB1c2VyIHdpdGggdGhlIHNhbWUgbmFtZSBhbmQgY2hlY2sgdGhhdCBoZQorIyBoYXMg bm90IGluaGVyaXRlZCBwcml2aWxlZ2VzLgorY3JlYXRlIHVzZXIgbXlzcWx1c2VyMUBsb2NhbGhv c3Q7CitzaG93IGdyYW50cyBmb3IgbXlzcWx1c2VyMUBsb2NhbGhvc3Q7CitHcmFudHMgZm9yIG15 c3FsdXNlcjFAbG9jYWxob3N0CitHUkFOVCBVU0FHRSBPTiAqLiogVE8gJ215c3FsdXNlcjEnQCds b2NhbGhvc3QnCitzZWxlY3QgZGIsIHJvdXRpbmVfbmFtZSwgcm91dGluZV90eXBlLCBwcm9jX3By aXYgZnJvbSBteXNxbC5wcm9jc19wcml2IHdoZXJlIHVzZXI9J215c3FsdXNlcjEnIGFuZCBob3N0 PSdsb2NhbGhvc3QnOworZGIJcm91dGluZV9uYW1lCXJvdXRpbmVfdHlwZQlwcm9jX3ByaXYKKyMK KyMgQ3JlYXRlIGNvbm5lY3Rpb24gJ2J1Z18zNjU0NF9jb24yJyBhcyAnbXlzcWx1c2VyMUBsb2Nh bGhvc3QnLgorIyBOZXdseSBjcmVhdGVkIHVzZXIgc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGFjY2Vz cyBhbnkgb2YgdGhlIHJvdXRpbmVzLgorY2FsbCBteXNxbHRlc3QxLnAxKCk7CitFUlJPUiA0MjAw MDogZXhlY3V0ZSBjb21tYW5kIGRlbmllZCB0byB1c2VyICdteXNxbHVzZXIxJ0AnbG9jYWxob3N0 JyBmb3Igcm91dGluZSAnbXlzcWx0ZXN0MS5wMScKK3NlbGVjdCBteXNxbHRlc3QxLmYxKCk7CitF UlJPUiA0MjAwMDogZXhlY3V0ZSBjb21tYW5kIGRlbmllZCB0byB1c2VyICdteXNxbHVzZXIxJ0An bG9jYWxob3N0JyBmb3Igcm91dGluZSAnbXlzcWx0ZXN0MS5mMScKKyMKKyMgU3dpdGNoIHRvIGNv bm5lY3Rpb24gJ2RlZmF1bHQnLgorIworIyAyKSBDaGVjayB0aGF0IFJFTkFNRSBVU0VSIHByb3Bl cmx5IHVwZGF0ZXMgcHJpdmlsZWdlcyBvbiBib3RoCisjICAgIHN0b3JlZCBwcm9jZWR1cmVzIGFu ZCBmdW5jdGlvbnMuCisjCitncmFudCBleGVjdXRlIG9uIGZ1bmN0aW9uIG15c3FsdGVzdDEuZjEg dG8gbXlzcWx1c2VyMUBsb2NhbGhvc3Q7CitncmFudCBleGVjdXRlIG9uIHByb2NlZHVyZSBteXNx bHRlc3QxLnAxIHRvIG15c3FsdXNlcjFAbG9jYWxob3N0OworIworIyBDcmVhdGUgb25lIG1vcmUg dXNlciB0byBtYWtlIGluLW1lbW9yeSBoYXNoZXMgbm9uLXRyaXZpYWwuCisjIFVzZXIgbmFtZXMg J215c3FsdXNlcjExJyBhbmQgJ215c3FsdXNlcjEwJyB3ZXJlIHNlbGVjdGVkCisjIHRvIHRyaWdn ZXIgYnVnIGRpc2NvdmVyZWQgZHVyaW5nIGNvZGUgaW5zcGVjdGlvbi4KK2NyZWF0ZSB1c2VyIG15 c3FsdXNlcjExQGxvY2FsaG9zdDsKK2dyYW50IGV4ZWN1dGUgb24gZnVuY3Rpb24gbXlzcWx0ZXN0 MS5mMSB0byBteXNxbHVzZXIxMUBsb2NhbGhvc3Q7CitncmFudCBleGVjdXRlIG9uIHByb2NlZHVy ZSBteXNxbHRlc3QxLnAxIHRvIG15c3FsdXNlcjExQGxvY2FsaG9zdDsKKyMgQWxzbyBjcmVhdGUg YSBjb3VwbGUgb2YgdGFibGVzIHRvIHRlc3QgZm9yIGFub3RoZXIgYnVnCisjIGRpc2NvdmVyZWQg ZHVyaW5nIGNvZGUgaW5zcGVjdGlvbiAoYWdhaW4gdGFibGUgbmFtZXMgd2VyZQorIyBjaG9zZW4g ZXNwZWNpYWxseSB0byB0cmlnZ2VyIHRoZSBidWcpLgorY3JlYXRlIHRhYmxlIG15c3FsdGVzdDEu dDExIChpIGludCk7CitjcmVhdGUgdGFibGUgbXlzcWx0ZXN0MS50MjIgKGkgaW50KTsKK2dyYW50 IHNlbGVjdCBvbiBteXNxbHRlc3QxLnQyMiB0byBteXNxbHVzZXIxQGxvY2FsaG9zdDsKK2dyYW50 IHNlbGVjdCBvbiBteXNxbHRlc3QxLnQxMSB0byBteXNxbHVzZXIxQGxvY2FsaG9zdDsKKyMgUXVp Y2sgdGVzdCB0aGF0IGdyYW50ZWQgcHJpdmlsZWdlcyBhcmUgcHJvcGVybHkgcmVmbGVjdGVkCisj IGluIHByaXZpbGVnZSB0YWJsZXMgYW5kIGluIGluLW1lbW9yeSBzdHJ1Y3R1cmVzLgorc2hvdyBn cmFudHMgZm9yIG15c3FsdXNlcjFAbG9jYWxob3N0OworR3JhbnRzIGZvciBteXNxbHVzZXIxQGxv Y2FsaG9zdAorR1JBTlQgVVNBR0UgT04gKi4qIFRPICdteXNxbHVzZXIxJ0AnbG9jYWxob3N0Jwor R1JBTlQgU0VMRUNUIE9OIGBteXNxbHRlc3QxYC5gdDExYCBUTyAnbXlzcWx1c2VyMSdAJ2xvY2Fs aG9zdCcKK0dSQU5UIFNFTEVDVCBPTiBgbXlzcWx0ZXN0MWAuYHQyMmAgVE8gJ215c3FsdXNlcjEn QCdsb2NhbGhvc3QnCitHUkFOVCBFWEVDVVRFIE9OIFBST0NFRFVSRSBgbXlzcWx0ZXN0MWAuYHAx YCBUTyAnbXlzcWx1c2VyMSdAJ2xvY2FsaG9zdCcKK0dSQU5UIEVYRUNVVEUgT04gRlVOQ1RJT04g YG15c3FsdGVzdDFgLmBmMWAgVE8gJ215c3FsdXNlcjEnQCdsb2NhbGhvc3QnCitzZWxlY3QgZGIs IHJvdXRpbmVfbmFtZSwgcm91dGluZV90eXBlLCBwcm9jX3ByaXYgZnJvbSBteXNxbC5wcm9jc19w cml2IHdoZXJlIHVzZXI9J215c3FsdXNlcjEnIGFuZCBob3N0PSdsb2NhbGhvc3QnOworZGIJcm91 dGluZV9uYW1lCXJvdXRpbmVfdHlwZQlwcm9jX3ByaXYKK215c3FsdGVzdDEJZjEJRlVOQ1RJT04J RXhlY3V0ZQorbXlzcWx0ZXN0MQlwMQlQUk9DRURVUkUJRXhlY3V0ZQorc2VsZWN0IGRiLCB0YWJs ZV9uYW1lLCB0YWJsZV9wcml2IGZyb20gbXlzcWwudGFibGVzX3ByaXYgd2hlcmUgdXNlcj0nbXlz cWx1c2VyMScgYW5kIGhvc3Q9J2xvY2FsaG9zdCc7CitkYgl0YWJsZV9uYW1lCXRhYmxlX3ByaXYK K215c3FsdGVzdDEJdDExCVNlbGVjdAorbXlzcWx0ZXN0MQl0MjIJU2VsZWN0CisjCisjIFN3aXRj aCB0byBjb25uZWN0aW9uICdidWczNjU0NF9jb24yJy4KK2NhbGwgbXlzcWx0ZXN0MS5wMSgpOwor c2VsZWN0IG15c3FsdGVzdDEuZjEoKTsKK215c3FsdGVzdDEuZjEoKQorMAorc2VsZWN0ICogZnJv bSBteXNxbHRlc3QxLnQxMTsKK2kKK3NlbGVjdCAqIGZyb20gbXlzcWx0ZXN0MS50MjI7CitpCisj CisjIFN3aXRjaCB0byBjb25uZWN0aW9uICdkZWZhdWx0Jy4KK3JlbmFtZSB1c2VyIG15c3FsdXNl cjFAbG9jYWxob3N0IHRvIG15c3FsdXNlcjEwQGxvY2FsaG9zdDsKKyMKKyMgVGVzdCB0aGF0IHRo ZXJlIGFyZSBubyBwcml2aWxlZ2VzIGxlZnQgZm9yIG15c3FsdXNlcjEuCisjCisjIFN3aXRjaCB0 byBjb25uZWN0aW9uICdidWczNjU0NF9jb24yJy4KKyMgVGhlIGNvbm5lY3Rpb24gY29sZCBiZSBh bGl2ZSBidXQgc2hvdWxkIG5vdCBiZSBhYmxlIHRvCisjIGFjY2VzcyB0byBhbnkgb2YgdGhlIHN0 b3JlZCByb3V0aW5lcyBvciB0YWJsZXMuCitjYWxsIG15c3FsdGVzdDEucDEoKTsKK0VSUk9SIDQy MDAwOiBleGVjdXRlIGNvbW1hbmQgZGVuaWVkIHRvIHVzZXIgJ215c3FsdXNlcjEnQCdsb2NhbGhv c3QnIGZvciByb3V0aW5lICdteXNxbHRlc3QxLnAxJworc2VsZWN0IG15c3FsdGVzdDEuZjEoKTsK K0VSUk9SIDQyMDAwOiBleGVjdXRlIGNvbW1hbmQgZGVuaWVkIHRvIHVzZXIgJ215c3FsdXNlcjEn QCdsb2NhbGhvc3QnIGZvciByb3V0aW5lICdteXNxbHRlc3QxLmYxJworc2VsZWN0ICogZnJvbSBt eXNxbHRlc3QxLnQxMTsKK0VSUk9SIDQyMDAwOiBTRUxFQ1QgY29tbWFuZCBkZW5pZWQgdG8gdXNl ciAnbXlzcWx1c2VyMSdAJ2xvY2FsaG9zdCcgZm9yIHRhYmxlICd0MTEnCitzZWxlY3QgKiBmcm9t IG15c3FsdGVzdDEudDIyOworRVJST1IgNDIwMDA6IFNFTEVDVCBjb21tYW5kIGRlbmllZCB0byB1 c2VyICdteXNxbHVzZXIxJ0AnbG9jYWxob3N0JyBmb3IgdGFibGUgJ3QyMicKKyMKKyMgU3dpdGNo IHRvIGNvbm5lY3Rpb24gJ2RlZmF1bHQnLgorIworIyBOb3cgY3JlYXRlIHVzZXIgd2l0aCB0aGUg b2xkIG5hbWUgYW5kIGNoZWNrIHRoYXQgaGUKKyMgaGFzIG5vdCBpbmhlcml0ZWQgcHJpdmlsZWdl cy4KK2NyZWF0ZSB1c2VyIG15c3FsdXNlcjFAbG9jYWxob3N0Oworc2hvdyBncmFudHMgZm9yIG15 c3FsdXNlcjFAbG9jYWxob3N0OworR3JhbnRzIGZvciBteXNxbHVzZXIxQGxvY2FsaG9zdAorR1JB TlQgVVNBR0UgT04gKi4qIFRPICdteXNxbHVzZXIxJ0AnbG9jYWxob3N0Jworc2VsZWN0IGRiLCBy b3V0aW5lX25hbWUsIHJvdXRpbmVfdHlwZSwgcHJvY19wcml2IGZyb20gbXlzcWwucHJvY3NfcHJp diB3aGVyZSB1c2VyPSdteXNxbHVzZXIxJyBhbmQgaG9zdD0nbG9jYWxob3N0JzsKK2RiCXJvdXRp bmVfbmFtZQlyb3V0aW5lX3R5cGUJcHJvY19wcml2CitzZWxlY3QgZGIsIHRhYmxlX25hbWUsIHRh YmxlX3ByaXYgZnJvbSBteXNxbC50YWJsZXNfcHJpdiB3aGVyZSB1c2VyPSdteXNxbHVzZXIxJyBh bmQgaG9zdD0nbG9jYWxob3N0JzsKK2RiCXRhYmxlX25hbWUJdGFibGVfcHJpdgorIworIyBDcmVh dGUgY29ubmVjdGlvbiAnYnVnXzM2NTQ0X2NvbjMnIGFzICdteXNxbHVzZXIxQGxvY2FsaG9zdCcu CisjIE5ld2x5IGNyZWF0ZWQgdXNlciBzaG91bGQgbm90IGJlIGFibGUgdG8gYWNjZXNzIHRvIGFu eSBvZiB0aGUKKyMgc3RvcmVkIHJvdXRpbmVzIG9yIHRhYmxlcy4KK2NhbGwgbXlzcWx0ZXN0MS5w MSgpOworRVJST1IgNDIwMDA6IGV4ZWN1dGUgY29tbWFuZCBkZW5pZWQgdG8gdXNlciAnbXlzcWx1 c2VyMSdAJ2xvY2FsaG9zdCcgZm9yIHJvdXRpbmUgJ215c3FsdGVzdDEucDEnCitzZWxlY3QgbXlz cWx0ZXN0MS5mMSgpOworRVJST1IgNDIwMDA6IGV4ZWN1dGUgY29tbWFuZCBkZW5pZWQgdG8gdXNl ciAnbXlzcWx1c2VyMSdAJ2xvY2FsaG9zdCcgZm9yIHJvdXRpbmUgJ215c3FsdGVzdDEuZjEnCitz ZWxlY3QgKiBmcm9tIG15c3FsdGVzdDEudDExOworRVJST1IgNDIwMDA6IFNFTEVDVCBjb21tYW5k IGRlbmllZCB0byB1c2VyICdteXNxbHVzZXIxJ0AnbG9jYWxob3N0JyBmb3IgdGFibGUgJ3QxMScK K3NlbGVjdCAqIGZyb20gbXlzcWx0ZXN0MS50MjI7CitFUlJPUiA0MjAwMDogU0VMRUNUIGNvbW1h bmQgZGVuaWVkIHRvIHVzZXIgJ215c3FsdXNlcjEnQCdsb2NhbGhvc3QnIGZvciB0YWJsZSAndDIy JworIworIyBTd2l0Y2ggdG8gY29ubmVjdGlvbiAnZGVmYXVsdCcuCisjCisjIE5vdyBjaGVjayB0 aGF0IHByaXZpbGVnZXMgYmVjYW1lIGFzc29jaWF0ZWQgd2l0aCBhIG5ldyB1c2VyCisjIG5hbWUg LSBteXNxbHVzZXIxMC4KKyMKK3Nob3cgZ3JhbnRzIGZvciBteXNxbHVzZXIxMEBsb2NhbGhvc3Q7 CitHcmFudHMgZm9yIG15c3FsdXNlcjEwQGxvY2FsaG9zdAorR1JBTlQgVVNBR0UgT04gKi4qIFRP ICdteXNxbHVzZXIxMCdAJ2xvY2FsaG9zdCcKK0dSQU5UIFNFTEVDVCBPTiBgbXlzcWx0ZXN0MWAu YHQyMmAgVE8gJ215c3FsdXNlcjEwJ0AnbG9jYWxob3N0JworR1JBTlQgU0VMRUNUIE9OIGBteXNx bHRlc3QxYC5gdDExYCBUTyAnbXlzcWx1c2VyMTAnQCdsb2NhbGhvc3QnCitHUkFOVCBFWEVDVVRF IE9OIFBST0NFRFVSRSBgbXlzcWx0ZXN0MWAuYHAxYCBUTyAnbXlzcWx1c2VyMTAnQCdsb2NhbGhv c3QnCitHUkFOVCBFWEVDVVRFIE9OIEZVTkNUSU9OIGBteXNxbHRlc3QxYC5gZjFgIFRPICdteXNx bHVzZXIxMCdAJ2xvY2FsaG9zdCcKK3NlbGVjdCBkYiwgcm91dGluZV9uYW1lLCByb3V0aW5lX3R5 cGUsIHByb2NfcHJpdiBmcm9tIG15c3FsLnByb2NzX3ByaXYgd2hlcmUgdXNlcj0nbXlzcWx1c2Vy MTAnIGFuZCBob3N0PSdsb2NhbGhvc3QnOworZGIJcm91dGluZV9uYW1lCXJvdXRpbmVfdHlwZQlw cm9jX3ByaXYKK215c3FsdGVzdDEJZjEJRlVOQ1RJT04JRXhlY3V0ZQorbXlzcWx0ZXN0MQlwMQlQ Uk9DRURVUkUJRXhlY3V0ZQorc2VsZWN0IGRiLCB0YWJsZV9uYW1lLCB0YWJsZV9wcml2IGZyb20g bXlzcWwudGFibGVzX3ByaXYgd2hlcmUgdXNlcj0nbXlzcWx1c2VyMTAnIGFuZCBob3N0PSdsb2Nh bGhvc3QnOworZGIJdGFibGVfbmFtZQl0YWJsZV9wcml2CitteXNxbHRlc3QxCXQxMQlTZWxlY3QK K215c3FsdGVzdDEJdDIyCVNlbGVjdAorIworIyBDcmVhdGUgY29ubmVjdGlvbiAnYnVnXzM2NTQ0 X2NvbjQnIGFzICdteXNxbHVzZXIxMEBsb2NhbGhvc3QnLgorY2FsbCBteXNxbHRlc3QxLnAxKCk7 CitzZWxlY3QgbXlzcWx0ZXN0MS5mMSgpOworbXlzcWx0ZXN0MS5mMSgpCiswCitzZWxlY3QgKiBm cm9tIG15c3FsdGVzdDEudDExOworaQorc2VsZWN0ICogZnJvbSBteXNxbHRlc3QxLnQyMjsKK2kK KyMKKyMgU3dpdGNoIHRvIGNvbm5lY3Rpb24gJ2RlZmF1bHQnLgorIworIyBDbGVhbi11cC4KK2Ry b3AgdXNlciBteXNxbHVzZXIxQGxvY2FsaG9zdDsKK2Ryb3AgdXNlciBteXNxbHVzZXIxMEBsb2Nh bGhvc3Q7Citkcm9wIHVzZXIgbXlzcWx1c2VyMTFAbG9jYWxob3N0OworZHJvcCBkYXRhYmFzZSBt eXNxbHRlc3QxOwogRW5kIG9mIDUuMCB0ZXN0cwogc2V0IG5hbWVzIHV0Zjg7CiBncmFudCBzZWxl Y3Qgb24gdGVzdC4qIHRvIO+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/vV/vv73vv73vv73vv73vv73v v73vv73vv71AbG9jYWxob3N0OwpAQCAtMTQyMiwxMSArMTYxNSw3IEBAIGZuMigpCiAyCiBEUk9Q IFVTRVIgJ3VzZXJidWczMzQ2NCdAJ2xvY2FsaG9zdCc7CiBEUk9QIEZVTkNUSU9OIGZuMTsKLVdh cm5pbmdzOgotV2FybmluZwkxNDAzCVRoZXJlIGlzIG5vIHN1Y2ggZ3JhbnQgZGVmaW5lZCBmb3Ig dXNlciAndXNlcmJ1ZzMzNDY0JyBvbiBob3N0ICdsb2NhbGhvc3QnIG9uIHJvdXRpbmUgJ2ZuMScK IERST1AgRlVOQ1RJT04gZm4yOwotV2FybmluZ3M6Ci1XYXJuaW5nCTE0MDMJVGhlcmUgaXMgbm8g c3VjaCBncmFudCBkZWZpbmVkIGZvciB1c2VyICd1c2VyYnVnMzM0NjQnIG9uIGhvc3QgJ2xvY2Fs aG9zdCcgb24gcm91dGluZSAnZm4yJwogRFJPUCBQUk9DRURVUkUgc3AzOwogRFJPUCBVU0VSICd1 c2VyYnVnMzM0NjQnQCdsb2NhbGhvc3QnOwogVVNFIHRlc3Q7Cgo9PT0gbW9kaWZpZWQgZmlsZSAn bXlzcWwtdGVzdC9yL3BhcnRpdGlvbi5yZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvci9wYXJ0aXRp b24ucmVzdWx0CTIwMTEtMDItMjIgMjE6MDM6MzIgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9yL3Bh cnRpdGlvbi5yZXN1bHQJMjAxMS0wMy0wOSAxNzoxMjoyMyArMDAwMApAQCAtMSw1ICsxLDQzIEBA CiBkcm9wIHRhYmxlIGlmIGV4aXN0cyB0MSwgdDI7CiAjCisjIEJ1ZyM1OTI5NzogQ2FuJ3QgZmlu ZCByZWNvcmQgaW4gJ3RhYmxlbmFtZScgb24gdXBkYXRlIGlubmVyIGpvaW4KKyMKK0NSRUFURSBU QUJMRSB0MSAoCithIGNoYXIoMikgTk9UIE5VTEwsCitiIGNoYXIoMikgTk9UIE5VTEwsCitjIGlu dCgxMCkgdW5zaWduZWQgTk9UIE5VTEwsCitkIHZhcmNoYXIoMjU1KSBERUZBVUxUIE5VTEwsCitl IHZhcmNoYXIoMTAwMCkgREVGQVVMVCBOVUxMLAorUFJJTUFSWSBLRVkgKGEsIGIsIGMpLAorS0VZ IChhKSwKK0tFWSAoYSwgYikKKykKKy8qITUwMTAwIFBBUlRJVElPTiBCWSBLRVkgKGEpCitQQVJU SVRJT05TIDIwICovOworSU5TRVJUIElOVE8gdDEgKGEsIGIsIGMsIGQsIGUpIFZBTFVFUworKCcw NycsICcwMycsIDM0MywgJzEnLCAnMDdfMDNfMzQzJyksCisoJzAxJywgJzA0JywgMzQzLCAnMics ICcwMV8wNF8zNDMnKSwKKygnMDEnLCAnMDYnLCAzNDMsICczJywgJzAxXzA2XzM0MycpLAorKCcw MScsICcwNycsIDM0MywgJzQnLCAnMDFfMDdfMzQzJyksCisoJzAxJywgJzA4JywgMzQzLCAnNScs ICcwMV8wOF8zNDMnKSwKKygnMDEnLCAnMDknLCAzNDMsICc2JywgJzAxXzA5XzM0MycpLAorKCcw MycsICcwMycsIDM0MywgJzcnLCAnMDNfMDNfMzQzJyksCisoJzAzJywgJzA2JywgMzQzLCAnOCcs ICcwM18wNl8zNDMnKSwKKygnMDMnLCAnMDcnLCAzNDMsICc5JywgJzAzXzA3XzM0MycpLAorKCcw NCcsICcwMycsIDM0MywgJzEwJywgJzA0XzAzXzM0MycpLAorKCcwNCcsICcwNicsIDM0MywgJzEx JywgJzA0XzA2XzM0MycpLAorKCcwNScsICcwMycsIDM0MywgJzEyJywgJzA1XzAzXzM0MycpLAor KCcxMScsICcwMycsIDM0MywgJzEzJywgJzExXzAzXzM0MycpLAorKCcxMScsICcwNCcsIDM0Mywg JzE0JywgJzExXzA0XzM0MycpCis7CitVUERBVEUgdDEgQVMgQSwKKyhTRUxFQ1QgJzAzJyBBUyBh LCAnMDYnIEFTIGIsIDM0MyBBUyBjLCAnbGFzdCcgQVMgZCkgQVMgQgorU0VUIEEuZSA9IEIuZCAg CitXSEVSRSBBLmEgPSAnMDMnICAKK0FORCBBLmIgPSAnMDYnIAorQU5EIEEuYyA9IDM0MzsKK0RS T1AgVEFCTEUgdDE7CisjCiAjIEJ1ZyM1NzExMzogaGFfcGFydGl0aW9uOjpleHRyYShoYV9leHRy YV9mdW5jdGlvbik6CiAjICAgICAgICAgICAgQXNzZXJ0aW9uIGBtX2V4dHJhX2NhY2hlJyBmYWls ZWQKIENSRUFURSBUQUJMRSB0MQoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUv ZnVuY3NfMS9yL2lubm9kYl9zdG9yZWRwcm9jXzA2LnJlc3VsdCcKLS0tIGEvbXlzcWwtdGVzdC9z dWl0ZS9mdW5jc18xL3IvaW5ub2RiX3N0b3JlZHByb2NfMDYucmVzdWx0CTIwMTAtMDMtMTkgMDg6 NTY6MjYgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9zdWl0ZS9mdW5jc18xL3IvaW5ub2RiX3N0b3Jl ZHByb2NfMDYucmVzdWx0CTIwMTEtMDItMDcgMTI6MDY6MjIgKzAwMDAKQEAgLTEyOCw4ICsxMjgs NiBAQCByb290QGxvY2FsaG9zdAlkYl9zdG9yZWRwcm9jXzEKIGRyb3AgdXNlciAndXNlcl8xJ0An bG9jYWxob3N0JzsKIERST1AgUFJPQ0VEVVJFIHNwMzsKIERST1AgRlVOQ1RJT04gZm4xOwotV2Fy bmluZ3M6Ci1XYXJuaW5nCTE0MDMJVGhlcmUgaXMgbm8gc3VjaCBncmFudCBkZWZpbmVkIGZvciB1 c2VyICd1c2VyXzEnIG9uIGhvc3QgJ2xvY2FsaG9zdCcgb24gcm91dGluZSAnZm4xJwogCiBUZXN0 Y2FzZSAzLjEuNi40OgogLS0tLS0tLS0tLS0tLS0tLS0KCj09PSBtb2RpZmllZCBmaWxlICdteXNx bC10ZXN0L3N1aXRlL2Z1bmNzXzEvci9tZW1vcnlfc3RvcmVkcHJvY18wNi5yZXN1bHQnCi0tLSBh L215c3FsLXRlc3Qvc3VpdGUvZnVuY3NfMS9yL21lbW9yeV9zdG9yZWRwcm9jXzA2LnJlc3VsdAky MDEwLTAzLTE5IDA4OjU2OjI2ICswMDAwCisrKyBiL215c3FsLXRlc3Qvc3VpdGUvZnVuY3NfMS9y L21lbW9yeV9zdG9yZWRwcm9jXzA2LnJlc3VsdAkyMDExLTAyLTA3IDEyOjA2OjIyICswMDAwCkBA IC0xMjksOCArMTI5LDYgQEAgcm9vdEBsb2NhbGhvc3QJZGJfc3RvcmVkcHJvY18xCiBkcm9wIHVz ZXIgJ3VzZXJfMSdAJ2xvY2FsaG9zdCc7CiBEUk9QIFBST0NFRFVSRSBzcDM7CiBEUk9QIEZVTkNU SU9OIGZuMTsKLVdhcm5pbmdzOgotV2FybmluZwkxNDAzCVRoZXJlIGlzIG5vIHN1Y2ggZ3JhbnQg ZGVmaW5lZCBmb3IgdXNlciAndXNlcl8xJyBvbiBob3N0ICdsb2NhbGhvc3QnIG9uIHJvdXRpbmUg J2ZuMScKIAogVGVzdGNhc2UgMy4xLjYuNDoKIC0tLS0tLS0tLS0tLS0tLS0tCgo9PT0gbW9kaWZp ZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9mdW5jc18xL3IvbXlpc2FtX3N0b3JlZHByb2NfMDYu cmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL2Z1bmNzXzEvci9teWlzYW1fc3RvcmVkcHJv Y18wNi5yZXN1bHQJMjAxMC0wMy0xOSAwODo1NjoyNiArMDAwMAorKysgYi9teXNxbC10ZXN0L3N1 aXRlL2Z1bmNzXzEvci9teWlzYW1fc3RvcmVkcHJvY18wNi5yZXN1bHQJMjAxMS0wMi0wNyAxMjow NjoyMiArMDAwMApAQCAtMTI5LDggKzEyOSw2IEBAIHJvb3RAbG9jYWxob3N0CWRiX3N0b3JlZHBy b2NfMQogZHJvcCB1c2VyICd1c2VyXzEnQCdsb2NhbGhvc3QnOwogRFJPUCBQUk9DRURVUkUgc3Az OwogRFJPUCBGVU5DVElPTiBmbjE7Ci1XYXJuaW5nczoKLVdhcm5pbmcJMTQwMwlUaGVyZSBpcyBu byBzdWNoIGdyYW50IGRlZmluZWQgZm9yIHVzZXIgJ3VzZXJfMScgb24gaG9zdCAnbG9jYWxob3N0 JyBvbiByb3V0aW5lICdmbjEnCiAKIFRlc3RjYXNlIDMuMS42LjQ6CiAtLS0tLS0tLS0tLS0tLS0t LQoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvZnVuY3NfMS9zdG9yZWRwcm9j L3N0b3JlZHByb2NfMDYuaW5jJwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL2Z1bmNzXzEvc3RvcmVk cHJvYy9zdG9yZWRwcm9jXzA2LmluYwkyMDEwLTAzLTE5IDA4OjU2OjI2ICswMDAwCisrKyBiL215 c3FsLXRlc3Qvc3VpdGUvZnVuY3NfMS9zdG9yZWRwcm9jL3N0b3JlZHByb2NfMDYuaW5jCTIwMTEt MDItMDcgMTI6MDY6MjIgKzAwMDAKQEAgLTE0OSwxMCArMTQ5LDYgQEAgVVNFIGRiX3N0b3JlZHBy b2NfMTsKIAogZHJvcCB1c2VyICd1c2VyXzEnQCdsb2NhbGhvc3QnOwogRFJPUCBQUk9DRURVUkUg c3AzOwotIyBUaGlzIGRyb3AgZnVuY3Rpb24gc2hvdWxkbid0IGdlbmVyYXRlZCBhIHdhcm5pbmcg YXMgdGhlCi0jIHByaXZpbGVnZXMgc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkIHdoZW4gdGhlIHVz ZXIgd2FzCi0jIGRyb3BwZWQuIFJlcG9ydGVkIGFzIEJ1ZyMzNjU0NCBEUk9QIFVTRVIgZG9lcyBu b3QgcmVtb3ZlCi0jIHN0b3JlZCBmdW5jdGlvbiBwcml2aWxlZ2VzCiBEUk9QIEZVTkNUSU9OIGZu MTsKIAogCgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC90L2dyYW50LnRlc3QnCi0tLSBh L215c3FsLXRlc3QvdC9ncmFudC50ZXN0CTIwMTAtMTItMTUgMTY6MDg6MjEgKzAwMDAKKysrIGIv bXlzcWwtdGVzdC90L2dyYW50LnRlc3QJMjAxMS0wMi0wNyAxMjowNjoyMiArMDAwMApAQCAtMTM5 Niw2ICsxMzk2LDE4MyBAQCBEUk9QIFVTRVIgdGVzdHVzZXJAbG9jYWxob3N0OwogdXNlIHRlc3Q7 CiAtLWVjaG8KIAorCistLWVjaG8gIworLS1lY2hvICMgVGVzdCBmb3IgYnVnICMzNjU0NCAiRFJP UCBVU0VSIGRvZXMgbm90IHJlbW92ZSBzdG9yZWQgZnVuY3Rpb24KKy0tZWNobyAjICAgICAgICAg ICAgICAgICAgICAgIHByaXZpbGVnZXMiLgorLS1lY2hvICMKK2NyZWF0ZSBkYXRhYmFzZSBteXNx bHRlc3QxOworY3JlYXRlIGZ1bmN0aW9uIG15c3FsdGVzdDEuZjEoKSByZXR1cm5zIGludCByZXR1 cm4gMDsKK2NyZWF0ZSBwcm9jZWR1cmUgbXlzcWx0ZXN0MS5wMSgpIGJlZ2luIGVuZDsKKy0tZWNo byAjCistLWVjaG8gIyAxKSBDaGVjayB0aGF0IERST1AgVVNFUiBwcm9wZXJseSByZW1vdmVzIHBy aXZpbGVnZXMgb24gYm90aAorLS1lY2hvICMgICAgc3RvcmVkIHByb2NlZHVyZXMgYW5kIGZ1bmN0 aW9ucy4KKy0tZWNobyAjCitjcmVhdGUgdXNlciBteXNxbHVzZXIxQGxvY2FsaG9zdDsKK2dyYW50 IGV4ZWN1dGUgb24gZnVuY3Rpb24gbXlzcWx0ZXN0MS5mMSB0byBteXNxbHVzZXIxQGxvY2FsaG9z dDsKK2dyYW50IGV4ZWN1dGUgb24gcHJvY2VkdXJlIG15c3FsdGVzdDEucDEgdG8gbXlzcWx1c2Vy MUBsb2NhbGhvc3Q7CisKKy0tZWNobyAjIFF1aWNrIHRlc3QgdGhhdCBncmFudGVkIHByaXZpbGVn ZXMgYXJlIHByb3Blcmx5IHJlZmxlY3RlZAorLS1lY2hvICMgaW4gcHJpdmlsZWdlIHRhYmxlcyBh bmQgaW4gaW4tbWVtb3J5IHN0cnVjdHVyZXMuCitzaG93IGdyYW50cyBmb3IgbXlzcWx1c2VyMUBs b2NhbGhvc3Q7CitzZWxlY3QgZGIsIHJvdXRpbmVfbmFtZSwgcm91dGluZV90eXBlLCBwcm9jX3By aXYgZnJvbSBteXNxbC5wcm9jc19wcml2IHdoZXJlIHVzZXI9J215c3FsdXNlcjEnIGFuZCBob3N0 PSdsb2NhbGhvc3QnOworLS1lY2hvICMKKy0tZWNobyAjIENyZWF0ZSBjb25uZWN0aW9uICdidWdf MzY1NDRfY29uMScgYXMgJ215c3FsdXNlcjFAbG9jYWxob3N0Jy4KKy0tY29ubmVjdCAoYnVnMzY1 NDRfY29uMSxsb2NhbGhvc3QsbXlzcWx1c2VyMSwsKQorY2FsbCBteXNxbHRlc3QxLnAxKCk7Citz ZWxlY3QgbXlzcWx0ZXN0MS5mMSgpOworCistLWVjaG8gIworLS1lY2hvICMgU3dpdGNoIHRvIGNv bm5lY3Rpb24gJ2RlZmF1bHQnLgorLS1jb25uZWN0aW9uIGRlZmF1bHQKK2Ryb3AgdXNlciBteXNx bHVzZXIxQGxvY2FsaG9zdDsKKworLS1lY2hvICMKKy0tZWNobyAjIFRlc3QgdGhhdCBkcm9wcGlu ZyBvZiB1c2VyIGlzIHByb3Blcmx5IHJlZmxlY3RlZCBpbgorLS1lY2hvICMgYm90aCBwcml2aWxl Z2UgdGFibGVzIGFuZCBpbiBpbi1tZW1vcnkgc3RydWN0dXJlcy4KKy0tZWNobyAjCistLWVjaG8g IyBTd2l0Y2ggdG8gY29ubmVjdGlvbiAnYnVnMzY1NDRfY29uMScuCistLWNvbm5lY3Rpb24gYnVn MzY1NDRfY29uMQorLS1lY2hvICMgVGhlIGNvbm5lY3Rpb24gY29sZCBiZSBhbGl2ZSBidXQgc2hv dWxkIG5vdCBiZSBhYmxlIHRvCistLWVjaG8gIyBhY2Nlc3MgdG8gYW55IG9mIHRoZSBzdG9yZWQg cm91dGluZXMuCistLWVycm9yIEVSX1BST0NBQ0NFU1NfREVOSUVEX0VSUk9SCitjYWxsIG15c3Fs dGVzdDEucDEoKTsKKy0tZXJyb3IgRVJfUFJPQ0FDQ0VTU19ERU5JRURfRVJST1IKK3NlbGVjdCBt eXNxbHRlc3QxLmYxKCk7CistLWRpc2Nvbm5lY3QgYnVnMzY1NDRfY29uMQorCistLWVjaG8gIwor LS1lY2hvICMgU3dpdGNoIHRvIGNvbm5lY3Rpb24gJ2RlZmF1bHQnLgorLS1jb25uZWN0aW9uIGRl ZmF1bHQKKy0tZWNobyAjCistLWVjaG8gIyBOb3cgY3JlYXRlIHVzZXIgd2l0aCB0aGUgc2FtZSBu YW1lIGFuZCBjaGVjayB0aGF0IGhlCistLWVjaG8gIyBoYXMgbm90IGluaGVyaXRlZCBwcml2aWxl Z2VzLgorY3JlYXRlIHVzZXIgbXlzcWx1c2VyMUBsb2NhbGhvc3Q7CitzaG93IGdyYW50cyBmb3Ig bXlzcWx1c2VyMUBsb2NhbGhvc3Q7CitzZWxlY3QgZGIsIHJvdXRpbmVfbmFtZSwgcm91dGluZV90 eXBlLCBwcm9jX3ByaXYgZnJvbSBteXNxbC5wcm9jc19wcml2IHdoZXJlIHVzZXI9J215c3FsdXNl cjEnIGFuZCBob3N0PSdsb2NhbGhvc3QnOworLS1lY2hvICMKKy0tZWNobyAjIENyZWF0ZSBjb25u ZWN0aW9uICdidWdfMzY1NDRfY29uMicgYXMgJ215c3FsdXNlcjFAbG9jYWxob3N0Jy4KKy0tY29u bmVjdCAoYnVnMzY1NDRfY29uMixsb2NhbGhvc3QsbXlzcWx1c2VyMSwsKQorLS1lY2hvICMgTmV3 bHkgY3JlYXRlZCB1c2VyIHNob3VsZCBub3QgYmUgYWJsZSB0byBhY2Nlc3MgYW55IG9mIHRoZSBy b3V0aW5lcy4KKy0tZXJyb3IgRVJfUFJPQ0FDQ0VTU19ERU5JRURfRVJST1IKK2NhbGwgbXlzcWx0 ZXN0MS5wMSgpOworLS1lcnJvciBFUl9QUk9DQUNDRVNTX0RFTklFRF9FUlJPUgorc2VsZWN0IG15 c3FsdGVzdDEuZjEoKTsKKy0tZWNobyAjCistLWVjaG8gIyBTd2l0Y2ggdG8gY29ubmVjdGlvbiAn ZGVmYXVsdCcuCistLWNvbm5lY3Rpb24gZGVmYXVsdAorCistLWVjaG8gIworLS1lY2hvICMgMikg Q2hlY2sgdGhhdCBSRU5BTUUgVVNFUiBwcm9wZXJseSB1cGRhdGVzIHByaXZpbGVnZXMgb24gYm90 aAorLS1lY2hvICMgICAgc3RvcmVkIHByb2NlZHVyZXMgYW5kIGZ1bmN0aW9ucy4KKy0tZWNobyAj CitncmFudCBleGVjdXRlIG9uIGZ1bmN0aW9uIG15c3FsdGVzdDEuZjEgdG8gbXlzcWx1c2VyMUBs b2NhbGhvc3Q7CitncmFudCBleGVjdXRlIG9uIHByb2NlZHVyZSBteXNxbHRlc3QxLnAxIHRvIG15 c3FsdXNlcjFAbG9jYWxob3N0OworLS1lY2hvICMKKy0tZWNobyAjIENyZWF0ZSBvbmUgbW9yZSB1 c2VyIHRvIG1ha2UgaW4tbWVtb3J5IGhhc2hlcyBub24tdHJpdmlhbC4KKy0tZWNobyAjIFVzZXIg bmFtZXMgJ215c3FsdXNlcjExJyBhbmQgJ215c3FsdXNlcjEwJyB3ZXJlIHNlbGVjdGVkCistLWVj aG8gIyB0byB0cmlnZ2VyIGJ1ZyBkaXNjb3ZlcmVkIGR1cmluZyBjb2RlIGluc3BlY3Rpb24uCitj cmVhdGUgdXNlciBteXNxbHVzZXIxMUBsb2NhbGhvc3Q7CitncmFudCBleGVjdXRlIG9uIGZ1bmN0 aW9uIG15c3FsdGVzdDEuZjEgdG8gbXlzcWx1c2VyMTFAbG9jYWxob3N0OworZ3JhbnQgZXhlY3V0 ZSBvbiBwcm9jZWR1cmUgbXlzcWx0ZXN0MS5wMSB0byBteXNxbHVzZXIxMUBsb2NhbGhvc3Q7Cist LWVjaG8gIyBBbHNvIGNyZWF0ZSBhIGNvdXBsZSBvZiB0YWJsZXMgdG8gdGVzdCBmb3IgYW5vdGhl ciBidWcKKy0tZWNobyAjIGRpc2NvdmVyZWQgZHVyaW5nIGNvZGUgaW5zcGVjdGlvbiAoYWdhaW4g dGFibGUgbmFtZXMgd2VyZQorLS1lY2hvICMgY2hvc2VuIGVzcGVjaWFsbHkgdG8gdHJpZ2dlciB0 aGUgYnVnKS4KK2NyZWF0ZSB0YWJsZSBteXNxbHRlc3QxLnQxMSAoaSBpbnQpOworY3JlYXRlIHRh YmxlIG15c3FsdGVzdDEudDIyIChpIGludCk7CitncmFudCBzZWxlY3Qgb24gbXlzcWx0ZXN0MS50 MjIgdG8gbXlzcWx1c2VyMUBsb2NhbGhvc3Q7CitncmFudCBzZWxlY3Qgb24gbXlzcWx0ZXN0MS50 MTEgdG8gbXlzcWx1c2VyMUBsb2NhbGhvc3Q7CisKKy0tZWNobyAjIFF1aWNrIHRlc3QgdGhhdCBn cmFudGVkIHByaXZpbGVnZXMgYXJlIHByb3Blcmx5IHJlZmxlY3RlZAorLS1lY2hvICMgaW4gcHJp dmlsZWdlIHRhYmxlcyBhbmQgaW4gaW4tbWVtb3J5IHN0cnVjdHVyZXMuCitzaG93IGdyYW50cyBm b3IgbXlzcWx1c2VyMUBsb2NhbGhvc3Q7CitzZWxlY3QgZGIsIHJvdXRpbmVfbmFtZSwgcm91dGlu ZV90eXBlLCBwcm9jX3ByaXYgZnJvbSBteXNxbC5wcm9jc19wcml2IHdoZXJlIHVzZXI9J215c3Fs dXNlcjEnIGFuZCBob3N0PSdsb2NhbGhvc3QnOworc2VsZWN0IGRiLCB0YWJsZV9uYW1lLCB0YWJs ZV9wcml2IGZyb20gbXlzcWwudGFibGVzX3ByaXYgd2hlcmUgdXNlcj0nbXlzcWx1c2VyMScgYW5k IGhvc3Q9J2xvY2FsaG9zdCc7CistLWVjaG8gIworLS1lY2hvICMgU3dpdGNoIHRvIGNvbm5lY3Rp b24gJ2J1ZzM2NTQ0X2NvbjInLgorLS1jb25uZWN0aW9uIGJ1ZzM2NTQ0X2NvbjIKK2NhbGwgbXlz cWx0ZXN0MS5wMSgpOworc2VsZWN0IG15c3FsdGVzdDEuZjEoKTsKK3NlbGVjdCAqIGZyb20gbXlz cWx0ZXN0MS50MTE7CitzZWxlY3QgKiBmcm9tIG15c3FsdGVzdDEudDIyOworCistLWVjaG8gIwor LS1lY2hvICMgU3dpdGNoIHRvIGNvbm5lY3Rpb24gJ2RlZmF1bHQnLgorLS1jb25uZWN0aW9uIGRl ZmF1bHQKK3JlbmFtZSB1c2VyIG15c3FsdXNlcjFAbG9jYWxob3N0IHRvIG15c3FsdXNlcjEwQGxv Y2FsaG9zdDsKKworLS1lY2hvICMKKy0tZWNobyAjIFRlc3QgdGhhdCB0aGVyZSBhcmUgbm8gcHJp dmlsZWdlcyBsZWZ0IGZvciBteXNxbHVzZXIxLgorLS1lY2hvICMKKy0tZWNobyAjIFN3aXRjaCB0 byBjb25uZWN0aW9uICdidWczNjU0NF9jb24yJy4KKy0tY29ubmVjdGlvbiBidWczNjU0NF9jb24y CistLWVjaG8gIyBUaGUgY29ubmVjdGlvbiBjb2xkIGJlIGFsaXZlIGJ1dCBzaG91bGQgbm90IGJl IGFibGUgdG8KKy0tZWNobyAjIGFjY2VzcyB0byBhbnkgb2YgdGhlIHN0b3JlZCByb3V0aW5lcyBv ciB0YWJsZXMuCistLWVycm9yIEVSX1BST0NBQ0NFU1NfREVOSUVEX0VSUk9SCitjYWxsIG15c3Fs dGVzdDEucDEoKTsKKy0tZXJyb3IgRVJfUFJPQ0FDQ0VTU19ERU5JRURfRVJST1IKK3NlbGVjdCBt eXNxbHRlc3QxLmYxKCk7CistLWVycm9yIEVSX1RBQkxFQUNDRVNTX0RFTklFRF9FUlJPUgorc2Vs ZWN0ICogZnJvbSBteXNxbHRlc3QxLnQxMTsKKy0tZXJyb3IgRVJfVEFCTEVBQ0NFU1NfREVOSUVE X0VSUk9SCitzZWxlY3QgKiBmcm9tIG15c3FsdGVzdDEudDIyOworLS1kaXNjb25uZWN0IGJ1ZzM2 NTQ0X2NvbjIKKworLS1lY2hvICMKKy0tZWNobyAjIFN3aXRjaCB0byBjb25uZWN0aW9uICdkZWZh dWx0Jy4KKy0tY29ubmVjdGlvbiBkZWZhdWx0CistLWVjaG8gIworLS1lY2hvICMgTm93IGNyZWF0 ZSB1c2VyIHdpdGggdGhlIG9sZCBuYW1lIGFuZCBjaGVjayB0aGF0IGhlCistLWVjaG8gIyBoYXMg bm90IGluaGVyaXRlZCBwcml2aWxlZ2VzLgorY3JlYXRlIHVzZXIgbXlzcWx1c2VyMUBsb2NhbGhv c3Q7CitzaG93IGdyYW50cyBmb3IgbXlzcWx1c2VyMUBsb2NhbGhvc3Q7CitzZWxlY3QgZGIsIHJv dXRpbmVfbmFtZSwgcm91dGluZV90eXBlLCBwcm9jX3ByaXYgZnJvbSBteXNxbC5wcm9jc19wcml2 IHdoZXJlIHVzZXI9J215c3FsdXNlcjEnIGFuZCBob3N0PSdsb2NhbGhvc3QnOworc2VsZWN0IGRi LCB0YWJsZV9uYW1lLCB0YWJsZV9wcml2IGZyb20gbXlzcWwudGFibGVzX3ByaXYgd2hlcmUgdXNl cj0nbXlzcWx1c2VyMScgYW5kIGhvc3Q9J2xvY2FsaG9zdCc7CistLWVjaG8gIworLS1lY2hvICMg Q3JlYXRlIGNvbm5lY3Rpb24gJ2J1Z18zNjU0NF9jb24zJyBhcyAnbXlzcWx1c2VyMUBsb2NhbGhv c3QnLgorLS1jb25uZWN0IChidWczNjU0NF9jb24zLGxvY2FsaG9zdCxteXNxbHVzZXIxLCwpCist LWVjaG8gIyBOZXdseSBjcmVhdGVkIHVzZXIgc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGFjY2VzcyB0 byBhbnkgb2YgdGhlCistLWVjaG8gIyBzdG9yZWQgcm91dGluZXMgb3IgdGFibGVzLgorLS1lcnJv ciBFUl9QUk9DQUNDRVNTX0RFTklFRF9FUlJPUgorY2FsbCBteXNxbHRlc3QxLnAxKCk7CistLWVy cm9yIEVSX1BST0NBQ0NFU1NfREVOSUVEX0VSUk9SCitzZWxlY3QgbXlzcWx0ZXN0MS5mMSgpOwor LS1lcnJvciBFUl9UQUJMRUFDQ0VTU19ERU5JRURfRVJST1IKK3NlbGVjdCAqIGZyb20gbXlzcWx0 ZXN0MS50MTE7CistLWVycm9yIEVSX1RBQkxFQUNDRVNTX0RFTklFRF9FUlJPUgorc2VsZWN0ICog ZnJvbSBteXNxbHRlc3QxLnQyMjsKKy0tZGlzY29ubmVjdCBidWczNjU0NF9jb24zCisKKy0tZWNo byAjCistLWVjaG8gIyBTd2l0Y2ggdG8gY29ubmVjdGlvbiAnZGVmYXVsdCcuCistLWNvbm5lY3Rp b24gZGVmYXVsdAorLS1lY2hvICMKKy0tZWNobyAjIE5vdyBjaGVjayB0aGF0IHByaXZpbGVnZXMg YmVjYW1lIGFzc29jaWF0ZWQgd2l0aCBhIG5ldyB1c2VyCistLWVjaG8gIyBuYW1lIC0gbXlzcWx1 c2VyMTAuCistLWVjaG8gIworc2hvdyBncmFudHMgZm9yIG15c3FsdXNlcjEwQGxvY2FsaG9zdDsK K3NlbGVjdCBkYiwgcm91dGluZV9uYW1lLCByb3V0aW5lX3R5cGUsIHByb2NfcHJpdiBmcm9tIG15 c3FsLnByb2NzX3ByaXYgd2hlcmUgdXNlcj0nbXlzcWx1c2VyMTAnIGFuZCBob3N0PSdsb2NhbGhv c3QnOworc2VsZWN0IGRiLCB0YWJsZV9uYW1lLCB0YWJsZV9wcml2IGZyb20gbXlzcWwudGFibGVz X3ByaXYgd2hlcmUgdXNlcj0nbXlzcWx1c2VyMTAnIGFuZCBob3N0PSdsb2NhbGhvc3QnOworLS1l Y2hvICMKKy0tZWNobyAjIENyZWF0ZSBjb25uZWN0aW9uICdidWdfMzY1NDRfY29uNCcgYXMgJ215 c3FsdXNlcjEwQGxvY2FsaG9zdCcuCistLWNvbm5lY3QgKGJ1ZzM2NTQ0X2NvbjQsbG9jYWxob3N0 LG15c3FsdXNlcjEwLCwpCitjYWxsIG15c3FsdGVzdDEucDEoKTsKK3NlbGVjdCBteXNxbHRlc3Qx LmYxKCk7CitzZWxlY3QgKiBmcm9tIG15c3FsdGVzdDEudDExOworc2VsZWN0ICogZnJvbSBteXNx bHRlc3QxLnQyMjsKKy0tZGlzY29ubmVjdCBidWczNjU0NF9jb240CisKKy0tZWNobyAjCistLWVj aG8gIyBTd2l0Y2ggdG8gY29ubmVjdGlvbiAnZGVmYXVsdCcuCistLWNvbm5lY3Rpb24gZGVmYXVs dAorLS1lY2hvICMKKy0tZWNobyAjIENsZWFuLXVwLgorZHJvcCB1c2VyIG15c3FsdXNlcjFAbG9j YWxob3N0OworZHJvcCB1c2VyIG15c3FsdXNlcjEwQGxvY2FsaG9zdDsKK2Ryb3AgdXNlciBteXNx bHVzZXIxMUBsb2NhbGhvc3Q7Citkcm9wIGRhdGFiYXNlIG15c3FsdGVzdDE7CisKKwogLS1lY2hv IEVuZCBvZiA1LjAgdGVzdHMKIAogIwoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3QvdC9w YXJ0aXRpb24udGVzdCcKLS0tIGEvbXlzcWwtdGVzdC90L3BhcnRpdGlvbi50ZXN0CTIwMTEtMDIt MjIgMjE6MDM6MzIgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC90L3BhcnRpdGlvbi50ZXN0CTIwMTEt MDMtMDkgMTc6MTI6MjMgKzAwMDAKQEAgLTE1LDYgKzE1LDQ5IEBAIGRyb3AgdGFibGUgaWYgZXhp c3RzIHQxLCB0MjsKIC0tZW5hYmxlX3dhcm5pbmdzCiAKIC0tZWNobyAjCistLWVjaG8gIyBCdWcj NTkyOTc6IENhbid0IGZpbmQgcmVjb3JkIGluICd0YWJsZW5hbWUnIG9uIHVwZGF0ZSBpbm5lciBq b2luCistLWVjaG8gIworCitDUkVBVEUgVEFCTEUgdDEgKAorYSBjaGFyKDIpIE5PVCBOVUxMLAor YiBjaGFyKDIpIE5PVCBOVUxMLAorYyBpbnQoMTApIHVuc2lnbmVkIE5PVCBOVUxMLAorZCB2YXJj aGFyKDI1NSkgREVGQVVMVCBOVUxMLAorZSB2YXJjaGFyKDEwMDApIERFRkFVTFQgTlVMTCwKK1BS SU1BUlkgS0VZIChhLCBiLCBjKSwKK0tFWSAoYSksCitLRVkgKGEsIGIpCispCisvKiE1MDEwMCBQ QVJUSVRJT04gQlkgS0VZIChhKQorUEFSVElUSU9OUyAyMCAqLzsKKworSU5TRVJUIElOVE8gdDEg KGEsIGIsIGMsIGQsIGUpIFZBTFVFUworKCcwNycsICcwMycsIDM0MywgJzEnLCAnMDdfMDNfMzQz JyksCisoJzAxJywgJzA0JywgMzQzLCAnMicsICcwMV8wNF8zNDMnKSwKKygnMDEnLCAnMDYnLCAz NDMsICczJywgJzAxXzA2XzM0MycpLAorKCcwMScsICcwNycsIDM0MywgJzQnLCAnMDFfMDdfMzQz JyksCisoJzAxJywgJzA4JywgMzQzLCAnNScsICcwMV8wOF8zNDMnKSwKKygnMDEnLCAnMDknLCAz NDMsICc2JywgJzAxXzA5XzM0MycpLAorKCcwMycsICcwMycsIDM0MywgJzcnLCAnMDNfMDNfMzQz JyksCisoJzAzJywgJzA2JywgMzQzLCAnOCcsICcwM18wNl8zNDMnKSwKKygnMDMnLCAnMDcnLCAz NDMsICc5JywgJzAzXzA3XzM0MycpLAorKCcwNCcsICcwMycsIDM0MywgJzEwJywgJzA0XzAzXzM0 MycpLAorKCcwNCcsICcwNicsIDM0MywgJzExJywgJzA0XzA2XzM0MycpLAorKCcwNScsICcwMycs IDM0MywgJzEyJywgJzA1XzAzXzM0MycpLAorKCcxMScsICcwMycsIDM0MywgJzEzJywgJzExXzAz XzM0MycpLAorKCcxMScsICcwNCcsIDM0MywgJzE0JywgJzExXzA0XzM0MycpCis7CisKK1VQREFU RSB0MSBBUyBBLAorKFNFTEVDVCAnMDMnIEFTIGEsICcwNicgQVMgYiwgMzQzIEFTIGMsICdsYXN0 JyBBUyBkKSBBUyBCCitTRVQgQS5lID0gQi5kICAKK1dIRVJFIEEuYSA9ICcwMycgIAorQU5EIEEu YiA9ICcwNicgCitBTkQgQS5jID0gMzQzOworCitEUk9QIFRBQkxFIHQxOworCistLWVjaG8gIwog LS1lY2hvICMgQnVnIzU3MTEzOiBoYV9wYXJ0aXRpb246OmV4dHJhKGhhX2V4dHJhX2Z1bmN0aW9u KToKIC0tZWNobyAjICAgICAgICAgICAgQXNzZXJ0aW9uIGBtX2V4dHJhX2NhY2hlJyBmYWlsZWQK IENSRUFURSBUQUJMRSB0MQoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9oYV9wYXJ0aXRpb24uY2Mn Ci0tLSBhL3NxbC9oYV9wYXJ0aXRpb24uY2MJMjAxMC0xMi0xNiAxNDo0MDo1MiArMDAwMAorKysg Yi9zcWwvaGFfcGFydGl0aW9uLmNjCTIwMTEtMDEtMjQgMTI6NDE6NDQgKzAwMDAKQEAgLTQzMTcs NiArNDMxNyw3IEBAIGludCBoYV9wYXJ0aXRpb246OmluZGV4X3JlYWRfaWR4X21hcCh1Y2gKICAg ICAgICAgICBicmVhazsKICAgICAgIH0KICAgICB9CisgICAgbV9sYXN0X3BhcnQ9IHBhcnQ7CiAg IH0KICAgZWxzZQogICB7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL3NxbF9hY2wuY2MnCi0tLSBh L3NxbC9zcWxfYWNsLmNjCTIwMTAtMTAtMjAgMTg6MjE6NDAgKzAwMDAKKysrIGIvc3FsL3NxbF9h Y2wuY2MJMjAxMS0wMi0wNyAxMjowNjoyMiArMDAwMApAQCAtMSw0ICsxLDQgQEAKLS8qIENvcHly aWdodCAoQykgMjAwMC0yMDAzIE15U1FMIEFCCisvKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMTEs IE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAg IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtNTM3NywxOCArNTM3NywxNSBAQCBzdGF0 aWMgaW50IGhhbmRsZV9ncmFudF90YWJsZShUQUJMRV9MSVNUCiB9CiAKIAotLyoKKy8qKgogICBI YW5kbGUgYW4gaW4tbWVtb3J5IHByaXZpbGVnZSBzdHJ1Y3R1cmUuCiAKLSAgU1lOT1BTSVMKLSAg ICBoYW5kbGVfZ3JhbnRfc3RydWN0KCkKLSAgICBzdHJ1Y3Rfbm8gICAgICAgICAgICAgICAgICAg VGhlIG51bWJlciBvZiB0aGUgc3RydWN0dXJlIHRvIGhhbmRsZSAoMC4uMykuCi0gICAgZHJvcCAg ICAgICAgICAgICAgICAgICAgICAgIElmIHVzZXJfZnJvbSBpcyB0byBiZSBkcm9wcGVkLgotICAg IHVzZXJfZnJvbSAgICAgICAgICAgICAgICAgICBUaGUgdGhlIHVzZXIgdG8gYmUgc2VhcmNoZWQv ZHJvcHBlZC9yZW5hbWVkLgotICAgIHVzZXJfdG8gICAgICAgICAgICAgICAgICAgICBUaGUgbmV3 IG5hbWUgZm9yIHRoZSB1c2VyIGlmIHRvIGJlIHJlbmFtZWQsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE5VTEwgb3RoZXJ3aXNlLgorICBAcGFyYW0gc3RydWN0X25vICBUaGUgbnVt YmVyIG9mIHRoZSBzdHJ1Y3R1cmUgdG8gaGFuZGxlICgwLi40KS4KKyAgQHBhcmFtIGRyb3AgICAg ICAgSWYgdXNlcl9mcm9tIGlzIHRvIGJlIGRyb3BwZWQuCisgIEBwYXJhbSB1c2VyX2Zyb20gIFRo ZSB0aGUgdXNlciB0byBiZSBzZWFyY2hlZC9kcm9wcGVkL3JlbmFtZWQuCisgIEBwYXJhbSB1c2Vy X3RvICAgIFRoZSBuZXcgbmFtZSBmb3IgdGhlIHVzZXIgaWYgdG8gYmUgcmVuYW1lZCwgTlVMTCBv dGhlcndpc2UuCiAKLSAgREVTQ1JJUFRJT04KKyAgQG5vdGUKICAgICBTY2FuIHRocm91Z2ggYWxs IGVsZW1lbnRzIGluIGFuIGluLW1lbW9yeSBncmFudCBzdHJ1Y3R1cmUgYW5kIGFwcGx5CiAgICAg dGhlIHJlcXVlc3RlZCBvcGVyYXRpb24uCiAgICAgRGVsZXRlIGZyb20gZ3JhbnQgc3RydWN0dXJl IGlmIGRyb3AgaXMgdHJ1ZS4KQEAgLTUzOTgsMTIgKzUzOTUsMTIgQEAgc3RhdGljIGludCBoYW5k bGVfZ3JhbnRfdGFibGUoVEFCTEVfTElTVAogICAgIDAgYWNsX3VzZXJzCiAgICAgMSBhY2xfZGJz CiAgICAgMiBjb2x1bW5fcHJpdl9oYXNoCi0gICAgMyBwcm9jc19wcml2X2hhc2gKKyAgICAzIHBy b2NfcHJpdl9oYXNoCisgICAgNCBmdW5jX3ByaXZfaGFzaAogCi0gIFJFVFVSTgotICAgID4gMCAg ICAgICAgIEF0IGxlYXN0IG9uZSBlbGVtZW50IG1hdGNoZWQuCi0gICAgMCAgICAgICAgICAgT0ss IGJ1dCBubyBlbGVtZW50IG1hdGNoZWQuCi0gICAgLTEJCVdyb25nIGFyZ3VtZW50cyB0byBmdW5j dGlvbgorICBAcmV0dmFsID4gMCAgQXQgbGVhc3Qgb25lIGVsZW1lbnQgbWF0Y2hlZC4KKyAgQHJl dHZhbCAwICAgIE9LLCBidXQgbm8gZWxlbWVudCBtYXRjaGVkLgorICBAcmV0dmFsIC0xICAgV3Jv bmcgYXJndW1lbnRzIHRvIGZ1bmN0aW9uLgogKi8KIAogc3RhdGljIGludCBoYW5kbGVfZ3JhbnRf c3RydWN0KHVpbnQgc3RydWN0X25vLCBib29sIGRyb3AsCkBAIC01NDE3LDYgKzU0MTQsNyBAQCBz dGF0aWMgaW50IGhhbmRsZV9ncmFudF9zdHJ1Y3QodWludCBzdHJ1CiAgIEFDTF9VU0VSICphY2xf dXNlcj0gTlVMTDsKICAgQUNMX0RCICphY2xfZGI9IE5VTEw7CiAgIEdSQU5UX05BTUUgKmdyYW50 X25hbWU9IE5VTEw7CisgIEhBU0ggKmdyYW50X25hbWVfaGFzaD0gTlVMTDsKICAgREJVR19FTlRF UigiaGFuZGxlX2dyYW50X3N0cnVjdCIpOwogICBEQlVHX1BSSU5UKCJpbmZvIiwoInNjYW4gc3Ry dWN0OiAldSAgc2VhcmNoOiAnJXMnQCclcyciLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0 X25vLCB1c2VyX2Zyb20tPnVzZXIuc3RyLCB1c2VyX2Zyb20tPmhvc3Quc3RyKSk7CkBAIC01NDM2 LDkgKzU0MzQsMTUgQEAgc3RhdGljIGludCBoYW5kbGVfZ3JhbnRfc3RydWN0KHVpbnQgc3RydQog ICAgIGJyZWFrOwogICBjYXNlIDI6CiAgICAgZWxlbWVudHM9IGNvbHVtbl9wcml2X2hhc2gucmVj b3JkczsKKyAgICBncmFudF9uYW1lX2hhc2g9ICZjb2x1bW5fcHJpdl9oYXNoOwogICAgIGJyZWFr OwogICBjYXNlIDM6CiAgICAgZWxlbWVudHM9IHByb2NfcHJpdl9oYXNoLnJlY29yZHM7CisgICAg Z3JhbnRfbmFtZV9oYXNoPSAmcHJvY19wcml2X2hhc2g7CisgICAgYnJlYWs7CisgIGNhc2UgNDoK KyAgICBlbGVtZW50cz0gZnVuY19wcml2X2hhc2gucmVjb3JkczsKKyAgICBncmFudF9uYW1lX2hh c2g9ICZmdW5jX3ByaXZfaGFzaDsKICAgICBicmVhazsKICAgZGVmYXVsdDoKICAgICByZXR1cm4g LTE7CkBAIC01NDY4LDE2ICs1NDcyLDEzIEBAIHN0YXRpYyBpbnQgaGFuZGxlX2dyYW50X3N0cnVj dCh1aW50IHN0cnUKICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSAyOgotICAgICAgZ3JhbnRfbmFt ZT0gKEdSQU5UX05BTUUqKSBoYXNoX2VsZW1lbnQoJmNvbHVtbl9wcml2X2hhc2gsIGlkeCk7Ci0g ICAgICB1c2VyPSBncmFudF9uYW1lLT51c2VyOwotICAgICAgaG9zdD0gZ3JhbnRfbmFtZS0+aG9z dC5ob3N0bmFtZTsKLSAgICAgIGJyZWFrOwotCiAgICAgY2FzZSAzOgotICAgICAgZ3JhbnRfbmFt ZT0gKEdSQU5UX05BTUUqKSBoYXNoX2VsZW1lbnQoJnByb2NfcHJpdl9oYXNoLCBpZHgpOworICAg IGNhc2UgNDoKKyAgICAgIGdyYW50X25hbWU9IChHUkFOVF9OQU1FKikgaGFzaF9lbGVtZW50KGdy YW50X25hbWVfaGFzaCwgaWR4KTsKICAgICAgIHVzZXI9IGdyYW50X25hbWUtPnVzZXI7CiAgICAg ICBob3N0PSBncmFudF9uYW1lLT5ob3N0Lmhvc3RuYW1lOwogICAgICAgYnJlYWs7CisKICAgICBk ZWZhdWx0OgogICAgICAgTVlfQVNTRVJUX1VOUkVBQ0hBQkxFKCk7CiAgICAgfQpAQCAtNTUwNywx NCArNTUwOCwyNSBAQCBzdGF0aWMgaW50IGhhbmRsZV9ncmFudF9zdHJ1Y3QodWludCBzdHJ1CiAg ICAgICAgIGJyZWFrOwogCiAgICAgICBjYXNlIDI6Ci0gICAgICAgIGhhc2hfZGVsZXRlKCZjb2x1 bW5fcHJpdl9oYXNoLCAodWNoYXIqKSBncmFudF9uYW1lKTsKLQlicmVhazsKLQogICAgICAgY2Fz ZSAzOgotICAgICAgICBoYXNoX2RlbGV0ZSgmcHJvY19wcml2X2hhc2gsICh1Y2hhciopIGdyYW50 X25hbWUpOworICAgICAgY2FzZSA0OgorICAgICAgICBoYXNoX2RlbGV0ZShncmFudF9uYW1lX2hh c2gsICh1Y2hhciopIGdyYW50X25hbWUpOwogCWJyZWFrOwogICAgICAgfQogICAgICAgZWxlbWVu dHMtLTsKKyAgICAgIC8qCisgICAgICAgIC0gSWYgd2UgYXJlIGl0ZXJhdGluZyB0aHJvdWdoIGFu IGFycmF5IHRoZW4gd2UganVzdCBoYXZlIG1vdmVkIGFsbAorICAgICAgICAgIGVsZW1lbnRzIGFm dGVyIHRoZSBjdXJyZW50IGVsZW1lbnQgb25lIHBvc2l0aW9uIGNsb3NlciB0byBpdHMgaGVhZC4K KyAgICAgICAgICBUaGlzIG1lYW5zIHRoYXQgd2UgaGF2ZSB0byB0YWtlIGFub3RoZXIgbG9vayBh dCB0aGUgZWxlbWVudCBhdAorICAgICAgICAgIGN1cnJlbnQgcG9zaXRpb24gYXMgaXQgaXMgYSBu ZXcgZWxlbWVudCBmcm9tIHRoZSBhcnJheSdzIHRhaWwuCisgICAgICAgIC0gSWYgd2UgYXJlIGl0 ZXJhdGluZyB0aHJvdWdoIGEgaGFzaCB0aGUgY3VycmVudCBlbGVtZW50IHdhcyByZXBsYWNlZAor ICAgICAgICAgIHdpdGggb25lIG9mIGVsZW1lbnRzIGZyb20gdGhlIHRhaWwuIFNvIHdlIGFsc28g aGF2ZSB0byB0YWtlIGEgbG9vaworICAgICAgICAgIGF0IHRoZSBuZXcgZWxlbWVudCBpbiBjdXJy ZW50IHBvc2l0aW9uLgorICAgICAgICAgIE5vdGUgdGhhdCBpbiBvdXIgSEFTSCBpbXBsZW1lbnRh dGlvbiBoYXNoX2RlbGV0ZSgpIHdvbid0IG1vdmUgYW55CisgICAgICAgICAgZWxlbWVudHMgd2l0 aCBwb3NpdGlvbiBhZnRlciBjdXJyZW50IG9uZSB0byBwb3NpdGlvbiBiZWZvcmUgdGhlCisgICAg ICAgICAgY3VycmVudCAoaS5lLiBmcm9tIHRoZSB0YWlsIHRvIHRoZSBoZWFkKSwgc28gaXQgaXMg c2FmZSB0byBjb250aW51ZQorICAgICAgICAgIGl0ZXJhdGlvbiB3aXRob3V0IHJlLXN0YXJ0aW5n LgorICAgICAgKi8KICAgICAgIGlkeC0tOwogICAgIH0KICAgICBlbHNlIGlmICggdXNlcl90byAp CkBAIC01NTMyLDIyICs1NTQ0LDQxIEBAIHN0YXRpYyBpbnQgaGFuZGxlX2dyYW50X3N0cnVjdCh1 aW50IHN0cnUKIAogICAgICAgY2FzZSAyOgogICAgICAgY2FzZSAzOgotICAgICAgICAvKiAKLSAg ICAgICAgICBVcGRhdGUgdGhlIGdyYW50IHN0cnVjdHVyZSB3aXRoIHRoZSBuZXcgdXNlciBuYW1l IGFuZAotICAgICAgICAgIGhvc3QgbmFtZQotICAgICAgICAqLwotICAgICAgICBncmFudF9uYW1l LT5zZXRfdXNlcl9kZXRhaWxzKHVzZXJfdG8tPmhvc3Quc3RyLCBncmFudF9uYW1lLT5kYiwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX3RvLT51c2VyLnN0ciwgZ3Jh bnRfbmFtZS0+dG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJV RSk7Ci0KLSAgICAgICAgLyoKLSAgICAgICAgICBTaW5jZSB1c2VybmFtZSBpcyBwYXJ0IG9mIHRo ZSBoYXNoIGtleSwgd2hlbiB0aGUgdXNlciBuYW1lCi0gICAgICAgICAgaXMgcmVuYW1lZCwgdGhl IGhhc2gga2V5IGlzIGNoYW5nZWQuIFVwZGF0ZSB0aGUgaGFzaCB0bwotICAgICAgICAgIGVuc3Vy ZSB0aGF0IHRoZSBwb3NpdGlvbiBtYXRjaGVzIHRoZSBuZXcgaGFzaCBrZXkgdmFsdWUKLSAgICAg ICAgKi8KLSAgICAgICAgaGFzaF91cGRhdGUoJmNvbHVtbl9wcml2X2hhc2gsICh1Y2hhciopIGdy YW50X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICh1Y2hhciopIGdyYW50X25hbWUtPmhhc2hf a2V5LCBncmFudF9uYW1lLT5rZXlfbGVuZ3RoKTsKLQlicmVhazsKKyAgICAgIGNhc2UgNDoKKyAg ICAgICAgeworICAgICAgICAgIC8qCisgICAgICAgICAgICBTYXZlIG9sZCBoYXNoIGtleSBhbmQg aXRzIGxlbmd0aCB0byBiZSBhYmxlIHByb3Blcmx5IHVwZGF0ZQorICAgICAgICAgICAgZWxlbWVu dCBwb3NpdGlvbiBpbiBoYXNoLgorICAgICAgICAgICovCisgICAgICAgICAgY2hhciAqb2xkX2tl eT0gZ3JhbnRfbmFtZS0+aGFzaF9rZXk7CisgICAgICAgICAgc2l6ZV90IG9sZF9rZXlfbGVuZ3Ro PSBncmFudF9uYW1lLT5rZXlfbGVuZ3RoOworCisgICAgICAgICAgLyoKKyAgICAgICAgICAgIFVw ZGF0ZSB0aGUgZ3JhbnQgc3RydWN0dXJlIHdpdGggdGhlIG5ldyB1c2VyIG5hbWUgYW5kIGhvc3Qg bmFtZS4KKyAgICAgICAgICAqLworICAgICAgICAgIGdyYW50X25hbWUtPnNldF91c2VyX2RldGFp bHModXNlcl90by0+aG9zdC5zdHIsIGdyYW50X25hbWUtPmRiLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdXNlcl90by0+dXNlci5zdHIsIGdyYW50X25hbWUtPnRuYW1l LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSk7CisKKyAgICAg ICAgICAvKgorICAgICAgICAgICAgU2luY2UgdXNlcm5hbWUgaXMgcGFydCBvZiB0aGUgaGFzaCBr ZXksIHdoZW4gdGhlIHVzZXIgbmFtZQorICAgICAgICAgICAgaXMgcmVuYW1lZCwgdGhlIGhhc2gg a2V5IGlzIGNoYW5nZWQuIFVwZGF0ZSB0aGUgaGFzaCB0bworICAgICAgICAgICAgZW5zdXJlIHRo YXQgdGhlIHBvc2l0aW9uIG1hdGNoZXMgdGhlIG5ldyBoYXNoIGtleSB2YWx1ZQorICAgICAgICAg ICovCisgICAgICAgICAgaGFzaF91cGRhdGUoZ3JhbnRfbmFtZV9oYXNoLCAodWNoYXIqKSBncmFu dF9uYW1lLCAodWNoYXIqKSBvbGRfa2V5LAorICAgICAgICAgICAgICAgICAgICAgIG9sZF9rZXlf bGVuZ3RoKTsKKyAgICAgICAgICAvKgorICAgICAgICAgICAgaGFzaF91cGRhdGUoKSBvcGVyYXRp b24gY291bGQgaGF2ZSBtb3ZlZCBlbGVtZW50IGZyb20gdGhlIHRhaWwKKyAgICAgICAgICAgIG9m IHRoZSBoYXNoIHRvIHRoZSBjdXJyZW50IHBvc2l0aW9uLiBTbyB3ZSBuZWVkIHRvIHRha2UgYSBs b29rCisgICAgICAgICAgICBhdCB0aGUgZWxlbWVudCBpbiBjdXJyZW50IHBvc2l0aW9uIG9uY2Ug YWdhaW4uCisgICAgICAgICAgICBUaGFua3MgdG8gdGhlIGZhY3QgdGhhdCBoYXNoX3VwZGF0ZSgp IGZvciBvdXIgSEFTSCBpbXBsZW1lbnRhdGlvbgorICAgICAgICAgICAgd29uJ3QgbW92ZSBhbnkg ZWxlbWVudHMgZnJvbSB0aGUgdGFpbCBvZiB0aGUgaGFzaCB0byB0aGUgcG9zaXRpb25zCisgICAg ICAgICAgICBiZWZvcmUgdGhlIGN1cnJlbnQgb25lIChhLmsuYS4gaGVhZCkgaXQgaXMgc2FmZSB0 byBjb250aW51ZQorICAgICAgICAgICAgaXRlcmF0aW9uIHdpdGhvdXQgcmVzdGFydGluZy4KKyAg ICAgICAgICAqLworICAgICAgICAgIGlkeC0tOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9 CiAgICAgICB9CiAgICAgfQogICAgIGVsc2UKQEAgLTU2MzMsNyArNTY2NCw3IEBAIHN0YXRpYyBp bnQgaGFuZGxlX2dyYW50X2RhdGEoVEFCTEVfTElTVAogICAgIH0KICAgfQogCi0gIC8qIEhhbmRs ZSBwcm9jZWR1cmVzIHRhYmxlLiAqLworICAvKiBIYW5kbGUgc3RvcmVkIHJvdXRpbmVzIHRhYmxl LiAqLwogICBpZiAoKGZvdW5kPSBoYW5kbGVfZ3JhbnRfdGFibGUodGFibGVzLCA0LCBkcm9wLCB1 c2VyX2Zyb20sIHVzZXJfdG8pKSA8IDApCiAgIHsKICAgICAvKiBIYW5kbGUgb2YgdGFibGUgZmFp bGVkLCBkb24ndCB0b3VjaCBpbi1tZW1vcnkgYXJyYXkuICovCkBAIC01NjQ2LDYgKzU2NzcsMTUg QEAgc3RhdGljIGludCBoYW5kbGVfZ3JhbnRfZGF0YShUQUJMRV9MSVNUCiAgICAgICAgICBmb3Vu ZCkgJiYgISByZXN1bHQpCiAgICAgewogICAgICAgcmVzdWx0PSAxOyAvKiBBdCBsZWFzdCBvbmUg cmVjb3JkL2VsZW1lbnQgZm91bmQuICovCisgICAgICAvKiBJZiBzZWFyY2ggaXMgcmVxdWVzdGVk LCB3ZSBkbyBub3QgbmVlZCB0byBzZWFyY2ggZnVydGhlci4gKi8KKyAgICAgIGlmICghIGRyb3Ag JiYgISB1c2VyX3RvKQorICAgICAgICBnb3RvIGVuZDsKKyAgICB9CisgICAgLyogSGFuZGxlIGZ1 bmNzIGFycmF5LiAqLworICAgIGlmICgoKGhhbmRsZV9ncmFudF9zdHJ1Y3QoNCwgZHJvcCwgdXNl cl9mcm9tLCB1c2VyX3RvKSAmJiAhIHJlc3VsdCkgfHwKKyAgICAgICAgIGZvdW5kKSAmJiAhIHJl c3VsdCkKKyAgICB7CisgICAgICByZXN1bHQ9IDE7IC8qIEF0IGxlYXN0IG9uZSByZWNvcmQvZWxl bWVudCBmb3VuZC4gKi8KICAgICAgIC8qIElmIHNlYXJjaCBpcyByZXF1ZXN0ZWQsIHdlIGRvIG5v dCBuZWVkIHRvIHNlYXJjaCBmdXJ0aGVyLiAqLwogICAgICAgaWYgKCEgZHJvcCAmJiAhIHVzZXJf dG8pCiAgICAgICAgIGdvdG8gZW5kOwoKTm8gYnVuZGxlIChyZWFzb246IHJldmlzaW9uIGlzIGEg bWVyZ2UpLg==