From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Takao Fujiwara To: git-commits@fedoraproject.org Subject: [rpms/ibus] autotool: Delete upstreamed patches Date: Sun, 31 May 2026 02:09:11 GMT Message-ID: <178019335124.1.11161615091928273079.rpms-ibus-7514a68d26de@fedoraproject.org> List-ID: X-Git-Repo: rpms/ibus X-Git-Branch: autotool X-Git-Rev: 7514a68d26de2e5a6481bcb407aff7966c509159 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvaWJ1cwpCcmFuY2gg OiBhdXRvdG9vbApDb21taXQgOiA3NTE0YTY4ZDI2ZGUyZTVhNjQ4MWJjYjQwN2FmZjc5NjZjNTA5 MTU5CkF1dGhvciA6IFRha2FvIEZ1aml3YXJhIDx0ZnVqaXdhckByZWRoYXQuY29tPgpEYXRlICAg OiAyMDI2LTAzLTE2VDAyOjEwOjMyKzA5OjAwClN0YXRzICA6ICswLy0xMjI4IGluIDEgZmlsZShz KQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2lidXMvYy83NTE0 YTY4ZDI2ZGUyZTVhNjQ4MWJjYjQwN2FmZjc5NjZjNTA5MTU5P2JyYW5jaD1hdXRvdG9vbAoKTG9n OgpEZWxldGUgdXBzdHJlYW1lZCBwYXRjaGVzCgotLS0KZGlmZiAtLWdpdCBhL2lidXMtSEVBRC5w YXRjaCBiL2lidXMtSEVBRC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTg0 YjhlOS4uMDAwMDAwMAotLS0gYS9pYnVzLUhFQUQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwx MjI4ICswLDAgQEAKLUZyb20gMzZkMjE5M2VmZTU1YzA5OTk0NDIzNTc1ZGY5YTQ3ZmUyYTQ5MzUy ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdh cmExQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgNSBGZWIgMjAyNiAyMDo0MToyNSArMDkwMAotU3Vi amVjdDogW1BBVENIIDEvM10gY2xpZW50L3dheWxhbmQ6IEFkZAotIHRleHQtaW5wdXQtdW5zdGFi bGUtdjMtY2xpZW50LXByb3RvY29sLmgKLQotLS0tCi0gLi4uL3RleHQtaW5wdXQtdW5zdGFibGUt djMtY2xpZW50LXByb3RvY29sLmggIHwgODM3ICsrKysrKysrKysrKysrKysrKwotIDEgZmlsZSBj aGFuZ2VkLCA4MzcgaW5zZXJ0aW9ucygrKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBjbGllbnQvd2F5 bGFuZC90ZXh0LWlucHV0LXVuc3RhYmxlLXYzLWNsaWVudC1wcm90b2NvbC5oCi0KLWRpZmYgLS1n aXQgYS9jbGllbnQvd2F5bGFuZC90ZXh0LWlucHV0LXVuc3RhYmxlLXYzLWNsaWVudC1wcm90b2Nv bC5oIGIvY2xpZW50L3dheWxhbmQvdGV4dC1pbnB1dC11bnN0YWJsZS12My1jbGllbnQtcHJvdG9j b2wuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwLi5kZWE5NmI4OQotLS0t IC9kZXYvbnVsbAotKysrIGIvY2xpZW50L3dheWxhbmQvdGV4dC1pbnB1dC11bnN0YWJsZS12My1j bGllbnQtcHJvdG9jb2wuaAotQEAgLTAsMCArMSw4MzcgQEAKLSsvKiBHZW5lcmF0ZWQgYnkgd2F5 bGFuZC1zY2FubmVyIDEuMjQuMCAqLwotKwotKyNpZm5kZWYgVEVYVF9JTlBVVF9VTlNUQUJMRV9W M19DTElFTlRfUFJPVE9DT0xfSAotKyNkZWZpbmUgVEVYVF9JTlBVVF9VTlNUQUJMRV9WM19DTElF TlRfUFJPVE9DT0xfSAotKwotKyNpbmNsdWRlIDxzdGRpbnQuaD4KLSsjaW5jbHVkZSA8c3RkZGVm Lmg+Ci0rI2luY2x1ZGUgIndheWxhbmQtY2xpZW50LmgiCi0rCi0rI2lmZGVmICBfX2NwbHVzcGx1 cwotK2V4dGVybiAiQyIgewotKyNlbmRpZgotKwotKy8qKgotKyAqIEBwYWdlIHBhZ2VfdGV4dF9p bnB1dF91bnN0YWJsZV92MyBUaGUgdGV4dF9pbnB1dF91bnN0YWJsZV92MyBwcm90b2NvbAotKyAq IFByb3RvY29sIGZvciBjb21wb3NpbmcgdGV4dAotKyAqCi0rICogQHNlY3Rpb24gcGFnZV9kZXNj X3RleHRfaW5wdXRfdW5zdGFibGVfdjMgRGVzY3JpcHRpb24KLSsgKgotKyAqIFRoaXMgcHJvdG9j b2wgYWxsb3dzIGNvbXBvc2l0b3JzIHRvIGFjdCBhcyBpbnB1dCBtZXRob2RzIGFuZCB0byBzZW5k IHRleHQKLSsgKiB0byBhcHBsaWNhdGlvbnMuIEEgdGV4dCBpbnB1dCBvYmplY3QgaXMgdXNlZCB0 byBtYW5hZ2Ugc3RhdGUgb2Ygd2hhdCBhcmUKLSsgKiB0eXBpY2FsbHkgdGV4dCBlbnRyeSBmaWVs ZHMgaW4gdGhlIGFwcGxpY2F0aW9uLgotKyAqCi0rICogVGhpcyBkb2N1bWVudCBhZGhlcmVzIHRv IHRoZSBSRkMgMjExOSB3aGVuIHVzaW5nIHdvcmRzIGxpa2UgIm11c3QiLAotKyAqICJzaG91bGQi LCAibWF5IiwgZXRjLgotKyAqCi0rICogV2FybmluZyEgVGhlIHByb3RvY29sIGRlc2NyaWJlZCBp biB0aGlzIGZpbGUgaXMgZXhwZXJpbWVudGFsIGFuZAotKyAqIGJhY2t3YXJkIGluY29tcGF0aWJs ZSBjaGFuZ2VzIG1heSBiZSBtYWRlLiBCYWNrd2FyZCBjb21wYXRpYmxlIGNoYW5nZXMKLSsgKiBt YXkgYmUgYWRkZWQgdG9nZXRoZXIgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBpbnRlcmZhY2UgdmVy c2lvbiBidW1wLgotKyAqIEJhY2t3YXJkIGluY29tcGF0aWJsZSBjaGFuZ2VzIGFyZSBkb25lIGJ5 IGJ1bXBpbmcgdGhlIHZlcnNpb24gbnVtYmVyIGluCi0rICogdGhlIHByb3RvY29sIGFuZCBpbnRl cmZhY2UgbmFtZXMgYW5kIHJlc2V0dGluZyB0aGUgaW50ZXJmYWNlIHZlcnNpb24uCi0rICogT25j ZSB0aGUgcHJvdG9jb2wgaXMgdG8gYmUgZGVjbGFyZWQgc3RhYmxlLCB0aGUgJ3onIHByZWZpeCBh bmQgdGhlCi0rICogdmVyc2lvbiBudW1iZXIgaW4gdGhlIHByb3RvY29sIGFuZCBpbnRlcmZhY2Ug bmFtZXMgYXJlIHJlbW92ZWQgYW5kIHRoZQotKyAqIGludGVyZmFjZSB2ZXJzaW9uIG51bWJlciBp cyByZXNldC4KLSsgKgotKyAqIEBzZWN0aW9uIHBhZ2VfaWZhY2VzX3RleHRfaW5wdXRfdW5zdGFi bGVfdjMgSW50ZXJmYWNlcwotKyAqIC0gQHN1YnBhZ2UgcGFnZV9pZmFjZV96d3BfdGV4dF9pbnB1 dF92MyAtIHRleHQgaW5wdXQKLSsgKiAtIEBzdWJwYWdlIHBhZ2VfaWZhY2VfendwX3RleHRfaW5w dXRfbWFuYWdlcl92MyAtIHRleHQgaW5wdXQgbWFuYWdlcgotKyAqIEBzZWN0aW9uIHBhZ2VfY29w eXJpZ2h0X3RleHRfaW5wdXRfdW5zdGFibGVfdjMgQ29weXJpZ2h0Ci0rICogPHByZT4KLSsgKgot KyAqIENvcHlyaWdodCDCqSAyMDEyLCAyMDEzIEludGVsIENvcnBvcmF0aW9uCi0rICogQ29weXJp Z2h0IMKpIDIwMTUsIDIwMTYgSmFuIEFybmUgUGV0ZXJzZW4KLSsgKiBDb3B5cmlnaHQgwqkgMjAx NywgMjAxOCBSZWQgSGF0LCBJbmMuCi0rICogQ29weXJpZ2h0IMKpIDIwMTggICAgICAgUHVyaXNt IFNQQwotKyAqCi0rICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgZGlzdHJpYnV0 ZSwgYW5kIHNlbGwgdGhpcwotKyAqIHNvZnR3YXJlIGFuZCBpdHMgZG9jdW1lbnRhdGlvbiBmb3Ig YW55IHB1cnBvc2UgaXMgaGVyZWJ5IGdyYW50ZWQKLSsgKiB3aXRob3V0IGZlZSwgcHJvdmlkZWQg dGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhcHBlYXIgaW4KLSsgKiBhbGwgY29waWVz IGFuZCB0aGF0IGJvdGggdGhhdCBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24K LSsgKiBub3RpY2UgYXBwZWFyIGluIHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbiwgYW5kIHRoYXQg dGhlIG5hbWUgb2YKLSsgKiB0aGUgY29weXJpZ2h0IGhvbGRlcnMgbm90IGJlIHVzZWQgaW4gYWR2 ZXJ0aXNpbmcgb3IgcHVibGljaXR5Ci0rICogcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2Yg dGhlIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMsCi0rICogd3JpdHRlbiBwcmlvciBwZXJtaXNz aW9uLiAgVGhlIGNvcHlyaWdodCBob2xkZXJzIG1ha2Ugbm8KLSsgKiByZXByZXNlbnRhdGlvbnMg YWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUgZm9yIGFueQotKyAqIHB1cnBv c2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkCi0r ICogd2FycmFudHkuCi0rICoKLSsgKiBUSEUgQ09QWVJJR0hUIEhPTERFUlMgRElTQ0xBSU0gQUxM IFdBUlJBTlRJRVMgV0lUSCBSRUdBUkQgVE8gVEhJUwotKyAqIFNPRlRXQVJFLCBJTkNMVURJTkcg QUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5ECi0rICogRklUTkVT UywgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1Ig QU5ZCi0rICogU1BFQ0lBTCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFO WSBEQU1BR0VTCi0rICogV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFU QSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOCi0rICogQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdM SUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwKLSsgKiBBUklTSU5HIE9VVCBPRiBPUiBJ TiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRgotKyAqIFRISVMgU09G VFdBUkUuCi0rICogPC9wcmU+Ci0rICovCi0rc3RydWN0IHdsX3NlYXQ7Ci0rc3RydWN0IHdsX3N1 cmZhY2U7Ci0rc3RydWN0IHp3cF90ZXh0X2lucHV0X21hbmFnZXJfdjM7Ci0rc3RydWN0IHp3cF90 ZXh0X2lucHV0X3YzOwotKwotKyNpZm5kZWYgWldQX1RFWFRfSU5QVVRfVjNfSU5URVJGQUNFCi0r I2RlZmluZSBaV1BfVEVYVF9JTlBVVF9WM19JTlRFUkZBQ0UKLSsvKioKLSsgKiBAcGFnZSBwYWdl X2lmYWNlX3p3cF90ZXh0X2lucHV0X3YzIHp3cF90ZXh0X2lucHV0X3YzCi0rICogQHNlY3Rpb24g cGFnZV9pZmFjZV96d3BfdGV4dF9pbnB1dF92M19kZXNjIERlc2NyaXB0aW9uCi0rICoKLSsgKiBU aGUgendwX3RleHRfaW5wdXRfdjMgaW50ZXJmYWNlIHJlcHJlc2VudHMgdGV4dCBpbnB1dCBhbmQg aW5wdXQgbWV0aG9kcwotKyAqIGFzc29jaWF0ZWQgd2l0aCBhIHNlYXQuIEl0IHByb3ZpZGVzIGVu dGVyL2xlYXZlIGV2ZW50cyB0byBmb2xsb3cgdGhlCi0rICogdGV4dCBpbnB1dCBmb2N1cyBmb3Ig YSBzZWF0LgotKyAqCi0rICogUmVxdWVzdHMgYXJlIHVzZWQgdG8gZW5hYmxlL2Rpc2FibGUgdGhl IHRleHQtaW5wdXQgb2JqZWN0IGFuZCBzZXQKLSsgKiBzdGF0ZSBpbmZvcm1hdGlvbiBsaWtlIHN1 cnJvdW5kaW5nIGFuZCBzZWxlY3RlZCB0ZXh0IG9yIHRoZSBjb250ZW50IHR5cGUuCi0rICogVGhl IGluZm9ybWF0aW9uIGFib3V0IHRoZSBlbnRlcmVkIHRleHQgaXMgc2VudCB0byB0aGUgdGV4dC1p bnB1dCBvYmplY3QKLSsgKiB2aWEgdGhlIHByZWVkaXRfc3RyaW5nIGFuZCBjb21taXRfc3RyaW5n IGV2ZW50cy4KLSsgKgotKyAqIFRleHQgaXMgdmFsaWQgVVRGLTggZW5jb2RlZCwgaW5kaWNlcyBh bmQgbGVuZ3RocyBhcmUgaW4gYnl0ZXMuIEluZGljZXMKLSsgKiBtdXN0IG5vdCBwb2ludCB0byBt aWRkbGUgYnl0ZXMgaW5zaWRlIGEgY29kZSBwb2ludDogdGhleSBtdXN0IGVpdGhlcgotKyAqIHBv aW50IHRvIHRoZSBmaXJzdCBieXRlIG9mIGEgY29kZSBwb2ludCBvciB0byB0aGUgZW5kIG9mIHRo ZSBidWZmZXIuCi0rICogTGVuZ3RocyBtdXN0IGJlIG1lYXN1cmVkIGJldHdlZW4gdHdvIHZhbGlk IGluZGljZXMuCi0rICoKLSsgKiBGb2N1cyBtb3ZpbmcgdGhyb3VnaG91dCBzdXJmYWNlcyB3aWxs IHJlc3VsdCBpbiB0aGUgZW1pc3Npb24gb2YKLSsgKiB6d3BfdGV4dF9pbnB1dF92My5lbnRlciBh bmQgendwX3RleHRfaW5wdXRfdjMubGVhdmUgZXZlbnRzLiBUaGUgZm9jdXNlZAotKyAqIHN1cmZh Y2UgbXVzdCBjb21taXQgendwX3RleHRfaW5wdXRfdjMuZW5hYmxlIGFuZAotKyAqIHp3cF90ZXh0 X2lucHV0X3YzLmRpc2FibGUgcmVxdWVzdHMgYXMgdGhlIGtleWJvYXJkIGZvY3VzIG1vdmVzIGFj cm9zcwotKyAqIGVkaXRhYmxlIGFuZCBub24tZWRpdGFibGUgZWxlbWVudHMgb2YgdGhlIFVJLiBU aG9zZSB0d28gcmVxdWVzdHMgYXJlIG5vdAotKyAqIGV4cGVjdGVkIHRvIGJlIHBhaXJlZCB3aXRo IGVhY2ggb3RoZXIsIHRoZSBjb21wb3NpdG9yIG11c3QgYmUgYWJsZSB0bwotKyAqIGhhbmRsZSBj b25zZWN1dGl2ZSBzZXJpZXMgb2YgdGhlIHNhbWUgcmVxdWVzdC4KLSsgKgotKyAqIFN0YXRlIGlz IHNlbnQgYnkgdGhlIHN0YXRlIHJlcXVlc3RzIChzZXRfc3Vycm91bmRpbmdfdGV4dCwKLSsgKiBz ZXRfY29udGVudF90eXBlIGFuZCBzZXRfY3Vyc29yX3JlY3RhbmdsZSkgYW5kIGEgY29tbWl0IHJl cXVlc3QuIEFmdGVyIGFuCi0rICogZW50ZXIgZXZlbnQgb3IgZGlzYWJsZSByZXF1ZXN0IGFsbCBz dGF0ZSBpbmZvcm1hdGlvbiBpcyBpbnZhbGlkYXRlZCBhbmQKLSsgKiBuZWVkcyB0byBiZSByZXNl bnQgYnkgdGhlIGNsaWVudC4KLSsgKiBAc2VjdGlvbiBwYWdlX2lmYWNlX3p3cF90ZXh0X2lucHV0 X3YzX2FwaSBBUEkKLSsgKiBTZWUgQHJlZiBpZmFjZV96d3BfdGV4dF9pbnB1dF92My4KLSsgKi8K LSsvKioKLSsgKiBAZGVmZ3JvdXAgaWZhY2VfendwX3RleHRfaW5wdXRfdjMgVGhlIHp3cF90ZXh0 X2lucHV0X3YzIGludGVyZmFjZQotKyAqCi0rICogVGhlIHp3cF90ZXh0X2lucHV0X3YzIGludGVy ZmFjZSByZXByZXNlbnRzIHRleHQgaW5wdXQgYW5kIGlucHV0IG1ldGhvZHMKLSsgKiBhc3NvY2lh dGVkIHdpdGggYSBzZWF0LiBJdCBwcm92aWRlcyBlbnRlci9sZWF2ZSBldmVudHMgdG8gZm9sbG93 IHRoZQotKyAqIHRleHQgaW5wdXQgZm9jdXMgZm9yIGEgc2VhdC4KLSsgKgotKyAqIFJlcXVlc3Rz IGFyZSB1c2VkIHRvIGVuYWJsZS9kaXNhYmxlIHRoZSB0ZXh0LWlucHV0IG9iamVjdCBhbmQgc2V0 Ci0rICogc3RhdGUgaW5mb3JtYXRpb24gbGlrZSBzdXJyb3VuZGluZyBhbmQgc2VsZWN0ZWQgdGV4 dCBvciB0aGUgY29udGVudCB0eXBlLgotKyAqIFRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZW50 ZXJlZCB0ZXh0IGlzIHNlbnQgdG8gdGhlIHRleHQtaW5wdXQgb2JqZWN0Ci0rICogdmlhIHRoZSBw cmVlZGl0X3N0cmluZyBhbmQgY29tbWl0X3N0cmluZyBldmVudHMuCi0rICoKLSsgKiBUZXh0IGlz IHZhbGlkIFVURi04IGVuY29kZWQsIGluZGljZXMgYW5kIGxlbmd0aHMgYXJlIGluIGJ5dGVzLiBJ bmRpY2VzCi0rICogbXVzdCBub3QgcG9pbnQgdG8gbWlkZGxlIGJ5dGVzIGluc2lkZSBhIGNvZGUg cG9pbnQ6IHRoZXkgbXVzdCBlaXRoZXIKLSsgKiBwb2ludCB0byB0aGUgZmlyc3QgYnl0ZSBvZiBh IGNvZGUgcG9pbnQgb3IgdG8gdGhlIGVuZCBvZiB0aGUgYnVmZmVyLgotKyAqIExlbmd0aHMgbXVz dCBiZSBtZWFzdXJlZCBiZXR3ZWVuIHR3byB2YWxpZCBpbmRpY2VzLgotKyAqCi0rICogRm9jdXMg bW92aW5nIHRocm91Z2hvdXQgc3VyZmFjZXMgd2lsbCByZXN1bHQgaW4gdGhlIGVtaXNzaW9uIG9m Ci0rICogendwX3RleHRfaW5wdXRfdjMuZW50ZXIgYW5kIHp3cF90ZXh0X2lucHV0X3YzLmxlYXZl IGV2ZW50cy4gVGhlIGZvY3VzZWQKLSsgKiBzdXJmYWNlIG11c3QgY29tbWl0IHp3cF90ZXh0X2lu cHV0X3YzLmVuYWJsZSBhbmQKLSsgKiB6d3BfdGV4dF9pbnB1dF92My5kaXNhYmxlIHJlcXVlc3Rz IGFzIHRoZSBrZXlib2FyZCBmb2N1cyBtb3ZlcyBhY3Jvc3MKLSsgKiBlZGl0YWJsZSBhbmQgbm9u LWVkaXRhYmxlIGVsZW1lbnRzIG9mIHRoZSBVSS4gVGhvc2UgdHdvIHJlcXVlc3RzIGFyZSBub3QK LSsgKiBleHBlY3RlZCB0byBiZSBwYWlyZWQgd2l0aCBlYWNoIG90aGVyLCB0aGUgY29tcG9zaXRv ciBtdXN0IGJlIGFibGUgdG8KLSsgKiBoYW5kbGUgY29uc2VjdXRpdmUgc2VyaWVzIG9mIHRoZSBz YW1lIHJlcXVlc3QuCi0rICoKLSsgKiBTdGF0ZSBpcyBzZW50IGJ5IHRoZSBzdGF0ZSByZXF1ZXN0 cyAoc2V0X3N1cnJvdW5kaW5nX3RleHQsCi0rICogc2V0X2NvbnRlbnRfdHlwZSBhbmQgc2V0X2N1 cnNvcl9yZWN0YW5nbGUpIGFuZCBhIGNvbW1pdCByZXF1ZXN0LiBBZnRlciBhbgotKyAqIGVudGVy IGV2ZW50IG9yIGRpc2FibGUgcmVxdWVzdCBhbGwgc3RhdGUgaW5mb3JtYXRpb24gaXMgaW52YWxp ZGF0ZWQgYW5kCi0rICogbmVlZHMgdG8gYmUgcmVzZW50IGJ5IHRoZSBjbGllbnQuCi0rICovCi0r ZXh0ZXJuIGNvbnN0IHN0cnVjdCB3bF9pbnRlcmZhY2UgendwX3RleHRfaW5wdXRfdjNfaW50ZXJm YWNlOwotKyNlbmRpZgotKyNpZm5kZWYgWldQX1RFWFRfSU5QVVRfTUFOQUdFUl9WM19JTlRFUkZB Q0UKLSsjZGVmaW5lIFpXUF9URVhUX0lOUFVUX01BTkFHRVJfVjNfSU5URVJGQUNFCi0rLyoqCi0r ICogQHBhZ2UgcGFnZV9pZmFjZV96d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YzIHp3cF90ZXh0X2lu cHV0X21hbmFnZXJfdjMKLSsgKiBAc2VjdGlvbiBwYWdlX2lmYWNlX3p3cF90ZXh0X2lucHV0X21h bmFnZXJfdjNfZGVzYyBEZXNjcmlwdGlvbgotKyAqCi0rICogQSBmYWN0b3J5IGZvciB0ZXh0LWlu cHV0IG9iamVjdHMuIFRoaXMgb2JqZWN0IGlzIGEgZ2xvYmFsIHNpbmdsZXRvbi4KLSsgKiBAc2Vj dGlvbiBwYWdlX2lmYWNlX3p3cF90ZXh0X2lucHV0X21hbmFnZXJfdjNfYXBpIEFQSQotKyAqIFNl ZSBAcmVmIGlmYWNlX3p3cF90ZXh0X2lucHV0X21hbmFnZXJfdjMuCi0rICovCi0rLyoqCi0rICog QGRlZmdyb3VwIGlmYWNlX3p3cF90ZXh0X2lucHV0X21hbmFnZXJfdjMgVGhlIHp3cF90ZXh0X2lu cHV0X21hbmFnZXJfdjMgaW50ZXJmYWNlCi0rICoKLSsgKiBBIGZhY3RvcnkgZm9yIHRleHQtaW5w dXQgb2JqZWN0cy4gVGhpcyBvYmplY3QgaXMgYSBnbG9iYWwgc2luZ2xldG9uLgotKyAqLwotK2V4 dGVybiBjb25zdCBzdHJ1Y3Qgd2xfaW50ZXJmYWNlIHp3cF90ZXh0X2lucHV0X21hbmFnZXJfdjNf aW50ZXJmYWNlOwotKyNlbmRpZgotKwotKyNpZm5kZWYgWldQX1RFWFRfSU5QVVRfVjNfQ0hBTkdF X0NBVVNFX0VOVU0KLSsjZGVmaW5lIFpXUF9URVhUX0lOUFVUX1YzX0NIQU5HRV9DQVVTRV9FTlVN Ci0rLyoqCi0rICogQGluZ3JvdXAgaWZhY2VfendwX3RleHRfaW5wdXRfdjMKLSsgKiB0ZXh0IGNo YW5nZSByZWFzb24KLSsgKgotKyAqIFJlYXNvbiBmb3IgdGhlIGNoYW5nZSBvZiBzdXJyb3VuZGlu ZyB0ZXh0IG9yIGN1cnNvciBwb3Npc2lvbi4KLSsgKi8KLStlbnVtIHp3cF90ZXh0X2lucHV0X3Yz X2NoYW5nZV9jYXVzZSB7Ci0rCS8qKgotKwkgKiBpbnB1dCBtZXRob2QgY2F1c2VkIHRoZSBjaGFu Z2UKLSsJICovCi0rCVpXUF9URVhUX0lOUFVUX1YzX0NIQU5HRV9DQVVTRV9JTlBVVF9NRVRIT0Qg PSAwLAotKwkvKioKLSsJICogc29tZXRoaW5nIGVsc2UgdGhhbiB0aGUgaW5wdXQgbWV0aG9kIGNh dXNlZCB0aGUgY2hhbmdlCi0rCSAqLwotKwlaV1BfVEVYVF9JTlBVVF9WM19DSEFOR0VfQ0FVU0Vf T1RIRVIgPSAxLAotK307Ci0rI2VuZGlmIC8qIFpXUF9URVhUX0lOUFVUX1YzX0NIQU5HRV9DQVVT RV9FTlVNICovCi0rCi0rI2lmbmRlZiBaV1BfVEVYVF9JTlBVVF9WM19DT05URU5UX0hJTlRfRU5V TQotKyNkZWZpbmUgWldQX1RFWFRfSU5QVVRfVjNfQ09OVEVOVF9ISU5UX0VOVU0KLSsvKioKLSsg KiBAaW5ncm91cCBpZmFjZV96d3BfdGV4dF9pbnB1dF92MwotKyAqIGNvbnRlbnQgaGludAotKyAq Ci0rICogQ29udGVudCBoaW50IGlzIGEgYml0bWFzayB0byBhbGxvdyB0byBtb2RpZnkgdGhlIGJl aGF2aW9yIG9mIHRoZSB0ZXh0Ci0rICogaW5wdXQuCi0rICovCi0rZW51bSB6d3BfdGV4dF9pbnB1 dF92M19jb250ZW50X2hpbnQgewotKwkvKioKLSsJICogbm8gc3BlY2lhbCBiZWhhdmlvcgotKwkg Ki8KLSsJWldQX1RFWFRfSU5QVVRfVjNfQ09OVEVOVF9ISU5UX05PTkUgPSAweDAsCi0rCS8qKgot KwkgKiBzdWdnZXN0IHdvcmQgY29tcGxldGlvbnMKLSsJICovCi0rCVpXUF9URVhUX0lOUFVUX1Yz X0NPTlRFTlRfSElOVF9DT01QTEVUSU9OID0gMHgxLAotKwkvKioKLSsJICogc3VnZ2VzdCB3b3Jk IGNvcnJlY3Rpb25zCi0rCSAqLwotKwlaV1BfVEVYVF9JTlBVVF9WM19DT05URU5UX0hJTlRfU1BF TExDSEVDSyA9IDB4MiwKLSsJLyoqCi0rCSAqIHN3aXRjaCB0byB1cHBlcmNhc2UgbGV0dGVycyBh dCB0aGUgc3RhcnQgb2YgYSBzZW50ZW5jZQotKwkgKi8KLSsJWldQX1RFWFRfSU5QVVRfVjNfQ09O VEVOVF9ISU5UX0FVVE9fQ0FQSVRBTElaQVRJT04gPSAweDQsCi0rCS8qKgotKwkgKiBwcmVmZXIg bG93ZXJjYXNlIGxldHRlcnMKLSsJICovCi0rCVpXUF9URVhUX0lOUFVUX1YzX0NPTlRFTlRfSElO VF9MT1dFUkNBU0UgPSAweDgsCi0rCS8qKgotKwkgKiBwcmVmZXIgdXBwZXJjYXNlIGxldHRlcnMK LSsJICovCi0rCVpXUF9URVhUX0lOUFVUX1YzX0NPTlRFTlRfSElOVF9VUFBFUkNBU0UgPSAweDEw LAotKwkvKioKLSsJICogcHJlZmVyIGNhc2luZyBmb3IgdGl0bGVzIGFuZCBoZWFkaW5ncyAoY2Fu IGJlIGxhbmd1YWdlIGRlcGVuZGVudCkKLSsJICovCi0rCVpXUF9URVhUX0lOUFVUX1YzX0NPTlRF TlRfSElOVF9USVRMRUNBU0UgPSAweDIwLAotKwkvKioKLSsJICogY2hhcmFjdGVycyBzaG91bGQg YmUgaGlkZGVuCi0rCSAqLwotKwlaV1BfVEVYVF9JTlBVVF9WM19DT05URU5UX0hJTlRfSElEREVO X1RFWFQgPSAweDQwLAotKwkvKioKLSsJICogdHlwZWQgdGV4dCBzaG91bGQgbm90IGJlIHN0b3Jl ZAotKwkgKi8KLSsJWldQX1RFWFRfSU5QVVRfVjNfQ09OVEVOVF9ISU5UX1NFTlNJVElWRV9EQVRB ID0gMHg4MCwKLSsJLyoqCi0rCSAqIGp1c3QgTGF0aW4gY2hhcmFjdGVycyBzaG91bGQgYmUgZW50 ZXJlZAotKwkgKi8KLSsJWldQX1RFWFRfSU5QVVRfVjNfQ09OVEVOVF9ISU5UX0xBVElOID0gMHgx MDAsCi0rCS8qKgotKwkgKiB0aGUgdGV4dCBpbnB1dCBpcyBtdWx0aWxpbmUKLSsJICovCi0rCVpX UF9URVhUX0lOUFVUX1YzX0NPTlRFTlRfSElOVF9NVUxUSUxJTkUgPSAweDIwMCwKLSt9OwotKyNl bmRpZiAvKiBaV1BfVEVYVF9JTlBVVF9WM19DT05URU5UX0hJTlRfRU5VTSAqLwotKwotKyNpZm5k ZWYgWldQX1RFWFRfSU5QVVRfVjNfQ09OVEVOVF9QVVJQT1NFX0VOVU0KLSsjZGVmaW5lIFpXUF9U RVhUX0lOUFVUX1YzX0NPTlRFTlRfUFVSUE9TRV9FTlVNCi0rLyoqCi0rICogQGluZ3JvdXAgaWZh Y2VfendwX3RleHRfaW5wdXRfdjMKLSsgKiBjb250ZW50IHB1cnBvc2UKLSsgKgotKyAqIFRoZSBj b250ZW50IHB1cnBvc2UgYWxsb3dzIHRvIHNwZWNpZnkgdGhlIHByaW1hcnkgcHVycG9zZSBvZiBh IHRleHQKLSsgKiBpbnB1dC4KLSsgKgotKyAqIFRoaXMgYWxsb3dzIGFuIGlucHV0IG1ldGhvZCB0 byBzaG93IHNwZWNpYWwgcHVycG9zZSBpbnB1dCBwYW5lbHMgd2l0aAotKyAqIGV4dHJhIGNoYXJh Y3RlcnMgb3IgdG8gZGlzYWxsb3cgc29tZSBjaGFyYWN0ZXJzLgotKyAqLwotK2VudW0gendwX3Rl eHRfaW5wdXRfdjNfY29udGVudF9wdXJwb3NlIHsKLSsJLyoqCi0rCSAqIGRlZmF1bHQgaW5wdXQs IGFsbG93aW5nIGFsbCBjaGFyYWN0ZXJzCi0rCSAqLwotKwlaV1BfVEVYVF9JTlBVVF9WM19DT05U RU5UX1BVUlBPU0VfTk9STUFMID0gMCwKLSsJLyoqCi0rCSAqIGFsbG93IG9ubHkgYWxwaGFiZXRp YyBjaGFyYWN0ZXJzCi0rCSAqLwotKwlaV1BfVEVYVF9JTlBVVF9WM19DT05URU5UX1BVUlBPU0Vf QUxQSEEgPSAxLAotKwkvKioKLSsJICogYWxsb3cgb25seSBkaWdpdHMKLSsJICovCi0rCVpXUF9U RVhUX0lOUFVUX1YzX0NPTlRFTlRfUFVSUE9TRV9ESUdJVFMgPSAyLAotKwkvKioKLSsJICogaW5w dXQgYSBudW1iZXIgKGluY2x1ZGluZyBkZWNpbWFsIHNlcGFyYXRvciBhbmQgc2lnbikKLSsJICov Ci0rCVpXUF9URVhUX0lOUFVUX1YzX0NPTlRFTlRfUFVSUE9TRV9OVU1CRVIgPSAzLAotKwkvKioK LSsJICogaW5wdXQgYSBwaG9uZSBudW1iZXIKLSsJICovCi0rCVpXUF9URVhUX0lOUFVUX1YzX0NP TlRFTlRfUFVSUE9TRV9QSE9ORSA9IDQsCi0rCS8qKgotKwkgKiBpbnB1dCBhbiBVUkwKLSsJICov Ci0rCVpXUF9URVhUX0lOUFVUX1YzX0NPTlRFTlRfUFVSUE9TRV9VUkwgPSA1LAotKwkvKioKLSsJ ICogaW5wdXQgYW4gZW1haWwgYWRkcmVzcwotKwkgKi8KLSsJWldQX1RFWFRfSU5QVVRfVjNfQ09O VEVOVF9QVVJQT1NFX0VNQUlMID0gNiwKLSsJLyoqCi0rCSAqIGlucHV0IGEgbmFtZSBvZiBhIHBl cnNvbgotKwkgKi8KLSsJWldQX1RFWFRfSU5QVVRfVjNfQ09OVEVOVF9QVVJQT1NFX05BTUUgPSA3 LAotKwkvKioKLSsJICogaW5wdXQgYSBwYXNzd29yZCAoY29tYmluZSB3aXRoIHNlbnNpdGl2ZV9k YXRhIGhpbnQpCi0rCSAqLwotKwlaV1BfVEVYVF9JTlBVVF9WM19DT05URU5UX1BVUlBPU0VfUEFT U1dPUkQgPSA4LAotKwkvKioKLSsJICogaW5wdXQgaXMgYSBudW1lcmljIHBhc3N3b3JkIChjb21i aW5lIHdpdGggc2Vuc2l0aXZlX2RhdGEgaGludCkKLSsJICovCi0rCVpXUF9URVhUX0lOUFVUX1Yz X0NPTlRFTlRfUFVSUE9TRV9QSU4gPSA5LAotKwkvKioKLSsJICogaW5wdXQgYSBkYXRlCi0rCSAq LwotKwlaV1BfVEVYVF9JTlBVVF9WM19DT05URU5UX1BVUlBPU0VfREFURSA9IDEwLAotKwkvKioK LSsJICogaW5wdXQgYSB0aW1lCi0rCSAqLwotKwlaV1BfVEVYVF9JTlBVVF9WM19DT05URU5UX1BV UlBPU0VfVElNRSA9IDExLAotKwkvKioKLSsJICogaW5wdXQgYSBkYXRlIGFuZCB0aW1lCi0rCSAq LwotKwlaV1BfVEVYVF9JTlBVVF9WM19DT05URU5UX1BVUlBPU0VfREFURVRJTUUgPSAxMiwKLSsJ LyoqCi0rCSAqIGlucHV0IGZvciBhIHRlcm1pbmFsCi0rCSAqLwotKwlaV1BfVEVYVF9JTlBVVF9W M19DT05URU5UX1BVUlBPU0VfVEVSTUlOQUwgPSAxMywKLSt9OwotKyNlbmRpZiAvKiBaV1BfVEVY VF9JTlBVVF9WM19DT05URU5UX1BVUlBPU0VfRU5VTSAqLwotKwotKy8qKgotKyAqIEBpbmdyb3Vw IGlmYWNlX3p3cF90ZXh0X2lucHV0X3YzCi0rICogQHN0cnVjdCB6d3BfdGV4dF9pbnB1dF92M19s aXN0ZW5lcgotKyAqLwotK3N0cnVjdCB6d3BfdGV4dF9pbnB1dF92M19saXN0ZW5lciB7Ci0rCS8q KgotKwkgKiBlbnRlciBldmVudAotKwkgKgotKwkgKiBOb3RpZmljYXRpb24gdGhhdCB0aGlzIHNl YXQncyB0ZXh0LWlucHV0IGZvY3VzIGlzIG9uIGEgY2VydGFpbgotKwkgKiBzdXJmYWNlLgotKwkg KgotKwkgKiBJZiBjbGllbnQgaGFzIGNyZWF0ZWQgbXVsdGlwbGUgdGV4dCBpbnB1dCBvYmplY3Rz LCBjb21wb3NpdG9yCi0rCSAqIG11c3Qgc2VuZCB0aGlzIGV2ZW50IHRvIGFsbCBvZiB0aGVtLgot KwkgKgotKwkgKiBXaGVuIHRoZSBzZWF0IGhhcyB0aGUga2V5Ym9hcmQgY2FwYWJpbGl0eSB0aGUg dGV4dC1pbnB1dCBmb2N1cwotKwkgKiBmb2xsb3dzIHRoZSBrZXlib2FyZCBmb2N1cy4gVGhpcyBl dmVudCBzZXRzIHRoZSBjdXJyZW50IHN1cmZhY2UKLSsJICogZm9yIHRoZSB0ZXh0LWlucHV0IG9i amVjdC4KLSsJICovCi0rCXZvaWQgKCplbnRlcikodm9pZCAqZGF0YSwKLSsJCSAgICAgIHN0cnVj dCB6d3BfdGV4dF9pbnB1dF92MyAqendwX3RleHRfaW5wdXRfdjMsCi0rCQkgICAgICBzdHJ1Y3Qg d2xfc3VyZmFjZSAqc3VyZmFjZSk7Ci0rCS8qKgotKwkgKiBsZWF2ZSBldmVudAotKwkgKgotKwkg KiBOb3RpZmljYXRpb24gdGhhdCB0aGlzIHNlYXQncyB0ZXh0LWlucHV0IGZvY3VzIGlzIG5vIGxv bmdlciBvbgotKwkgKiBhIGNlcnRhaW4gc3VyZmFjZS4gVGhlIGNsaWVudCBzaG91bGQgcmVzZXQg YW55IHByZWVkaXQgc3RyaW5nCi0rCSAqIHByZXZpb3VzbHkgc2V0LgotKwkgKgotKwkgKiBUaGUg bGVhdmUgbm90aWZpY2F0aW9uIGNsZWFycyB0aGUgY3VycmVudCBzdXJmYWNlLiBJdCBpcyBzZW50 Ci0rCSAqIGJlZm9yZSB0aGUgZW50ZXIgbm90aWZpY2F0aW9uIGZvciB0aGUgbmV3IGZvY3VzLiBB ZnRlciBsZWF2ZQotKwkgKiBldmVudCwgY29tcG9zaXRvciBtdXN0IGlnbm9yZSByZXF1ZXN0cyBm cm9tIGFueSB0ZXh0IGlucHV0Ci0rCSAqIGluc3RhbmNlcyB1bnRpbCBuZXh0IGVudGVyIGV2ZW50 LgotKwkgKgotKwkgKiBXaGVuIHRoZSBzZWF0IGhhcyB0aGUga2V5Ym9hcmQgY2FwYWJpbGl0eSB0 aGUgdGV4dC1pbnB1dCBmb2N1cwotKwkgKiBmb2xsb3dzIHRoZSBrZXlib2FyZCBmb2N1cy4KLSsJ ICovCi0rCXZvaWQgKCpsZWF2ZSkodm9pZCAqZGF0YSwKLSsJCSAgICAgIHN0cnVjdCB6d3BfdGV4 dF9pbnB1dF92MyAqendwX3RleHRfaW5wdXRfdjMsCi0rCQkgICAgICBzdHJ1Y3Qgd2xfc3VyZmFj ZSAqc3VyZmFjZSk7Ci0rCS8qKgotKwkgKiBwcmUtZWRpdAotKwkgKgotKwkgKiBOb3RpZnkgd2hl biBhIG5ldyBjb21wb3NpbmcgdGV4dCAocHJlLWVkaXQpIHNob3VsZCBiZSBzZXQgYXQKLSsJICog dGhlIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uLiBBbnkgcHJldmlvdXNseSBzZXQgY29tcG9zaW5n IHRleHQKLSsJICogbXVzdCBiZSByZW1vdmVkLiBBbnkgcHJldmlvdXNseSBleGlzdGluZyBzZWxl Y3RlZCB0ZXh0IG11c3QgYmUKLSsJICogcmVtb3ZlZC4KLSsJICoKLSsJICogVGhlIGFyZ3VtZW50 IHRleHQgY29udGFpbnMgdGhlIHByZS1lZGl0IHN0cmluZyBidWZmZXIuCi0rCSAqCi0rCSAqIFRo ZSBwYXJhbWV0ZXJzIGN1cnNvcl9iZWdpbiBhbmQgY3Vyc29yX2VuZCBhcmUgY291bnRlZCBpbiBi eXRlcwotKwkgKiByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdWJtaXR0ZWQgdGV4 dCBidWZmZXIuIEN1cnNvcgotKwkgKiBzaG91bGQgYmUgaGlkZGVuIHdoZW4gYm90aCBhcmUgZXF1 YWwgdG8gLTEuCi0rCSAqCi0rCSAqIFRoZXkgY291bGQgYmUgcmVwcmVzZW50ZWQgYnkgdGhlIGNs aWVudCBhcyBhIGxpbmUgaWYgYm90aCB2YWx1ZXMKLSsJICogYXJlIHRoZSBzYW1lLCBvciBhcyBh IHRleHQgaGlnaGxpZ2h0IG90aGVyd2lzZS4KLSsJICoKLSsJICogVmFsdWVzIHNldCB3aXRoIHRo aXMgZXZlbnQgYXJlIGRvdWJsZS1idWZmZXJlZC4gVGhleSBtdXN0IGJlCi0rCSAqIGFwcGxpZWQg YW5kIHJlc2V0IHRvIGluaXRpYWwgb24gdGhlIG5leHQgendwX3RleHRfaW5wdXRfdjMuZG9uZQot KwkgKiBldmVudC4KLSsJICoKLSsJICogVGhlIGluaXRpYWwgdmFsdWUgb2YgdGV4dCBpcyBhbiBl bXB0eSBzdHJpbmcsIGFuZCBjdXJzb3JfYmVnaW4sCi0rCSAqIGN1cnNvcl9lbmQgYW5kIGN1cnNv cl9oaWRkZW4gYXJlIGFsbCAwLgotKwkgKi8KLSsJdm9pZCAoKnByZWVkaXRfc3RyaW5nKSh2b2lk ICpkYXRhLAotKwkJCSAgICAgICBzdHJ1Y3QgendwX3RleHRfaW5wdXRfdjMgKnp3cF90ZXh0X2lu cHV0X3YzLAotKwkJCSAgICAgICBjb25zdCBjaGFyICp0ZXh0LAotKwkJCSAgICAgICBpbnQzMl90 IGN1cnNvcl9iZWdpbiwKLSsJCQkgICAgICAgaW50MzJfdCBjdXJzb3JfZW5kKTsKLSsJLyoqCi0r CSAqIHRleHQgY29tbWl0Ci0rCSAqCi0rCSAqIE5vdGlmeSB3aGVuIHRleHQgc2hvdWxkIGJlIGlu c2VydGVkIGludG8gdGhlIGVkaXRvciB3aWRnZXQuCi0rCSAqIFRoZSB0ZXh0IHRvIGNvbW1pdCBj b3VsZCBiZSBlaXRoZXIganVzdCBhIHNpbmdsZSBjaGFyYWN0ZXIgYWZ0ZXIKLSsJICogYSBrZXkg cHJlc3Mgb3IgdGhlIHJlc3VsdCBvZiBzb21lIGNvbXBvc2luZyAocHJlLWVkaXQpLgotKwkgKgot KwkgKiBWYWx1ZXMgc2V0IHdpdGggdGhpcyBldmVudCBhcmUgZG91YmxlLWJ1ZmZlcmVkLiBUaGV5 IG11c3QgYmUKLSsJICogYXBwbGllZCBhbmQgcmVzZXQgdG8gaW5pdGlhbCBvbiB0aGUgbmV4dCB6 d3BfdGV4dF9pbnB1dF92My5kb25lCi0rCSAqIGV2ZW50LgotKwkgKgotKwkgKiBUaGUgaW5pdGlh bCB2YWx1ZSBvZiB0ZXh0IGlzIGFuIGVtcHR5IHN0cmluZy4KLSsJICovCi0rCXZvaWQgKCpjb21t aXRfc3RyaW5nKSh2b2lkICpkYXRhLAotKwkJCSAgICAgIHN0cnVjdCB6d3BfdGV4dF9pbnB1dF92 MyAqendwX3RleHRfaW5wdXRfdjMsCi0rCQkJICAgICAgY29uc3QgY2hhciAqdGV4dCk7Ci0rCS8q KgotKwkgKiBkZWxldGUgc3Vycm91bmRpbmcgdGV4dAotKwkgKgotKwkgKiBOb3RpZnkgd2hlbiB0 aGUgdGV4dCBhcm91bmQgdGhlIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uIHNob3VsZAotKwkgKiBi ZSBkZWxldGVkLgotKwkgKgotKwkgKiBCZWZvcmVfbGVuZ3RoIGFuZCBhZnRlcl9sZW5ndGggYXJl IHRoZSBudW1iZXIgb2YgYnl0ZXMgYmVmb3JlCi0rCSAqIGFuZCBhZnRlciB0aGUgY3VycmVudCBj dXJzb3IgaW5kZXggKGV4Y2x1ZGluZyB0aGUgc2VsZWN0aW9uKSB0bwotKwkgKiBkZWxldGUuCi0r CSAqCi0rCSAqIElmIGEgcHJlZWRpdCB0ZXh0IGlzIHByZXNlbnQsIGluIGVmZmVjdCBiZWZvcmVf bGVuZ3RoIGlzIGNvdW50ZWQKLSsJICogZnJvbSB0aGUgYmVnaW5uaW5nIG9mIGl0LCBhbmQgYWZ0 ZXJfbGVuZ3RoIGZyb20gaXRzIGVuZCAoc2VlCi0rCSAqIGRvbmUgZXZlbnQgc2VxdWVuY2UpLgot KwkgKgotKwkgKiBWYWx1ZXMgc2V0IHdpdGggdGhpcyBldmVudCBhcmUgZG91YmxlLWJ1ZmZlcmVk LiBUaGV5IG11c3QgYmUKLSsJICogYXBwbGllZCBhbmQgcmVzZXQgdG8gaW5pdGlhbCBvbiB0aGUg bmV4dCB6d3BfdGV4dF9pbnB1dF92My5kb25lCi0rCSAqIGV2ZW50LgotKwkgKgotKwkgKiBUaGUg aW5pdGlhbCB2YWx1ZXMgb2YgYm90aCBiZWZvcmVfbGVuZ3RoIGFuZCBhZnRlcl9sZW5ndGggYXJl IDAuCi0rCSAqIEBwYXJhbSBiZWZvcmVfbGVuZ3RoIGxlbmd0aCBvZiB0ZXh0IGJlZm9yZSBjdXJy ZW50IGN1cnNvciBwb3NpdGlvbgotKwkgKiBAcGFyYW0gYWZ0ZXJfbGVuZ3RoIGxlbmd0aCBvZiB0 ZXh0IGFmdGVyIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uCi0rCSAqLwotKwl2b2lkICgqZGVsZXRl X3N1cnJvdW5kaW5nX3RleHQpKHZvaWQgKmRhdGEsCi0rCQkJCQlzdHJ1Y3QgendwX3RleHRfaW5w dXRfdjMgKnp3cF90ZXh0X2lucHV0X3YzLAotKwkJCQkJdWludDMyX3QgYmVmb3JlX2xlbmd0aCwK LSsJCQkJCXVpbnQzMl90IGFmdGVyX2xlbmd0aCk7Ci0rCS8qKgotKwkgKiBhcHBseSBjaGFuZ2Vz Ci0rCSAqCi0rCSAqIEluc3RydWN0IHRoZSBhcHBsaWNhdGlvbiB0byBhcHBseSBjaGFuZ2VzIHRv IHN0YXRlIHJlcXVlc3RlZAotKwkgKiBieSB0aGUgcHJlZWRpdF9zdHJpbmcsIGNvbW1pdF9zdHJp bmcgYW5kIGRlbGV0ZV9zdXJyb3VuZGluZ190ZXh0Ci0rCSAqIGV2ZW50cy4gVGhlIHN0YXRlIHJl bGF0aW5nIHRvIHRoZXNlIGV2ZW50cyBpcyBkb3VibGUtYnVmZmVyZWQsCi0rCSAqIGFuZCBlYWNo IG9uZSBtb2RpZmllcyB0aGUgcGVuZGluZyBzdGF0ZS4gVGhpcyBldmVudCByZXBsYWNlcyB0aGUK LSsJICogY3VycmVudCBzdGF0ZSB3aXRoIHRoZSBwZW5kaW5nIHN0YXRlLgotKwkgKgotKwkgKiBU aGUgYXBwbGljYXRpb24gbXVzdCBwcm9jZWVkIGJ5IGV2YWx1YXRpbmcgdGhlIGNoYW5nZXMgaW4g dGhlCi0rCSAqIGZvbGxvd2luZyBvcmRlcjoKLSsJICoKLSsJICogMS4gUmVwbGFjZSBleGlzdGlu ZyBwcmVlZGl0IHN0cmluZyB3aXRoIHRoZSBjdXJzb3IuIDIuIERlbGV0ZQotKwkgKiByZXF1ZXN0 ZWQgc3Vycm91bmRpbmcgdGV4dC4gMy4gSW5zZXJ0IGNvbW1pdCBzdHJpbmcgd2l0aCB0aGUKLSsJ ICogY3Vyc29yIGF0IGl0cyBlbmQuIDQuIENhbGN1bGF0ZSBzdXJyb3VuZGluZyB0ZXh0IHRvIHNl bmQuIDUuCi0rCSAqIEluc2VydCBuZXcgcHJlZWRpdCB0ZXh0IGluIGN1cnNvciBwb3NpdGlvbi4g Ni4gUGxhY2UgY3Vyc29yCi0rCSAqIGluc2lkZSBwcmVlZGl0IHRleHQuCi0rCSAqCi0rCSAqIFRo ZSBzZXJpYWwgbnVtYmVyIHJlZmxlY3RzIHRoZSBsYXN0IHN0YXRlIG9mIHRoZQotKwkgKiB6d3Bf dGV4dF9pbnB1dF92MyBvYmplY3Qga25vd24gdG8gdGhlIGNvbXBvc2l0b3IuIFRoZSB2YWx1ZSBv ZgotKwkgKiB0aGUgc2VyaWFsIGFyZ3VtZW50IG11c3QgYmUgZXF1YWwgdG8gdGhlIG51bWJlciBv ZiBjb21taXQKLSsJICogcmVxdWVzdHMgYWxyZWFkeSBpc3N1ZWQgb24gdGhhdCBvYmplY3QuCi0r CSAqCi0rCSAqIFdoZW4gdGhlIGNsaWVudCByZWNlaXZlcyBhIGRvbmUgZXZlbnQgd2l0aCBhIHNl cmlhbCBkaWZmZXJlbnQKLSsJICogdGhhbiB0aGUgbnVtYmVyIG9mIHBhc3QgY29tbWl0IHJlcXVl c3RzLCBpdCBtdXN0IHByb2NlZWQgd2l0aAotKwkgKiBldmFsdWF0aW5nIGFuZCBhcHBseWluZyB0 aGUgY2hhbmdlcyBhcyBub3JtYWwsIGV4Y2VwdCBpdCBzaG91bGQKLSsJICogbm90IGNoYW5nZSB0 aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgendwX3RleHRfaW5wdXRfdjMgb2JqZWN0LgotKwkgKiBB bGwgcGVuZGluZyBzdGF0ZSByZXF1ZXN0cyAoc2V0X3N1cnJvdW5kaW5nX3RleHQsCi0rCSAqIHNl dF9jb250ZW50X3R5cGUgYW5kIHNldF9jdXJzb3JfcmVjdGFuZ2xlKSBvbiB0aGUKLSsJICogendw X3RleHRfaW5wdXRfdjMgb2JqZWN0IHNob3VsZCBiZSBzZW50IGFuZCBjb21taXR0ZWQgYWZ0ZXIK LSsJICogcmVjZWl2aW5nIGEgendwX3RleHRfaW5wdXRfdjMuZG9uZSBldmVudCB3aXRoIGEgbWF0 Y2hpbmcgc2VyaWFsLgotKwkgKi8KLSsJdm9pZCAoKmRvbmUpKHZvaWQgKmRhdGEsCi0rCQkgICAg IHN0cnVjdCB6d3BfdGV4dF9pbnB1dF92MyAqendwX3RleHRfaW5wdXRfdjMsCi0rCQkgICAgIHVp bnQzMl90IHNlcmlhbCk7Ci0rfTsKLSsKLSsvKioKLSsgKiBAaW5ncm91cCBpZmFjZV96d3BfdGV4 dF9pbnB1dF92MwotKyAqLwotK3N0YXRpYyBpbmxpbmUgaW50Ci0rendwX3RleHRfaW5wdXRfdjNf YWRkX2xpc3RlbmVyKHN0cnVjdCB6d3BfdGV4dF9pbnB1dF92MyAqendwX3RleHRfaW5wdXRfdjMs Ci0rCQkJICAgICAgIGNvbnN0IHN0cnVjdCB6d3BfdGV4dF9pbnB1dF92M19saXN0ZW5lciAqbGlz dGVuZXIsIHZvaWQgKmRhdGEpCi0rewotKwlyZXR1cm4gd2xfcHJveHlfYWRkX2xpc3RlbmVyKChz dHJ1Y3Qgd2xfcHJveHkgKikgendwX3RleHRfaW5wdXRfdjMsCi0rCQkJCSAgICAgKHZvaWQgKCoq KSh2b2lkKSkgbGlzdGVuZXIsIGRhdGEpOwotK30KLSsKLSsjZGVmaW5lIFpXUF9URVhUX0lOUFVU X1YzX0RFU1RST1kgMAotKyNkZWZpbmUgWldQX1RFWFRfSU5QVVRfVjNfRU5BQkxFIDEKLSsjZGVm aW5lIFpXUF9URVhUX0lOUFVUX1YzX0RJU0FCTEUgMgotKyNkZWZpbmUgWldQX1RFWFRfSU5QVVRf VjNfU0VUX1NVUlJPVU5ESU5HX1RFWFQgMwotKyNkZWZpbmUgWldQX1RFWFRfSU5QVVRfVjNfU0VU X1RFWFRfQ0hBTkdFX0NBVVNFIDQKLSsjZGVmaW5lIFpXUF9URVhUX0lOUFVUX1YzX1NFVF9DT05U RU5UX1RZUEUgNQotKyNkZWZpbmUgWldQX1RFWFRfSU5QVVRfVjNfU0VUX0NVUlNPUl9SRUNUQU5H TEUgNgotKyNkZWZpbmUgWldQX1RFWFRfSU5QVVRfVjNfQ09NTUlUIDcKLSsKLSsvKioKLSsgKiBA aW5ncm91cCBpZmFjZV96d3BfdGV4dF9pbnB1dF92MwotKyAqLwotKyNkZWZpbmUgWldQX1RFWFRf SU5QVVRfVjNfRU5URVJfU0lOQ0VfVkVSU0lPTiAxCi0rLyoqCi0rICogQGluZ3JvdXAgaWZhY2Vf endwX3RleHRfaW5wdXRfdjMKLSsgKi8KLSsjZGVmaW5lIFpXUF9URVhUX0lOUFVUX1YzX0xFQVZF X1NJTkNFX1ZFUlNJT04gMQotKy8qKgotKyAqIEBpbmdyb3VwIGlmYWNlX3p3cF90ZXh0X2lucHV0 X3YzCi0rICovCi0rI2RlZmluZSBaV1BfVEVYVF9JTlBVVF9WM19QUkVFRElUX1NUUklOR19TSU5D RV9WRVJTSU9OIDEKLSsvKioKLSsgKiBAaW5ncm91cCBpZmFjZV96d3BfdGV4dF9pbnB1dF92Mwot KyAqLwotKyNkZWZpbmUgWldQX1RFWFRfSU5QVVRfVjNfQ09NTUlUX1NUUklOR19TSU5DRV9WRVJT SU9OIDEKLSsvKioKLSsgKiBAaW5ncm91cCBpZmFjZV96d3BfdGV4dF9pbnB1dF92MwotKyAqLwot KyNkZWZpbmUgWldQX1RFWFRfSU5QVVRfVjNfREVMRVRFX1NVUlJPVU5ESU5HX1RFWFRfU0lOQ0Vf VkVSU0lPTiAxCi0rLyoqCi0rICogQGluZ3JvdXAgaWZhY2VfendwX3RleHRfaW5wdXRfdjMKLSsg Ki8KLSsjZGVmaW5lIFpXUF9URVhUX0lOUFVUX1YzX0RPTkVfU0lOQ0VfVkVSU0lPTiAxCi0rCi0r LyoqCi0rICogQGluZ3JvdXAgaWZhY2VfendwX3RleHRfaW5wdXRfdjMKLSsgKi8KLSsjZGVmaW5l IFpXUF9URVhUX0lOUFVUX1YzX0RFU1RST1lfU0lOQ0VfVkVSU0lPTiAxCi0rLyoqCi0rICogQGlu Z3JvdXAgaWZhY2VfendwX3RleHRfaW5wdXRfdjMKLSsgKi8KLSsjZGVmaW5lIFpXUF9URVhUX0lO UFVUX1YzX0VOQUJMRV9TSU5DRV9WRVJTSU9OIDEKLSsvKioKLSsgKiBAaW5ncm91cCBpZmFjZV96 d3BfdGV4dF9pbnB1dF92MwotKyAqLwotKyNkZWZpbmUgWldQX1RFWFRfSU5QVVRfVjNfRElTQUJM RV9TSU5DRV9WRVJTSU9OIDEKLSsvKioKLSsgKiBAaW5ncm91cCBpZmFjZV96d3BfdGV4dF9pbnB1 dF92MwotKyAqLwotKyNkZWZpbmUgWldQX1RFWFRfSU5QVVRfVjNfU0VUX1NVUlJPVU5ESU5HX1RF WFRfU0lOQ0VfVkVSU0lPTiAxCi0rLyoqCi0rICogQGluZ3JvdXAgaWZhY2VfendwX3RleHRfaW5w dXRfdjMKLSsgKi8KLSsjZGVmaW5lIFpXUF9URVhUX0lOUFVUX1YzX1NFVF9URVhUX0NIQU5HRV9D QVVTRV9TSU5DRV9WRVJTSU9OIDEKLSsvKioKLSsgKiBAaW5ncm91cCBpZmFjZV96d3BfdGV4dF9p bnB1dF92MwotKyAqLwotKyNkZWZpbmUgWldQX1RFWFRfSU5QVVRfVjNfU0VUX0NPTlRFTlRfVFlQ RV9TSU5DRV9WRVJTSU9OIDEKLSsvKioKLSsgKiBAaW5ncm91cCBpZmFjZV96d3BfdGV4dF9pbnB1 dF92MwotKyAqLwotKyNkZWZpbmUgWldQX1RFWFRfSU5QVVRfVjNfU0VUX0NVUlNPUl9SRUNUQU5H TEVfU0lOQ0VfVkVSU0lPTiAxCi0rLyoqCi0rICogQGluZ3JvdXAgaWZhY2VfendwX3RleHRfaW5w dXRfdjMKLSsgKi8KLSsjZGVmaW5lIFpXUF9URVhUX0lOUFVUX1YzX0NPTU1JVF9TSU5DRV9WRVJT SU9OIDEKLSsKLSsvKiogQGluZ3JvdXAgaWZhY2VfendwX3RleHRfaW5wdXRfdjMgKi8KLStzdGF0 aWMgaW5saW5lIHZvaWQKLSt6d3BfdGV4dF9pbnB1dF92M19zZXRfdXNlcl9kYXRhKHN0cnVjdCB6 d3BfdGV4dF9pbnB1dF92MyAqendwX3RleHRfaW5wdXRfdjMsIHZvaWQgKnVzZXJfZGF0YSkKLSt7 Ci0rCXdsX3Byb3h5X3NldF91c2VyX2RhdGEoKHN0cnVjdCB3bF9wcm94eSAqKSB6d3BfdGV4dF9p bnB1dF92MywgdXNlcl9kYXRhKTsKLSt9Ci0rCi0rLyoqIEBpbmdyb3VwIGlmYWNlX3p3cF90ZXh0 X2lucHV0X3YzICovCi0rc3RhdGljIGlubGluZSB2b2lkICoKLSt6d3BfdGV4dF9pbnB1dF92M19n ZXRfdXNlcl9kYXRhKHN0cnVjdCB6d3BfdGV4dF9pbnB1dF92MyAqendwX3RleHRfaW5wdXRfdjMp Ci0rewotKwlyZXR1cm4gd2xfcHJveHlfZ2V0X3VzZXJfZGF0YSgoc3RydWN0IHdsX3Byb3h5ICop IHp3cF90ZXh0X2lucHV0X3YzKTsKLSt9Ci0rCi0rc3RhdGljIGlubGluZSB1aW50MzJfdAotK3p3 cF90ZXh0X2lucHV0X3YzX2dldF92ZXJzaW9uKHN0cnVjdCB6d3BfdGV4dF9pbnB1dF92MyAqendw X3RleHRfaW5wdXRfdjMpCi0rewotKwlyZXR1cm4gd2xfcHJveHlfZ2V0X3ZlcnNpb24oKHN0cnVj dCB3bF9wcm94eSAqKSB6d3BfdGV4dF9pbnB1dF92Myk7Ci0rfQotKwotKy8qKgotKyAqIEBpbmdy b3VwIGlmYWNlX3p3cF90ZXh0X2lucHV0X3YzCi0rICoKLSsgKiBEZXN0cm95IHRoZSB3cF90ZXh0 X2lucHV0IG9iamVjdC4gQWxzbyBkaXNhYmxlcyBhbGwgc3VyZmFjZXMgZW5hYmxlZAotKyAqIHRo cm91Z2ggdGhpcyB3cF90ZXh0X2lucHV0IG9iamVjdC4KLSsgKi8KLStzdGF0aWMgaW5saW5lIHZv aWQKLSt6d3BfdGV4dF9pbnB1dF92M19kZXN0cm95KHN0cnVjdCB6d3BfdGV4dF9pbnB1dF92MyAq endwX3RleHRfaW5wdXRfdjMpCi0rewotKwl3bF9wcm94eV9tYXJzaGFsX2ZsYWdzKChzdHJ1Y3Qg d2xfcHJveHkgKikgendwX3RleHRfaW5wdXRfdjMsCi0rCQkJIFpXUF9URVhUX0lOUFVUX1YzX0RF U1RST1ksIE5VTEwsIHdsX3Byb3h5X2dldF92ZXJzaW9uKChzdHJ1Y3Qgd2xfcHJveHkgKikgendw X3RleHRfaW5wdXRfdjMpLCBXTF9NQVJTSEFMX0ZMQUdfREVTVFJPWSk7Ci0rfQotKwotKy8qKgot KyAqIEBpbmdyb3VwIGlmYWNlX3p3cF90ZXh0X2lucHV0X3YzCi0rICoKLSsgKiBSZXF1ZXN0cyB0 ZXh0IGlucHV0IG9uIHRoZSBzdXJmYWNlIHByZXZpb3VzbHkgb2J0YWluZWQgZnJvbSB0aGUgZW50 ZXIKLSsgKiBldmVudC4KLSsgKgotKyAqIFRoaXMgcmVxdWVzdCBtdXN0IGJlIGlzc3VlZCBldmVy eSB0aW1lIHRoZSBmb2N1c2VkIHRleHQgaW5wdXQgY2hhbmdlcwotKyAqIHRvIGEgbmV3IG9uZSwg aW5jbHVkaW5nIHdpdGhpbiB0aGUgY3VycmVudCBzdXJmYWNlLiBVc2UKLSsgKiB6d3BfdGV4dF9p bnB1dF92My5kaXNhYmxlIHdoZW4gdGhlcmUgaXMgbm8gbG9uZ2VyIGFueSBpbnB1dCBmb2N1cyBv bgotKyAqIHRoZSBjdXJyZW50IHN1cmZhY2UuCi0rICoKLSsgKiBDbGllbnRzIG11c3Qgbm90IGVu YWJsZSBtb3JlIHRoYW4gb25lIHRleHQgaW5wdXQgb24gdGhlIHNpbmdsZSBzZWF0Ci0rICogYW5k IHNob3VsZCBkaXNhYmxlIHRoZSBjdXJyZW50IHRleHQgaW5wdXQgYmVmb3JlIGVuYWJsaW5nIHRo ZSBuZXcgb25lLgotKyAqIFJlcXVlc3RzIHRvIGVuYWJsZSBhIHRleHQgaW5wdXQgd2hlbiBhbm90 aGVyIHRleHQgaW5wdXQgaXMgZW5hYmxlZAotKyAqIG9uIHRoZSBzYW1lIHNlYXQgbXVzdCBiZSBp Z25vcmVkIGJ5IGNvbXBvc2l0b3IuCi0rICoKLSsgKiBUaGlzIHJlcXVlc3QgcmVzZXRzIGFsbCBz dGF0ZSBhc3NvY2lhdGVkIHdpdGggcHJldmlvdXMgZW5hYmxlLCBkaXNhYmxlLAotKyAqIHNldF9z dXJyb3VuZGluZ190ZXh0LCBzZXRfdGV4dF9jaGFuZ2VfY2F1c2UsIHNldF9jb250ZW50X3R5cGUs IGFuZAotKyAqIHNldF9jdXJzb3JfcmVjdGFuZ2xlIHJlcXVlc3RzLCBhcyB3ZWxsIGFzIHRoZSBz dGF0ZSBhc3NvY2lhdGVkIHdpdGgKLSsgKiBwcmVlZGl0X3N0cmluZywgY29tbWl0X3N0cmluZywg YW5kIGRlbGV0ZV9zdXJyb3VuZGluZ190ZXh0IGV2ZW50cy4KLSsgKgotKyAqIFRoZSBzZXRfc3Vy cm91bmRpbmdfdGV4dCwgc2V0X2NvbnRlbnRfdHlwZSBhbmQgc2V0X2N1cnNvcl9yZWN0YW5nbGUK LSsgKiByZXF1ZXN0cyBtdXN0IGZvbGxvdyBpZiB0aGUgdGV4dCBpbnB1dCBzdXBwb3J0cyB0aGUg bmVjZXNzYXJ5Ci0rICogZnVuY3Rpb25hbGl0eS4KLSsgKgotKyAqIFN0YXRlIHNldCB3aXRoIHRo aXMgcmVxdWVzdCBpcyBkb3VibGUtYnVmZmVyZWQuIEl0IHdpbGwgZ2V0IGFwcGxpZWQgb24KLSsg KiB0aGUgbmV4dCB6d3BfdGV4dF9pbnB1dF92My5jb21taXQgcmVxdWVzdCwgYW5kIHN0YXkgdmFs aWQgdW50aWwgdGhlCi0rICogbmV4dCBjb21taXR0ZWQgZW5hYmxlIG9yIGRpc2FibGUgcmVxdWVz dC4KLSsgKgotKyAqIFRoZSBjaGFuZ2VzIG11c3QgYmUgYXBwbGllZCBieSB0aGUgY29tcG9zaXRv ciBhZnRlciBpc3N1aW5nIGEKLSsgKiB6d3BfdGV4dF9pbnB1dF92My5jb21taXQgcmVxdWVzdC4K LSsgKi8KLStzdGF0aWMgaW5saW5lIHZvaWQKLSt6d3BfdGV4dF9pbnB1dF92M19lbmFibGUoc3Ry dWN0IHp3cF90ZXh0X2lucHV0X3YzICp6d3BfdGV4dF9pbnB1dF92MykKLSt7Ci0rCXdsX3Byb3h5 X21hcnNoYWxfZmxhZ3MoKHN0cnVjdCB3bF9wcm94eSAqKSB6d3BfdGV4dF9pbnB1dF92MywKLSsJ CQkgWldQX1RFWFRfSU5QVVRfVjNfRU5BQkxFLCBOVUxMLCB3bF9wcm94eV9nZXRfdmVyc2lvbigo c3RydWN0IHdsX3Byb3h5ICopIHp3cF90ZXh0X2lucHV0X3YzKSwgMCk7Ci0rfQotKwotKy8qKgot KyAqIEBpbmdyb3VwIGlmYWNlX3p3cF90ZXh0X2lucHV0X3YzCi0rICoKLSsgKiBFeHBsaWNpdGx5 IGRpc2FibGUgdGV4dCBpbnB1dCBvbiB0aGUgY3VycmVudCBzdXJmYWNlICh0eXBpY2FsbHkgd2hl bgotKyAqIHRoZXJlIGlzIG5vIGZvY3VzIG9uIGFueSB0ZXh0IGVudHJ5IGluc2lkZSB0aGUgc3Vy ZmFjZSkuCi0rICoKLSsgKiBTdGF0ZSBzZXQgd2l0aCB0aGlzIHJlcXVlc3QgaXMgZG91YmxlLWJ1 ZmZlcmVkLiBJdCB3aWxsIGdldCBhcHBsaWVkIG9uCi0rICogdGhlIG5leHQgendwX3RleHRfaW5w dXRfdjMuY29tbWl0IHJlcXVlc3QuCi0rICovCi0rc3RhdGljIGlubGluZSB2b2lkCi0rendwX3Rl eHRfaW5wdXRfdjNfZGlzYWJsZShzdHJ1Y3QgendwX3RleHRfaW5wdXRfdjMgKnp3cF90ZXh0X2lu cHV0X3YzKQotK3sKLSsJd2xfcHJveHlfbWFyc2hhbF9mbGFncygoc3RydWN0IHdsX3Byb3h5ICop IHp3cF90ZXh0X2lucHV0X3YzLAotKwkJCSBaV1BfVEVYVF9JTlBVVF9WM19ESVNBQkxFLCBOVUxM LCB3bF9wcm94eV9nZXRfdmVyc2lvbigoc3RydWN0IHdsX3Byb3h5ICopIHp3cF90ZXh0X2lucHV0 X3YzKSwgMCk7Ci0rfQotKwotKy8qKgotKyAqIEBpbmdyb3VwIGlmYWNlX3p3cF90ZXh0X2lucHV0 X3YzCi0rICoKLSsgKiBTZXRzIHRoZSBzdXJyb3VuZGluZyBwbGFpbiB0ZXh0IGFyb3VuZCB0aGUg aW5wdXQsIGV4Y2x1ZGluZyB0aGUgcHJlZWRpdAotKyAqIHRleHQuCi0rICoKLSsgKiBUaGUgY2xp ZW50IHNob3VsZCBub3RpZnkgdGhlIGNvbXBvc2l0b3Igb2YgYW55IGNoYW5nZXMgaW4gYW55IG9m IHRoZQotKyAqIHZhbHVlcyBjYXJyaWVkIHdpdGggdGhpcyByZXF1ZXN0LCBpbmNsdWRpbmcgY2hh bmdlcyBjYXVzZWQgYnkgaGFuZGxpbmcKLSsgKiBpbmNvbWluZyB0ZXh0LWlucHV0IGV2ZW50cyBh cyB3ZWxsIGFzIGNoYW5nZXMgY2F1c2VkIGJ5IG90aGVyCi0rICogbWVjaGFuaXNtcyBsaWtlIGtl eWJvYXJkIHR5cGluZy4KLSsgKgotKyAqIElmIHRoZSBjbGllbnQgaXMgdW5hd2FyZSBvZiB0aGUg dGV4dCBhcm91bmQgdGhlIGN1cnNvciwgaXQgc2hvdWxkIG5vdAotKyAqIGlzc3VlIHRoaXMgcmVx dWVzdCwgdG8gc2lnbmlmeSBsYWNrIG9mIHN1cHBvcnQgdG8gdGhlIGNvbXBvc2l0b3IuCi0rICoK LSsgKiBUZXh0IGlzIFVURi04IGVuY29kZWQsIGFuZCBzaG91bGQgaW5jbHVkZSB0aGUgY3Vyc29y IHBvc2l0aW9uLCB0aGUKLSsgKiBjb21wbGV0ZSBzZWxlY3Rpb24gYW5kIGFkZGl0aW9uYWwgY2hh cmFjdGVycyBiZWZvcmUgYW5kIGFmdGVyIHRoZW0uCi0rICogVGhlcmUgaXMgYSBtYXhpbXVtIGxl bmd0aCBvZiB3YXlsYW5kIG1lc3NhZ2VzLCBzbyB0ZXh0IGNhbiBub3QgYmUKLSsgKiBsb25nZXIg dGhhbiA0MDAwIGJ5dGVzLgotKyAqCi0rICogQ3Vyc29yIGlzIHRoZSBieXRlIG9mZnNldCBvZiB0 aGUgY3Vyc29yIHdpdGhpbiB0ZXh0IGJ1ZmZlci4KLSsgKgotKyAqIEFuY2hvciBpcyB0aGUgYnl0 ZSBvZmZzZXQgb2YgdGhlIHNlbGVjdGlvbiBhbmNob3Igd2l0aGluIHRleHQgYnVmZmVyLgotKyAq IElmIHRoZXJlIGlzIG5vIHNlbGVjdGVkIHRleHQsIGFuY2hvciBpcyB0aGUgc2FtZSBhcyBjdXJz b3IuCi0rICoKLSsgKiBJZiBhbnkgcHJlZWRpdCB0ZXh0IGlzIHByZXNlbnQsIGl0IGlzIHJlcGxh Y2VkIHdpdGggYSBjdXJzb3IgZm9yIHRoZQotKyAqIHB1cnBvc2Ugb2YgdGhpcyBldmVudC4KLSsg KgotKyAqIFZhbHVlcyBzZXQgd2l0aCB0aGlzIHJlcXVlc3QgYXJlIGRvdWJsZS1idWZmZXJlZC4g VGhleSB3aWxsIGdldCBhcHBsaWVkCi0rICogb24gdGhlIG5leHQgendwX3RleHRfaW5wdXRfdjMu Y29tbWl0IHJlcXVlc3QsIGFuZCBzdGF5IHZhbGlkIHVudGlsIHRoZQotKyAqIG5leHQgY29tbWl0 dGVkIGVuYWJsZSBvciBkaXNhYmxlIHJlcXVlc3QuCi0rICoKLSsgKiBUaGUgaW5pdGlhbCBzdGF0 ZSBmb3IgYWZmZWN0ZWQgZmllbGRzIGlzIGVtcHR5LCBtZWFuaW5nIHRoYXQgdGhlIHRleHQKLSsg KiBpbnB1dCBkb2VzIG5vdCBzdXBwb3J0IHNlbmRpbmcgc3Vycm91bmRpbmcgdGV4dC4gSWYgdGhl IGVtcHR5IHZhbHVlcwotKyAqIGdldCBhcHBsaWVkLCBzdWJzZXF1ZW50IGF0dGVtcHRzIHRvIGNo YW5nZSB0aGVtIG1heSBoYXZlIG5vIGVmZmVjdC4KLSsgKi8KLStzdGF0aWMgaW5saW5lIHZvaWQK LSt6d3BfdGV4dF9pbnB1dF92M19zZXRfc3Vycm91bmRpbmdfdGV4dChzdHJ1Y3QgendwX3RleHRf aW5wdXRfdjMgKnp3cF90ZXh0X2lucHV0X3YzLCBjb25zdCBjaGFyICp0ZXh0LCBpbnQzMl90IGN1 cnNvciwgaW50MzJfdCBhbmNob3IpCi0rewotKwl3bF9wcm94eV9tYXJzaGFsX2ZsYWdzKChzdHJ1 Y3Qgd2xfcHJveHkgKikgendwX3RleHRfaW5wdXRfdjMsCi0rCQkJIFpXUF9URVhUX0lOUFVUX1Yz X1NFVF9TVVJST1VORElOR19URVhULCBOVUxMLCB3bF9wcm94eV9nZXRfdmVyc2lvbigoc3RydWN0 IHdsX3Byb3h5ICopIHp3cF90ZXh0X2lucHV0X3YzKSwgMCwgdGV4dCwgY3Vyc29yLCBhbmNob3Ip OwotK30KLSsKLSsvKioKLSsgKiBAaW5ncm91cCBpZmFjZV96d3BfdGV4dF9pbnB1dF92MwotKyAq Ci0rICogVGVsbHMgdGhlIGNvbXBvc2l0b3Igd2h5IHRoZSB0ZXh0IHN1cnJvdW5kaW5nIHRoZSBj dXJzb3IgY2hhbmdlZC4KLSsgKgotKyAqIFdoZW5ldmVyIHRoZSBjbGllbnQgZGV0ZWN0cyBhbiBl eHRlcm5hbCBjaGFuZ2UgaW4gdGV4dCwgY3Vyc29yLCBvcgotKyAqIGFuY2hvciBwb3Npc2lvbiwg aXQgbXVzdCBpc3N1ZSB0aGlzIHJlcXVlc3QgdG8gdGhlIGNvbXBvc2l0b3IuIFRoaXMKLSsgKiBy ZXF1ZXN0IGlzIGludGVuZGVkIHRvIGdpdmUgdGhlIGlucHV0IG1ldGhvZCBhIGNoYW5jZSB0byB1 cGRhdGUgdGhlCi0rICogcHJlZWRpdCB0ZXh0IGluIGFuIGFwcHJvcHJpYXRlIHdheSwgZS5nLiBi eSByZW1vdmluZyBpdCB3aGVuIHRoZSB1c2VyCi0rICogc3RhcnRzIHR5cGluZyB3aXRoIGEga2V5 Ym9hcmQuCi0rICoKLSsgKiBjYXVzZSBkZXNjcmliZXMgdGhlIHNvdXJjZSBvZiB0aGUgY2hhbmdl LgotKyAqCi0rICogVGhlIHZhbHVlIHNldCB3aXRoIHRoaXMgcmVxdWVzdCBpcyBkb3VibGUtYnVm ZmVyZWQuIEl0IG11c3QgYmUgYXBwbGllZAotKyAqIGFuZCByZXNldCB0byBpbml0aWFsIGF0IHRo ZSBuZXh0IHp3cF90ZXh0X2lucHV0X3YzLmNvbW1pdCByZXF1ZXN0LgotKyAqCi0rICogVGhlIGlu aXRpYWwgdmFsdWUgb2YgY2F1c2UgaXMgaW5wdXRfbWV0aG9kLgotKyAqLwotK3N0YXRpYyBpbmxp bmUgdm9pZAotK3p3cF90ZXh0X2lucHV0X3YzX3NldF90ZXh0X2NoYW5nZV9jYXVzZShzdHJ1Y3Qg endwX3RleHRfaW5wdXRfdjMgKnp3cF90ZXh0X2lucHV0X3YzLCB1aW50MzJfdCBjYXVzZSkKLSt7 Ci0rCXdsX3Byb3h5X21hcnNoYWxfZmxhZ3MoKHN0cnVjdCB3bF9wcm94eSAqKSB6d3BfdGV4dF9p bnB1dF92MywKLSsJCQkgWldQX1RFWFRfSU5QVVRfVjNfU0VUX1RFWFRfQ0hBTkdFX0NBVVNFLCBO VUxMLCB3bF9wcm94eV9nZXRfdmVyc2lvbigoc3RydWN0IHdsX3Byb3h5ICopIHp3cF90ZXh0X2lu cHV0X3YzKSwgMCwgY2F1c2UpOwotK30KLSsKLSsvKioKLSsgKiBAaW5ncm91cCBpZmFjZV96d3Bf dGV4dF9pbnB1dF92MwotKyAqCi0rICogU2V0cyB0aGUgY29udGVudCBwdXJwb3NlIGFuZCBjb250 ZW50IGhpbnQuIFdoaWxlIHRoZSBwdXJwb3NlIGlzIHRoZQotKyAqIGJhc2ljIHB1cnBvc2Ugb2Yg YW4gaW5wdXQgZmllbGQsIHRoZSBoaW50IGZsYWdzIGFsbG93IHRvIG1vZGlmeSBzb21lIG9mCi0r ICogdGhlIGJlaGF2aW9yLgotKyAqCi0rICogVmFsdWVzIHNldCB3aXRoIHRoaXMgcmVxdWVzdCBh cmUgZG91YmxlLWJ1ZmZlcmVkLiBUaGV5IHdpbGwgZ2V0IGFwcGxpZWQKLSsgKiBvbiB0aGUgbmV4 dCB6d3BfdGV4dF9pbnB1dF92My5jb21taXQgcmVxdWVzdC4KLSsgKiBTdWJzZXF1ZW50IGF0dGVt cHRzIHRvIHVwZGF0ZSB0aGVtIG1heSBoYXZlIG5vIGVmZmVjdC4gVGhlIHZhbHVlcwotKyAqIHJl bWFpbiB2YWxpZCB1bnRpbCB0aGUgbmV4dCBjb21taXR0ZWQgZW5hYmxlIG9yIGRpc2FibGUgcmVx dWVzdC4KLSsgKgotKyAqIFRoZSBpbml0aWFsIHZhbHVlIGZvciBoaW50IGlzIG5vbmUsIGFuZCB0 aGUgaW5pdGlhbCB2YWx1ZSBmb3IgcHVycG9zZQotKyAqIGlzIG5vcm1hbC4KLSsgKi8KLStzdGF0 aWMgaW5saW5lIHZvaWQKLSt6d3BfdGV4dF9pbnB1dF92M19zZXRfY29udGVudF90eXBlKHN0cnVj dCB6d3BfdGV4dF9pbnB1dF92MyAqendwX3RleHRfaW5wdXRfdjMsIHVpbnQzMl90IGhpbnQsIHVp bnQzMl90IHB1cnBvc2UpCi0rewotKwl3bF9wcm94eV9tYXJzaGFsX2ZsYWdzKChzdHJ1Y3Qgd2xf cHJveHkgKikgendwX3RleHRfaW5wdXRfdjMsCi0rCQkJIFpXUF9URVhUX0lOUFVUX1YzX1NFVF9D T05URU5UX1RZUEUsIE5VTEwsIHdsX3Byb3h5X2dldF92ZXJzaW9uKChzdHJ1Y3Qgd2xfcHJveHkg KikgendwX3RleHRfaW5wdXRfdjMpLCAwLCBoaW50LCBwdXJwb3NlKTsKLSt9Ci0rCi0rLyoqCi0r ICogQGluZ3JvdXAgaWZhY2VfendwX3RleHRfaW5wdXRfdjMKLSsgKgotKyAqIE1hcmtzIGFuIGFy ZWEgYXJvdW5kIHRoZSBjdXJzb3IgYXMgYSB4LCB5LCB3aWR0aCwgaGVpZ2h0IHJlY3RhbmdsZSBp bgotKyAqIHN1cmZhY2UgbG9jYWwgY29vcmRpbmF0ZXMuCi0rICoKLSsgKiBBbGxvd3MgdGhlIGNv bXBvc2l0b3IgdG8gcHV0IGEgd2luZG93IHdpdGggd29yZCBzdWdnZXN0aW9ucyBuZWFyIHRoZQot KyAqIGN1cnNvciwgd2l0aG91dCBvYnN0cnVjdGluZyB0aGUgdGV4dCBiZWluZyBpbnB1dC4KLSsg KgotKyAqIElmIHRoZSBjbGllbnQgaXMgdW5hd2FyZSBvZiB0aGUgcG9zaXRpb24gb2YgZWRpdGVk IHRleHQsIGl0IHNob3VsZCBub3QKLSsgKiBpc3N1ZSB0aGlzIHJlcXVlc3QsIHRvIHNpZ25pZnkg bGFjayBvZiBzdXBwb3J0IHRvIHRoZSBjb21wb3NpdG9yLgotKyAqCi0rICogVmFsdWVzIHNldCB3 aXRoIHRoaXMgcmVxdWVzdCBhcmUgZG91YmxlLWJ1ZmZlcmVkLiBUaGV5IHdpbGwgZ2V0IGFwcGxp ZWQKLSsgKiBvbiB0aGUgbmV4dCB6d3BfdGV4dF9pbnB1dF92My5jb21taXQgcmVxdWVzdCwgYW5k IHN0YXkgdmFsaWQgdW50aWwgdGhlCi0rICogbmV4dCBjb21taXR0ZWQgZW5hYmxlIG9yIGRpc2Fi bGUgcmVxdWVzdC4KLSsgKgotKyAqIFRoZSBpbml0aWFsIHZhbHVlcyBkZXNjcmliaW5nIGEgY3Vy c29yIHJlY3RhbmdsZSBhcmUgZW1wdHkuIFRoYXQgbWVhbnMKLSsgKiB0aGUgdGV4dCBpbnB1dCBk b2VzIG5vdCBzdXBwb3J0IGRlc2NyaWJpbmcgdGhlIGN1cnNvciBhcmVhLiBJZiB0aGUKLSsgKiBl bXB0eSB2YWx1ZXMgZ2V0IGFwcGxpZWQsIHN1YnNlcXVlbnQgYXR0ZW1wdHMgdG8gY2hhbmdlIHRo ZW0gbWF5IGhhdmUKLSsgKiBubyBlZmZlY3QuCi0rICovCi0rc3RhdGljIGlubGluZSB2b2lkCi0r endwX3RleHRfaW5wdXRfdjNfc2V0X2N1cnNvcl9yZWN0YW5nbGUoc3RydWN0IHp3cF90ZXh0X2lu cHV0X3YzICp6d3BfdGV4dF9pbnB1dF92MywgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qg d2lkdGgsIGludDMyX3QgaGVpZ2h0KQotK3sKLSsJd2xfcHJveHlfbWFyc2hhbF9mbGFncygoc3Ry dWN0IHdsX3Byb3h5ICopIHp3cF90ZXh0X2lucHV0X3YzLAotKwkJCSBaV1BfVEVYVF9JTlBVVF9W M19TRVRfQ1VSU09SX1JFQ1RBTkdMRSwgTlVMTCwgd2xfcHJveHlfZ2V0X3ZlcnNpb24oKHN0cnVj dCB3bF9wcm94eSAqKSB6d3BfdGV4dF9pbnB1dF92MyksIDAsIHgsIHksIHdpZHRoLCBoZWlnaHQp OwotK30KLSsKLSsvKioKLSsgKiBAaW5ncm91cCBpZmFjZV96d3BfdGV4dF9pbnB1dF92MwotKyAq Ci0rICogQXRvbWljYWxseSBhcHBsaWVzIHN0YXRlIGNoYW5nZXMgcmVjZW50bHkgc2VudCB0byB0 aGUgY29tcG9zaXRvci4KLSsgKgotKyAqIFRoZSBjb21taXQgcmVxdWVzdCBlc3RhYmxpc2hlcyBh bmQgdXBkYXRlcyB0aGUgc3RhdGUgb2YgdGhlIGNsaWVudCwgYW5kCi0rICogbXVzdCBiZSBpc3N1 ZWQgYWZ0ZXIgYW55IGNoYW5nZXMgdG8gYXBwbHkgdGhlbS4KLSsgKgotKyAqIFRleHQgaW5wdXQg c3RhdGUgKGVuYWJsZWQgc3RhdHVzLCBjb250ZW50IHB1cnBvc2UsIGNvbnRlbnQgaGludCwKLSsg KiBzdXJyb3VuZGluZyB0ZXh0IGFuZCBjaGFuZ2UgY2F1c2UsIGN1cnNvciByZWN0YW5nbGUpIGlz IGNvbmNlcHR1YWxseQotKyAqIGRvdWJsZS1idWZmZXJlZCB3aXRoaW4gdGhlIGNvbnRleHQgb2Yg YSB0ZXh0IGlucHV0LCBpLmUuIGJldHdlZW4gYQotKyAqIGNvbW1pdHRlZCBlbmFibGUgcmVxdWVz dCBhbmQgdGhlIGZvbGxvd2luZyBjb21taXR0ZWQgZW5hYmxlIG9yIGRpc2FibGUKLSsgKiByZXF1 ZXN0LgotKyAqCi0rICogUHJvdG9jb2wgcmVxdWVzdHMgbW9kaWZ5IHRoZSBwZW5kaW5nIHN0YXRl LCBhcyBvcHBvc2VkIHRvIHRoZSBjdXJyZW50Ci0rICogc3RhdGUgaW4gdXNlIGJ5IHRoZSBpbnB1 dCBtZXRob2QuIEEgY29tbWl0IHJlcXVlc3QgYXRvbWljYWxseSBhcHBsaWVzCi0rICogYWxsIHBl bmRpbmcgc3RhdGUsIHJlcGxhY2luZyB0aGUgY3VycmVudCBzdGF0ZS4gQWZ0ZXIgY29tbWl0LCB0 aGUgbmV3Ci0rICogcGVuZGluZyBzdGF0ZSBpcyBhcyBkb2N1bWVudGVkIGZvciBlYWNoIHJlbGF0 ZWQgcmVxdWVzdC4KLSsgKgotKyAqIFJlcXVlc3RzIGFyZSBhcHBsaWVkIGluIHRoZSBvcmRlciBv ZiBhcnJpdmFsLgotKyAqCi0rICogTmVpdGhlciBjdXJyZW50IG5vciBwZW5kaW5nIHN0YXRlIGFy ZSBtb2RpZmllZCB1bmxlc3Mgbm90ZWQgb3RoZXJ3aXNlLgotKyAqCi0rICogVGhlIGNvbXBvc2l0 b3IgbXVzdCBjb3VudCB0aGUgbnVtYmVyIG9mIGNvbW1pdCByZXF1ZXN0cyBjb21pbmcgZnJvbQot KyAqIGVhY2ggendwX3RleHRfaW5wdXRfdjMgb2JqZWN0IGFuZCB1c2UgdGhlIGNvdW50IGFzIHRo ZSBzZXJpYWwgaW4gZG9uZQotKyAqIGV2ZW50cy4KLSsgKi8KLStzdGF0aWMgaW5saW5lIHZvaWQK LSt6d3BfdGV4dF9pbnB1dF92M19jb21taXQoc3RydWN0IHp3cF90ZXh0X2lucHV0X3YzICp6d3Bf dGV4dF9pbnB1dF92MykKLSt7Ci0rCXdsX3Byb3h5X21hcnNoYWxfZmxhZ3MoKHN0cnVjdCB3bF9w cm94eSAqKSB6d3BfdGV4dF9pbnB1dF92MywKLSsJCQkgWldQX1RFWFRfSU5QVVRfVjNfQ09NTUlU LCBOVUxMLCB3bF9wcm94eV9nZXRfdmVyc2lvbigoc3RydWN0IHdsX3Byb3h5ICopIHp3cF90ZXh0 X2lucHV0X3YzKSwgMCk7Ci0rfQotKwotKyNkZWZpbmUgWldQX1RFWFRfSU5QVVRfTUFOQUdFUl9W M19ERVNUUk9ZIDAKLSsjZGVmaW5lIFpXUF9URVhUX0lOUFVUX01BTkFHRVJfVjNfR0VUX1RFWFRf SU5QVVQgMQotKwotKwotKy8qKgotKyAqIEBpbmdyb3VwIGlmYWNlX3p3cF90ZXh0X2lucHV0X21h bmFnZXJfdjMKLSsgKi8KLSsjZGVmaW5lIFpXUF9URVhUX0lOUFVUX01BTkFHRVJfVjNfREVTVFJP WV9TSU5DRV9WRVJTSU9OIDEKLSsvKioKLSsgKiBAaW5ncm91cCBpZmFjZV96d3BfdGV4dF9pbnB1 dF9tYW5hZ2VyX3YzCi0rICovCi0rI2RlZmluZSBaV1BfVEVYVF9JTlBVVF9NQU5BR0VSX1YzX0dF VF9URVhUX0lOUFVUX1NJTkNFX1ZFUlNJT04gMQotKwotKy8qKiBAaW5ncm91cCBpZmFjZV96d3Bf dGV4dF9pbnB1dF9tYW5hZ2VyX3YzICovCi0rc3RhdGljIGlubGluZSB2b2lkCi0rendwX3RleHRf aW5wdXRfbWFuYWdlcl92M19zZXRfdXNlcl9kYXRhKHN0cnVjdCB6d3BfdGV4dF9pbnB1dF9tYW5h Z2VyX3YzICp6d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YzLCB2b2lkICp1c2VyX2RhdGEpCi0rewot Kwl3bF9wcm94eV9zZXRfdXNlcl9kYXRhKChzdHJ1Y3Qgd2xfcHJveHkgKikgendwX3RleHRfaW5w dXRfbWFuYWdlcl92MywgdXNlcl9kYXRhKTsKLSt9Ci0rCi0rLyoqIEBpbmdyb3VwIGlmYWNlX3p3 cF90ZXh0X2lucHV0X21hbmFnZXJfdjMgKi8KLStzdGF0aWMgaW5saW5lIHZvaWQgKgotK3p3cF90 ZXh0X2lucHV0X21hbmFnZXJfdjNfZ2V0X3VzZXJfZGF0YShzdHJ1Y3QgendwX3RleHRfaW5wdXRf bWFuYWdlcl92MyAqendwX3RleHRfaW5wdXRfbWFuYWdlcl92MykKLSt7Ci0rCXJldHVybiB3bF9w cm94eV9nZXRfdXNlcl9kYXRhKChzdHJ1Y3Qgd2xfcHJveHkgKikgendwX3RleHRfaW5wdXRfbWFu YWdlcl92Myk7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgdWludDMyX3QKLSt6d3BfdGV4dF9pbnB1 dF9tYW5hZ2VyX3YzX2dldF92ZXJzaW9uKHN0cnVjdCB6d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3Yz ICp6d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YzKQotK3sKLSsJcmV0dXJuIHdsX3Byb3h5X2dldF92 ZXJzaW9uKChzdHJ1Y3Qgd2xfcHJveHkgKikgendwX3RleHRfaW5wdXRfbWFuYWdlcl92Myk7Ci0r fQotKwotKy8qKgotKyAqIEBpbmdyb3VwIGlmYWNlX3p3cF90ZXh0X2lucHV0X21hbmFnZXJfdjMK LSsgKgotKyAqIERlc3Ryb3kgdGhlIHdwX3RleHRfaW5wdXRfbWFuYWdlciBvYmplY3QuCi0rICov Ci0rc3RhdGljIGlubGluZSB2b2lkCi0rendwX3RleHRfaW5wdXRfbWFuYWdlcl92M19kZXN0cm95 KHN0cnVjdCB6d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YzICp6d3BfdGV4dF9pbnB1dF9tYW5hZ2Vy X3YzKQotK3sKLSsJd2xfcHJveHlfbWFyc2hhbF9mbGFncygoc3RydWN0IHdsX3Byb3h5ICopIHp3 cF90ZXh0X2lucHV0X21hbmFnZXJfdjMsCi0rCQkJIFpXUF9URVhUX0lOUFVUX01BTkFHRVJfVjNf REVTVFJPWSwgTlVMTCwgd2xfcHJveHlfZ2V0X3ZlcnNpb24oKHN0cnVjdCB3bF9wcm94eSAqKSB6 d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YzKSwgV0xfTUFSU0hBTF9GTEFHX0RFU1RST1kpOwotK30K LSsKLSsvKioKLSsgKiBAaW5ncm91cCBpZmFjZV96d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YzCi0r ICoKLSsgKiBDcmVhdGVzIGEgbmV3IHRleHQtaW5wdXQgb2JqZWN0IGZvciBhIGdpdmVuIHNlYXQu Ci0rICovCi0rc3RhdGljIGlubGluZSBzdHJ1Y3QgendwX3RleHRfaW5wdXRfdjMgKgotK3p3cF90 ZXh0X2lucHV0X21hbmFnZXJfdjNfZ2V0X3RleHRfaW5wdXQoc3RydWN0IHp3cF90ZXh0X2lucHV0 X21hbmFnZXJfdjMgKnp3cF90ZXh0X2lucHV0X21hbmFnZXJfdjMsIHN0cnVjdCB3bF9zZWF0ICpz ZWF0KQotK3sKLSsJc3RydWN0IHdsX3Byb3h5ICppZDsKLSsKLSsJaWQgPSB3bF9wcm94eV9tYXJz aGFsX2ZsYWdzKChzdHJ1Y3Qgd2xfcHJveHkgKikgendwX3RleHRfaW5wdXRfbWFuYWdlcl92MywK LSsJCQkgWldQX1RFWFRfSU5QVVRfTUFOQUdFUl9WM19HRVRfVEVYVF9JTlBVVCwgJnp3cF90ZXh0 X2lucHV0X3YzX2ludGVyZmFjZSwgd2xfcHJveHlfZ2V0X3ZlcnNpb24oKHN0cnVjdCB3bF9wcm94 eSAqKSB6d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YzKSwgMCwgTlVMTCwgc2VhdCk7Ci0rCi0rCXJl dHVybiAoc3RydWN0IHp3cF90ZXh0X2lucHV0X3YzICopIGlkOwotK30KLSsKLSsjaWZkZWYgIF9f Y3BsdXNwbHVzCi0rfQotKyNlbmRpZgotKwotKyNlbmRpZgotLS0gCi0yLjUyLjAKLQotRnJvbSBi MGNlYzA5NzQ0ODhkOWU5OGUxNmI5YzQwODYxMDYyYTMxZmUwNTcxIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQotRnJvbTogZnVqaXdhcmF0IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotRGF0 ZTogVGh1LCA1IEZlYiAyMDI2IDIwOjU3OjA2ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8zXSBz cmMvaWJ1c3R5cGVzOiBVcGRhdGUgSUJ1c0lucHV0UHVycG9zZSBhbmQgSUJ1c0lucHV0SGludHMK LQotQWRkIElCVVNfSU5QVVRfUFVSUE9TRV9EQVRFLCBJQlVTX0lOUFVUX1BVUlBPU0VfVElNRSwK LUlCVVNfSU5QVVRfUFVSUE9TRV9EQVRFVElNRSB0byBJQnVzSW5wdXRQdXJwb3NlIGFuZAotYWRk IElCVVNfSU5QVVRfSElOVF9MQVRJTiwgSUJVU19JTlBVVF9ISU5UX01VTFRJTElORSB0byBJQnVz SW5wdXRIaW50cwotdG8gc3VwcG9ydCB0aGUgV2F5bGFuZCB0ZXh0LWlucHV0IHByb3RvY29sIFYx LCBWMy4KLQotQlVHPWh0dHBzOi8vZ2l0aHViLmNvbS9pYnVzL2lidXMvcHVsbC8yODUzCi0tLS0K LSBzcmMvaWJ1c3R5cGVzLmggfCAyMSArKysrKysrKysrKysrKysrKystLS0KLSAxIGZpbGUgY2hh bmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Ny Yy9pYnVzdHlwZXMuaCBiL3NyYy9pYnVzdHlwZXMuaAotaW5kZXggMTgzNjA5NmIuLjE2YTViYzA1 IDEwMDY0NAotLS0tIGEvc3JjL2lidXN0eXBlcy5oCi0rKysgYi9zcmMvaWJ1c3R5cGVzLmgKLUBA IC0yLDcgKzIsNyBAQAotIC8qIHZpbTpzZXQgZXQgc3RzPTQ6ICovCi0gLyogaWJ1cyAtIFRoZSBJ bnB1dCBCdXMKLSAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMyBQZW5nIEh1YW5nIDxzaGF3bi5w Lmh1YW5nQGdtYWlsLmNvbT4KLS0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyNSBUYWthbyBGdWpp d2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTAt MjAyNiBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSAgKiBDb3B5 cmlnaHQgKEMpIDIwMDgtMjAyNSBSZWQgSGF0LCBJbmMuCi0gICoKLSAgKiBUaGlzIGxpYnJhcnkg aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi1AQCAtMjc0 LDYgKzI3NCwxMiBAQCB0eXBlZGVmIHZvaWQgKCogSUJ1c0ZyZWVGdW5jKSAoZ3BvaW50ZXIgb2Jq ZWN0KTsKLSAgKiAgICAgY2hhcmFjdGVycyBhcmUgaGlkZGVuCi0gICogQElCVVNfSU5QVVRfUFVS UE9TRV9URVJNSU5BTDogQWxsb3cgYW55IGNoYXJhY3RlciwgaW4gYWRkaXRpb24gdG8gY29udHJv bAotICAqICAgICBjb2Rlcy4gU2luY2UgMS41LjI0Ci0rICogQElCVVNfSU5QVVRfUFVSUE9TRV9E QVRFOiBJbnB1dCBhIGRhdGUgZm9yIHRoZSBXYXlsYW5kIHRleHQtaW5wdXQgcHJvdG9jb2wKLSsg KiAgICAgVjEvVjMuIFNpbmNlIDEuNS4zNAotKyAqIEBJQlVTX0lOUFVUX1BVUlBPU0VfVElNRTog SW5wdXQgYSB0aW1lIGZvciB0aGUgV2F5bGFuZCB0ZXh0LWlucHV0IHByb3RvY29sCi0rICogICAg IFYxL1YzLiBTaW5jZSAxLjUuMzQKLSsgKiBASUJVU19JTlBVVF9QVVJQT1NFX0RBVEVUSU1FOiBJ bnB1dCBhIGRhdGUgYW5kIHRpbWUgZm9yIHRoZSBXYXlsYW5kCi0rICogICAgIHRleHQtaW5wdXQg cHJvdG9jb2wgVjEvVjMuIFNpbmNlIDEuNS4zNAotICAqCi0gICogRGVzY3JpYmVzIHByaW1hcnkg cHVycG9zZSBvZiB0aGUgaW5wdXQgY29udGV4dC4gIFRoaXMgaW5mb3JtYXRpb24KLSAgKiBpcyBw YXJ0aWN1bGFybHkgdXNlZnVsIHRvIGltcGxlbWVudCBpbnRlbGxpZ2VudCBiZWhhdmlvciBpbgot QEAgLTMwOCw3ICszMTQsMTAgQEAgdHlwZWRlZiBlbnVtCi0gICAgIElCVVNfSU5QVVRfUFVSUE9T RV9OQU1FLAotICAgICBJQlVTX0lOUFVUX1BVUlBPU0VfUEFTU1dPUkQsCi0gICAgIElCVVNfSU5Q VVRfUFVSUE9TRV9QSU4sCi0tICAgIElCVVNfSU5QVVRfUFVSUE9TRV9URVJNSU5BTAotKyAgICBJ QlVTX0lOUFVUX1BVUlBPU0VfVEVSTUlOQUwsCi0rICAgIElCVVNfSU5QVVRfUFVSUE9TRV9EQVRF LAotKyAgICBJQlVTX0lOUFVUX1BVUlBPU0VfVElNRSwKLSsgICAgSUJVU19JTlBVVF9QVVJQT1NF X0RBVEVUSU1FCi0gfSBJQnVzSW5wdXRQdXJwb3NlOwotIAotIC8qKgotQEAgLTMzMiw2ICszNDEs MTAgQEAgdHlwZWRlZiBlbnVtCi0gICogICAgIHVwZGF0ZSBwZXJzb25hbGl6ZWQgZGF0YSAobGlr ZSB0eXBpbmcgaGlzdG9yeSkuIFNpbmNlIDEuNS4yNgotICAqIEBJQlVTX0lOUFVUX0hJTlRfSElE REVOX1RFWFQ6IFRoZSB0ZXh0IGlzIGhpZGRlbiAoZS5nLiBwYXNzd29yZCBmaWVsZHMpLgotICAq ICAgICBTaW5jZSAxLjUuMzQKLSsgKiBASUJVU19JTlBVVF9ISU5UX0xBVElOOiBKdXN0IGxhdGlu IGNoYXJhY3RlcnMgc2hvdWxkIGJlIGVudGVyZWQgZm9yIHRoZQotKyAqICAgICB0ZXh0LWlucHV0 IHByb3RvY29sIFYxL1YzLiBTaW5jZSAxLjUuMzQKLSsgKiBASUJVU19JTlBVVF9ISU5UX01VTFRJ TElORTogU3VnZ2VzdCB0aGUgdGV4dCBpbnB1dCBpcyBtdWx0aWxpbmUgZm9yIHRoZQotKyAqICAg ICB0ZXh0LWlucHV0IHByb3RvY29sIFYxL1YzLiBTaW5jZSAxLjUuMzQKLSAgKgotICAqIERlc2Ny aWJlcyBoaW50cyB0aGF0IG1pZ2h0IGJlIHRha2VuIGludG8gYWNjb3VudCBieSBlbmdpbmVzLiAg Tm90ZQotICAqIHRoYXQgZW5naW5lcyBtYXkgYWxyZWFkeSB0YWlsb3IgdGhlaXIgYmVoYXZpb3Vy IGFjY29yZGluZyB0byB0aGUKLUBAIC0zNjAsNyArMzczLDkgQEAgdHlwZWRlZiBlbnVtCi0gICAg IElCVVNfSU5QVVRfSElOVF9FTU9KSSAgICAgICAgICAgICAgID0gMSA8PCA5LAotICAgICBJQlVT X0lOUFVUX0hJTlRfTk9fRU1PSkkgICAgICAgICAgICA9IDEgPDwgMTAsCi0gICAgIElCVVNfSU5Q VVRfSElOVF9QUklWQVRFICAgICAgICAgICAgID0gMSA8PCAxMSwKLS0gICAgSUJVU19JTlBVVF9I SU5UX0hJRERFTl9URVhUICAgICAgICAgPSAxIDw8IDEyCi0rICAgIElCVVNfSU5QVVRfSElOVF9I SURERU5fVEVYVCAgICAgICAgID0gMSA8PCAxMiwKLSsgICAgSUJVU19JTlBVVF9ISU5UX0xBVElO ICAgICAgICAgICAgICAgPSAxIDw8IDEzLAotKyAgICBJQlVTX0lOUFVUX0hJTlRfTVVMVElMSU5F ICAgICAgICAgICA9IDEgPDwgMTQKLSB9IElCdXNJbnB1dEhpbnRzOwotIAotIC8qKgotLS0gCi0y LjUyLjAKLQotRnJvbSA3YjAxNGI1ODcyNTk1MzFjMjc5Mzc3OGM3MzExMWUwZTYxYjZjMTU3IE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZnVqaXdhcmF0IDx0YWthby5mdWppd2FyYTFA Z21haWwuY29tPgotRGF0ZTogVGh1LCA1IEZlYiAyMDI2IDIxOjEyOjM3ICswOTAwCi1TdWJqZWN0 OiBbUEFUQ0ggMy8zXSBjbGllbnQvd2F5bGFuZDogU3VwcG9ydCBpbnB1dCBwdXJwb3NlIGFuZCBo aW50cwotCi1CVUc9aHR0cHM6Ly9naXRodWIuY29tL2lidXMvaWJ1cy9wdWxsLzI4NTMKLS0tLQot IGNsaWVudC93YXlsYW5kL01ha2VmaWxlLmFtICAgICB8ICAgNiArLQotIGNsaWVudC93YXlsYW5k L2lidXN3YXlsYW5kaW0uYyB8IDE5MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0K LSAyIGZpbGVzIGNoYW5nZWQsIDE5MyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1k aWZmIC0tZ2l0IGEvY2xpZW50L3dheWxhbmQvTWFrZWZpbGUuYW0gYi9jbGllbnQvd2F5bGFuZC9N YWtlZmlsZS5hbQotaW5kZXggNTI5MTQ4MDMuLjI1MjY5NTU3IDEwMDY0NAotLS0tIGEvY2xpZW50 L3dheWxhbmQvTWFrZWZpbGUuYW0KLSsrKyBiL2NsaWVudC93YXlsYW5kL01ha2VmaWxlLmFtCi1A QCAtMyw3ICszLDcgQEAKLSAjIGlidXMgLSBUaGUgSW5wdXQgQnVzCi0gIwotICMgQ29weXJpZ2h0 IChjKSAyMDA3LTIwMTMgUGVuZyBIdWFuZyA8c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+Ci0tIyBD b3B5cmlnaHQgKGMpIDIwMTktMjAyNSBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdt YWlsLmNvbT4KLSsjIENvcHlyaWdodCAoYykgMjAxOS0yMDI2IFRha2FvIEZ1aml3YXJhIDx0YWth by5mdWppd2FyYTFAZ21haWwuY29tPgotICMgQ29weXJpZ2h0IChjKSAyMDA3LTIwMTkgUmVkIEhh dCwgSW5jLgotICMKLSAjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci1AQCAtMzQsNiArMzQsNyBAQCBwcm90b2NvbF9z b3VyY2VzID0gXAotICAgICBpbnB1dC1tZXRob2QtdW5zdGFibGUtdjItY2xpZW50LXByb3RvY29s LmggXAotICAgICBpbnB1dC1tZXRob2QtdW5zdGFibGUtdjItcHJvdG9jb2wuYyBcCi0gICAgIHRl eHQtaW5wdXQtdW5zdGFibGUtdjEtY2xpZW50LXByb3RvY29sLmggXAotKyAgICB0ZXh0LWlucHV0 LXVuc3RhYmxlLXYzLWNsaWVudC1wcm90b2NvbC5oIFwKLSAgICAgdmlydHVhbC1rZXlib2FyZC11 bnN0YWJsZS12MS1jbGllbnQtcHJvdG9jb2wuaCBcCi0gICAgIHZpcnR1YWwta2V5Ym9hcmQtdW5z dGFibGUtdjEtcHJvdG9jb2wuYyBcCi0gICAgICQoTlVMTCkKLUBAIC05NSw2ICs5Niw5IEBAIGlu cHV0LW1ldGhvZC11bnN0YWJsZS12Mi1wcm90b2NvbC5jOiAkKHNyY2RpcikvaW5wdXQtbWV0aG9k LXVuc3RhYmxlLXYyLnhtbAotIHRleHQtaW5wdXQtdW5zdGFibGUtdjEtY2xpZW50LXByb3RvY29s Lmg6ICQod2F5bGFuZF90ZXh0X3Byb3RvY29sZGlyKS90ZXh0LWlucHV0LXVuc3RhYmxlLXYxLnht bAotIAkkKEFNX1ZfR0VOKSQod2F5bGFuZF9zY2FubmVyKSBjbGllbnQtaGVhZGVyICQ8ICRACi0g Ci0rdGV4dC1pbnB1dC11bnN0YWJsZS12My1jbGllbnQtcHJvdG9jb2wuaDogJCh3YXlsYW5kX3Rl eHRfcHJvdG9jb2xkaXIpL3RleHQtaW5wdXQtdW5zdGFibGUtdjMueG1sCi0rCSQoQU1fVl9HRU4p JCh3YXlsYW5kX3NjYW5uZXIpIGNsaWVudC1oZWFkZXIgJDwgJEAKLSsKLSB2aXJ0dWFsLWtleWJv YXJkLXVuc3RhYmxlLXYxLWNsaWVudC1wcm90b2NvbC5oOiAkKHNyY2RpcikvdmlydHVhbC1rZXli b2FyZC11bnN0YWJsZS12MS54bWwKLSAJJChBTV9WX0dFTikkKHdheWxhbmRfc2Nhbm5lcikgY2xp ZW50LWhlYWRlciAkPCAkQAotIAotZGlmZiAtLWdpdCBhL2NsaWVudC93YXlsYW5kL2lidXN3YXls YW5kaW0uYyBiL2NsaWVudC93YXlsYW5kL2lidXN3YXlsYW5kaW0uYwotaW5kZXggYTJjOTEzMjEu LjQ5NTkxOGUyIDEwMDY0NAotLS0tIGEvY2xpZW50L3dheWxhbmQvaWJ1c3dheWxhbmRpbS5jCi0r KysgYi9jbGllbnQvd2F5bGFuZC9pYnVzd2F5bGFuZGltLmMKLUBAIC0xLDcgKzEsNyBAQAotIC8q IC0qLSBtb2RlOiBDOyBjLWJhc2ljLW9mZnNldDogNDsgaW5kZW50LXRhYnMtbW9kZTogbmlsOyAt Ki0gKi8KLSAvKiB2aW06c2V0IGV0IHN0cz00OiAqLwotIC8qIGlidXMgLSBUaGUgSW5wdXQgQnVz Ci0tICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3 YXJhMUBnbWFpbC5jb20+Ci0rICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgVGFrYW8gRnVqaXdh cmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0gICogQ29weXJpZ2h0IChDKSAyMDEzIElu dGVsIENvcnBvcmF0aW9uCi0gICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjUgUmVkIEhhdCwgSW5j LgotICAqCi1AQCAtMzUsNiArMzUsNyBAQAotICNpbmNsdWRlICJpbnB1dC1tZXRob2QtdW5zdGFi bGUtdjEtY2xpZW50LXByb3RvY29sLmgiCi0gI2luY2x1ZGUgImlucHV0LW1ldGhvZC11bnN0YWJs ZS12Mi1jbGllbnQtcHJvdG9jb2wuaCIKLSAjaW5jbHVkZSAidGV4dC1pbnB1dC11bnN0YWJsZS12 MS1jbGllbnQtcHJvdG9jb2wuaCIKLSsjaW5jbHVkZSAidGV4dC1pbnB1dC11bnN0YWJsZS12My1j bGllbnQtcHJvdG9jb2wuaCIKLSAjaW5jbHVkZSAidmlydHVhbC1rZXlib2FyZC11bnN0YWJsZS12 MS1jbGllbnQtcHJvdG9jb2wuaCIKLSAjaW5jbHVkZSAiaWJ1c3dheWxhbmRpbS5oIgotIAotQEAg LTEyNCw2ICsxMjUsOCBAQCBzdHJ1Y3QgX0lCdXNXYXlsYW5kSU1Qcml2YXRlCi0gICAgIGd1aW50 IHByZWVkaXRfbW9kZTsKLSAgICAgSUJ1c01vZGlmaWVyVHlwZSBtb2RpZmllcnM7Ci0gICAgIGdi b29sZWFuIGhpZGluZ19wcmVlZGl0X3RleHQ7Ci0rICAgIElCdXNJbnB1dEhpbnRzIGlidXNfaGlu dHM7Ci0rICAgIElCdXNJbnB1dFB1cnBvc2UgaWJ1c19wdXJwb3NlOwotIAotICNpZiBFTkFCTEVf U1VSUk9VTkRJTkcKLSAgICAgSUJ1c1RleHQgKnN1cnJvdW5kaW5nX3RleHQ7Ci1AQCAtODM0LDkg KzgzNyw5OCBAQCBjb250ZXh0X3Jlc2V0X3YxICh2b2lkICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICpkYXRhLAotIHN0YXRpYyB2b2lkCi0gY29udGV4dF9jb250ZW50X3R5cGVfdjEgKHZv aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmRhdGEsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCB6d3BfaW5wdXRfbWV0aG9kX2NvbnRleHRfdjEgKmNvbnRleHRfdjEs Ci0tICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGhpbnQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGhpbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 MzJfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXJwb3NlKQotIHsKLSsgICAgSUJ1c1dh eWxhbmRJTSAqd2xpbSA9IGRhdGE7Ci0rICAgIElCdXNXYXlsYW5kSU1Qcml2YXRlICpwcml2Owot KyAgICBJQnVzSW5wdXRIaW50cyBpYnVzX2hpbnRzID0gSUJVU19JTlBVVF9ISU5UX05PTkU7Ci0r ICAgIElCdXNJbnB1dFB1cnBvc2UgaWJ1c19wdXJwb3NlID0gSUJVU19JTlBVVF9QVVJQT1NFX0ZS RUVfRk9STTsKLSsKLSsgICAgZ19yZXR1cm5faWZfZmFpbCAoSUJVU19JU19XQVlMQU5EX0lNICh3 bGltKSk7Ci0rICAgIHByaXYgPSBpYnVzX3dheWxhbmRfaW1fZ2V0X2luc3RhbmNlX3ByaXZhdGUg KHdsaW0pOwotKwotKyAgICAvKiBaV1BfVEVYVF9JTlBVVF9WMV9DT05URU5UX0hJTlRfUEFTU1dP UkQgPT0gSElEREVOX1RFWFQgJiBTRU5TSVRJVkVfREFUQQotKyAgICAgKiBaV1BfVEVYVF9JTlBV VF9WMV9DT05URU5UX0hJTlRfREVGQVVMVCA9PSBBVVRPX0NPTVBMRVRJT04gJgotKyAgICAgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBVVRPX0NPUlJFQ1RJT04g JgotKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBVVRP X0NBUElUQUxJWkFUSU9OCi0rICAgICAqLwotKyAgICBpZiAoaGludHMgJiBaV1BfVEVYVF9JTlBV VF9WMV9DT05URU5UX0hJTlRfQVVUT19DT01QTEVUSU9OKQotKyAgICAgICAgaWJ1c19oaW50cyB8 PSBJQlVTX0lOUFVUX0hJTlRfV09SRF9DT01QTEVUSU9OOwotKyAgICBpZiAoaGludHMgJiBaV1Bf VEVYVF9JTlBVVF9WMV9DT05URU5UX0hJTlRfQVVUT19DT1JSRUNUSU9OKQotKyAgICAgICAgaWJ1 c19oaW50cyB8PSBJQlVTX0lOUFVUX0hJTlRfU1BFTExDSEVDSzsKLSsgICAgaWYgKGhpbnRzICYg WldQX1RFWFRfSU5QVVRfVjFfQ09OVEVOVF9ISU5UX0FVVE9fQ0FQSVRBTElaQVRJT04pCi0rICAg ICAgICBpYnVzX2hpbnRzIHw9IElCVVNfSU5QVVRfSElOVF9VUFBFUkNBU0VfU0VOVEVOQ0VTOwot KyAgICBpZiAoaGludHMgJiBaV1BfVEVYVF9JTlBVVF9WMV9DT05URU5UX0hJTlRfTE9XRVJDQVNF KQotKyAgICAgICAgaWJ1c19oaW50cyB8PSBJQlVTX0lOUFVUX0hJTlRfTE9XRVJDQVNFOwotKyAg ICBpZiAoaGludHMgJiBaV1BfVEVYVF9JTlBVVF9WMV9DT05URU5UX0hJTlRfVVBQRVJDQVNFKQot KyAgICAgICAgaWJ1c19oaW50cyB8PSBJQlVTX0lOUFVUX0hJTlRfVVBQRVJDQVNFX0NIQVJTOwot KyAgICBpZiAoaGludHMgJiBaV1BfVEVYVF9JTlBVVF9WMV9DT05URU5UX0hJTlRfVElUTEVDQVNF KQotKyAgICAgICAgaWJ1c19oaW50cyB8PSBJQlVTX0lOUFVUX0hJTlRfVVBQRVJDQVNFX1dPUkRT OwotKyAgICBpZiAoaGludHMgJiBaV1BfVEVYVF9JTlBVVF9WMV9DT05URU5UX0hJTlRfSElEREVO X1RFWFQpCi0rICAgICAgICBpYnVzX2hpbnRzIHw9IElCVVNfSU5QVVRfSElOVF9ISURERU5fVEVY VDsKLSsgICAgaWYgKGhpbnRzICYgWldQX1RFWFRfSU5QVVRfVjFfQ09OVEVOVF9ISU5UX1NFTlNJ VElWRV9EQVRBKQotKyAgICAgICAgaWJ1c19oaW50cyB8PSBJQlVTX0lOUFVUX0hJTlRfUFJJVkFU RTsKLSsgICAgaWYgKGhpbnRzICYgWldQX1RFWFRfSU5QVVRfVjFfQ09OVEVOVF9ISU5UX0xBVElO KQotKyAgICAgICAgaWJ1c19oaW50cyB8PSBJQlVTX0lOUFVUX0hJTlRfTEFUSU47Ci0rICAgIGlm IChoaW50cyAmIFpXUF9URVhUX0lOUFVUX1YxX0NPTlRFTlRfSElOVF9NVUxUSUxJTkUpCi0rICAg ICAgICBpYnVzX2hpbnRzIHw9IElCVVNfSU5QVVRfSElOVF9NVUxUSUxJTkU7Ci0rCi0rICAgIHN3 aXRjaCAocHVycG9zZSkgewotKyAgICBjYXNlIFpXUF9URVhUX0lOUFVUX1YxX0NPTlRFTlRfUFVS UE9TRV9OT1JNQUw6Ci0rICAgICAgICBpYnVzX3B1cnBvc2UgPSBJQlVTX0lOUFVUX1BVUlBPU0Vf RlJFRV9GT1JNOwotKyAgICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjFf Q09OVEVOVF9QVVJQT1NFX0FMUEhBOgotKyAgICAgICAgaWJ1c19wdXJwb3NlID0gSUJVU19JTlBV VF9QVVJQT1NFX0FMUEhBOwotKyAgICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgWldQX1RFWFRfSU5Q VVRfVjFfQ09OVEVOVF9QVVJQT1NFX0RJR0lUUzoKLSsgICAgICAgIGlidXNfcHVycG9zZSA9IElC VVNfSU5QVVRfUFVSUE9TRV9ESUdJVFM7Ci0rICAgICAgICBicmVhazsKLSsgICAgY2FzZSBaV1Bf VEVYVF9JTlBVVF9WMV9DT05URU5UX1BVUlBPU0VfTlVNQkVSOgotKyAgICAgICAgaWJ1c19wdXJw b3NlID0gSUJVU19JTlBVVF9QVVJQT1NFX05VTUJFUjsKLSsgICAgICAgIGJyZWFrOwotKyAgICBj YXNlIFpXUF9URVhUX0lOUFVUX1YxX0NPTlRFTlRfUFVSUE9TRV9QSE9ORToKLSsgICAgICAgIGli dXNfcHVycG9zZSA9IElCVVNfSU5QVVRfUFVSUE9TRV9QSE9ORTsKLSsgICAgICAgIGJyZWFrOwot KyAgICBjYXNlIFpXUF9URVhUX0lOUFVUX1YxX0NPTlRFTlRfUFVSUE9TRV9VUkw6Ci0rICAgICAg ICBpYnVzX3B1cnBvc2UgPSBJQlVTX0lOUFVUX1BVUlBPU0VfVVJMOwotKyAgICAgICAgYnJlYWs7 Ci0rICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjFfQ09OVEVOVF9QVVJQT1NFX0VNQUlMOgotKyAg ICAgICAgaWJ1c19wdXJwb3NlID0gSUJVU19JTlBVVF9QVVJQT1NFX0VNQUlMOwotKyAgICAgICAg YnJlYWs7Ci0rICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjFfQ09OVEVOVF9QVVJQT1NFX05BTUU6 Ci0rICAgICAgICBpYnVzX3B1cnBvc2UgPSBJQlVTX0lOUFVUX1BVUlBPU0VfTkFNRTsKLSsgICAg ICAgIGJyZWFrOwotKyAgICBjYXNlIFpXUF9URVhUX0lOUFVUX1YxX0NPTlRFTlRfUFVSUE9TRV9Q QVNTV09SRDoKLSsgICAgICAgIGlidXNfcHVycG9zZSA9IElCVVNfSU5QVVRfUFVSUE9TRV9QQVNT V09SRDsKLSsgICAgICAgIGJyZWFrOwotKyAgICBjYXNlIFpXUF9URVhUX0lOUFVUX1YxX0NPTlRF TlRfUFVSUE9TRV9EQVRFOgotKyAgICAgICAgaWJ1c19wdXJwb3NlID0gSUJVU19JTlBVVF9QVVJQ T1NFX0RBVEU7Ci0rICAgICAgICBicmVhazsKLSsgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WMV9D T05URU5UX1BVUlBPU0VfVElNRToKLSsgICAgICAgIGlidXNfcHVycG9zZSA9IElCVVNfSU5QVVRf UFVSUE9TRV9USU1FOwotKyAgICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgWldQX1RFWFRfSU5QVVRf VjFfQ09OVEVOVF9QVVJQT1NFX0RBVEVUSU1FOgotKyAgICAgICAgaWJ1c19wdXJwb3NlID0gSUJV U19JTlBVVF9QVVJQT1NFX0RBVEVUSU1FOwotKyAgICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgWldQ X1RFWFRfSU5QVVRfVjFfQ09OVEVOVF9QVVJQT1NFX1RFUk1JTkFMOgotKyAgICAgICAgaWJ1c19w dXJwb3NlID0gSUJVU19JTlBVVF9QVVJQT1NFX1RFUk1JTkFMOwotKyAgICAgICAgYnJlYWs7Ci0r ICAgIGRlZmF1bHQ6Ci0rICAgICAgICBnX3dhcm5pbmcgKCJXcm9uZyBwdXJwb3NlIGluIHRoZSBp bnB1dC1tZXRob2QgY29udGV4dDogJWQiLCBwdXJwb3NlKTsKLSsgICAgfQotKwotKyAgICBwcml2 LT5pYnVzX2hpbnRzID0gaWJ1c19oaW50czsKLSsgICAgcHJpdi0+aWJ1c19wdXJwb3NlID0gaWJ1 c19wdXJwb3NlOwotKwotKyAgICAvKiBVcGRhdGUgcHJpdi0+aWJ1c19baGludHN8cHVycG9zZV0g YWZ0ZXIgX2NyZWF0ZV9pbnB1dF9jb250ZXh0X2RvbmUoKQotKyAgICAgKiBpcyBjYWxsZWQuCi0r ICAgICAqLwotKyAgICBpZiAoR19VTkxJS0VMWSAocHJpdi0+aWJ1c2NvbnRleHQpKSB7Ci0rICAg ICAgICBpYnVzX2lucHV0X2NvbnRleHRfc2V0X2NvbnRlbnRfdHlwZSAocHJpdi0+aWJ1c2NvbnRl eHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWJ1c19w dXJwb3NlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGli dXNfaGludHMpOwotKyAgICB9Ci0gfQotIAotIAotQEAgLTE4NjMsNiArMTk1NSw5IEBAIF9jcmVh dGVfaW5wdXRfY29udGV4dF9kb25lIChHT2JqZWN0ICAgICAgKm9iamVjdCwKLSAgICAgICAgICAg ICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICBnX2RidXNfcHJveHlfZ2V0 X29iamVjdF9wYXRoICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19EQlVTX1BS T1hZIChwcml2LT5pYnVzY29udGV4dCkpKTsKLSsgICAgICAgIGlidXNfaW5wdXRfY29udGV4dF9z ZXRfY29udGVudF90eXBlIChwcml2LT5pYnVzY29udGV4dCwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2LT5pYnVzX3B1cnBvc2UsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+aWJ1c19oaW50cyk7Ci0g ICAgIH0KLSB9Ci0gCi1AQCAtMTkwOSw2ICsyMDA0LDkgQEAgaW5wdXRfbWV0aG9kX2FjdGl2YXRl ICh2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpkYXRhLAotICAgICAgICAgZ19h c3NlcnRfbm90X3JlYWNoZWQgKCk7Ci0gICAgIH0KLSAKLSsgICAgcHJpdi0+aWJ1c19oaW50cyA9 IElCVVNfSU5QVVRfSElOVF9OT05FOwotKyAgICBwcml2LT5pYnVzX3B1cnBvc2UgPSBJQlVTX0lO UFVUX1BVUlBPU0VfRlJFRV9GT1JNOwotKwotICAgICBnX2Fzc2VydCAoIXByaXYtPmlidXNjb250 ZXh0KTsKLSAKLSAgICAgcHJpdi0+Y2FuY2VsbGFibGUgPSBnX2NhbmNlbGxhYmxlX25ldyAoKTsK LUBAIC0yMDc5LDkgKzIxNzcsOTYgQEAgaW5wdXRfbWV0aG9kX3RleHRfY2hhbmdlX2NhdXNlX3Yy ICh2b2lkICAgICAgICAgICAgICAgICAgICAgICAqZGF0YSwKLSBzdGF0aWMgdm9pZAotIGlucHV0 X21ldGhvZF9jb250ZW50X3R5cGVfdjIgKHZvaWQgICAgICAgICAgICAgICAgICAgICAgICpkYXRh LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB6d3BfaW5wdXRfbWV0aG9k X3YyICppbnB1dF9tZXRob2RfdjIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu dDMyX3QgICAgICAgICAgICAgICAgICAgIGhpbnQsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgIGhpbnRzLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICBwdXJwb3NlKQotIHsK LSsgICAgSUJ1c1dheWxhbmRJTSAqd2xpbSA9IGRhdGE7Ci0rICAgIElCdXNXYXlsYW5kSU1Qcml2 YXRlICpwcml2OwotKyAgICBJQnVzSW5wdXRIaW50cyBpYnVzX2hpbnRzID0gSUJVU19JTlBVVF9I SU5UX05PTkU7Ci0rICAgIElCdXNJbnB1dFB1cnBvc2UgaWJ1c19wdXJwb3NlID0gSUJVU19JTlBV VF9QVVJQT1NFX0ZSRUVfRk9STTsKLSsKLSsgICAgZ19yZXR1cm5faWZfZmFpbCAoSUJVU19JU19X QVlMQU5EX0lNICh3bGltKSk7Ci0rICAgIHByaXYgPSBpYnVzX3dheWxhbmRfaW1fZ2V0X2luc3Rh bmNlX3ByaXZhdGUgKHdsaW0pOwotKwotKyAgICBpZiAoaGludHMgJiBaV1BfVEVYVF9JTlBVVF9W M19DT05URU5UX0hJTlRfQ09NUExFVElPTikKLSsgICAgICAgIGlidXNfaGludHMgfD0gSUJVU19J TlBVVF9ISU5UX1dPUkRfQ09NUExFVElPTjsKLSsgICAgaWYgKGhpbnRzICYgWldQX1RFWFRfSU5Q VVRfVjNfQ09OVEVOVF9ISU5UX1NQRUxMQ0hFQ0spCi0rICAgICAgICBpYnVzX2hpbnRzIHw9IElC VVNfSU5QVVRfSElOVF9TUEVMTENIRUNLOwotKyAgICBpZiAoaGludHMgJiBaV1BfVEVYVF9JTlBV VF9WM19DT05URU5UX0hJTlRfQVVUT19DQVBJVEFMSVpBVElPTikKLSsgICAgICAgIGlidXNfaGlu dHMgfD0gSUJVU19JTlBVVF9ISU5UX1VQUEVSQ0FTRV9TRU5URU5DRVM7Ci0rICAgIGlmIChoaW50 cyAmIFpXUF9URVhUX0lOUFVUX1YzX0NPTlRFTlRfSElOVF9MT1dFUkNBU0UpCi0rICAgICAgICBp YnVzX2hpbnRzIHw9IElCVVNfSU5QVVRfSElOVF9MT1dFUkNBU0U7Ci0rICAgIGlmIChoaW50cyAm IFpXUF9URVhUX0lOUFVUX1YzX0NPTlRFTlRfSElOVF9VUFBFUkNBU0UpCi0rICAgICAgICBpYnVz X2hpbnRzIHw9IElCVVNfSU5QVVRfSElOVF9VUFBFUkNBU0VfQ0hBUlM7Ci0rICAgIGlmIChoaW50 cyAmIFpXUF9URVhUX0lOUFVUX1YzX0NPTlRFTlRfSElOVF9USVRMRUNBU0UpCi0rICAgICAgICBp YnVzX2hpbnRzIHw9IElCVVNfSU5QVVRfSElOVF9VUFBFUkNBU0VfV09SRFM7Ci0rICAgIGlmICho aW50cyAmIFpXUF9URVhUX0lOUFVUX1YzX0NPTlRFTlRfSElOVF9ISURERU5fVEVYVCkKLSsgICAg ICAgIGlidXNfaGludHMgfD0gSUJVU19JTlBVVF9ISU5UX0hJRERFTl9URVhUOwotKyAgICBpZiAo aGludHMgJiBaV1BfVEVYVF9JTlBVVF9WM19DT05URU5UX0hJTlRfU0VOU0lUSVZFX0RBVEEpCi0r ICAgICAgICBpYnVzX2hpbnRzIHw9IElCVVNfSU5QVVRfSElOVF9QUklWQVRFOwotKyAgICBpZiAo aGludHMgJiBaV1BfVEVYVF9JTlBVVF9WM19DT05URU5UX0hJTlRfTEFUSU4pCi0rICAgICAgICBp YnVzX2hpbnRzIHw9IElCVVNfSU5QVVRfSElOVF9MQVRJTjsKLSsgICAgaWYgKGhpbnRzICYgWldQ X1RFWFRfSU5QVVRfVjNfQ09OVEVOVF9ISU5UX01VTFRJTElORSkKLSsgICAgICAgIGlidXNfaGlu dHMgfD0gSUJVU19JTlBVVF9ISU5UX01VTFRJTElORTsKLSsKLSsgICAgc3dpdGNoIChwdXJwb3Nl KSB7Ci0rICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjNfQ09OVEVOVF9QVVJQT1NFX05PUk1BTDoK LSsgICAgICAgIGlidXNfcHVycG9zZSA9IElCVVNfSU5QVVRfUFVSUE9TRV9GUkVFX0ZPUk07Ci0r ICAgICAgICBicmVhazsKLSsgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WM19DT05URU5UX1BVUlBP U0VfQUxQSEE6Ci0rICAgICAgICBpYnVzX3B1cnBvc2UgPSBJQlVTX0lOUFVUX1BVUlBPU0VfQUxQ SEE7Ci0rICAgICAgICBicmVhazsKLSsgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WM19DT05URU5U X1BVUlBPU0VfRElHSVRTOgotKyAgICAgICAgaWJ1c19wdXJwb3NlID0gSUJVU19JTlBVVF9QVVJQ T1NFX0RJR0lUUzsKLSsgICAgICAgIGJyZWFrOwotKyAgICBjYXNlIFpXUF9URVhUX0lOUFVUX1Yz X0NPTlRFTlRfUFVSUE9TRV9OVU1CRVI6Ci0rICAgICAgICBpYnVzX3B1cnBvc2UgPSBJQlVTX0lO UFVUX1BVUlBPU0VfTlVNQkVSOwotKyAgICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgWldQX1RFWFRf SU5QVVRfVjNfQ09OVEVOVF9QVVJQT1NFX1BIT05FOgotKyAgICAgICAgaWJ1c19wdXJwb3NlID0g SUJVU19JTlBVVF9QVVJQT1NFX1BIT05FOwotKyAgICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgWldQ X1RFWFRfSU5QVVRfVjNfQ09OVEVOVF9QVVJQT1NFX1VSTDoKLSsgICAgICAgIGlidXNfcHVycG9z ZSA9IElCVVNfSU5QVVRfUFVSUE9TRV9VUkw7Ci0rICAgICAgICBicmVhazsKLSsgICAgY2FzZSBa V1BfVEVYVF9JTlBVVF9WM19DT05URU5UX1BVUlBPU0VfRU1BSUw6Ci0rICAgICAgICBpYnVzX3B1 cnBvc2UgPSBJQlVTX0lOUFVUX1BVUlBPU0VfRU1BSUw7Ci0rICAgICAgICBicmVhazsKLSsgICAg Y2FzZSBaV1BfVEVYVF9JTlBVVF9WM19DT05URU5UX1BVUlBPU0VfTkFNRToKLSsgICAgICAgIGli dXNfcHVycG9zZSA9IElCVVNfSU5QVVRfUFVSUE9TRV9OQU1FOwotKyAgICAgICAgYnJlYWs7Ci0r ICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjNfQ09OVEVOVF9QVVJQT1NFX1BBU1NXT1JEOgotKyAg ICAgICAgaWJ1c19wdXJwb3NlID0gSUJVU19JTlBVVF9QVVJQT1NFX1BBU1NXT1JEOwotKyAgICAg ICAgYnJlYWs7Ci0rICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjNfQ09OVEVOVF9QVVJQT1NFX1BJ TjoKLSsgICAgICAgIGlidXNfcHVycG9zZSA9IElCVVNfSU5QVVRfUFVSUE9TRV9QSU47Ci0rICAg ICAgICBicmVhazsKLSsgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WM19DT05URU5UX1BVUlBPU0Vf REFURToKLSsgICAgICAgIGlidXNfcHVycG9zZSA9IElCVVNfSU5QVVRfUFVSUE9TRV9EQVRFOwot KyAgICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjNfQ09OVEVOVF9QVVJQ T1NFX1RJTUU6Ci0rICAgICAgICBpYnVzX3B1cnBvc2UgPSBJQlVTX0lOUFVUX1BVUlBPU0VfVElN RTsKLSsgICAgICAgIGJyZWFrOwotKyAgICBjYXNlIFpXUF9URVhUX0lOUFVUX1YzX0NPTlRFTlRf UFVSUE9TRV9EQVRFVElNRToKLSsgICAgICAgIGlidXNfcHVycG9zZSA9IElCVVNfSU5QVVRfUFVS UE9TRV9EQVRFVElNRTsKLSsgICAgICAgIGJyZWFrOwotKyAgICBjYXNlIFpXUF9URVhUX0lOUFVU X1YzX0NPTlRFTlRfUFVSUE9TRV9URVJNSU5BTDoKLSsgICAgICAgIGlidXNfcHVycG9zZSA9IElC VVNfSU5QVVRfUFVSUE9TRV9URVJNSU5BTDsKLSsgICAgICAgIGJyZWFrOwotKyAgICBkZWZhdWx0 OgotKyAgICAgICAgZ193YXJuaW5nICgiV3JvbmcgcHVycG9zZSBpbiB0aGUgaW5wdXQtbWV0aG9k IGNvbnRleHQ6ICVkIiwgcHVycG9zZSk7Ci0rICAgIH0KLSsKLSsgICAgcHJpdi0+aWJ1c19oaW50 cyA9IGlidXNfaGludHM7Ci0rICAgIHByaXYtPmlidXNfcHVycG9zZSA9IGlidXNfcHVycG9zZTsK LSsKLSsgICAgLyogVXBkYXRlIHByaXYtPmlidXNfW2hpbnRzfHB1cnBvc2VdIGFmdGVyIF9jcmVh dGVfaW5wdXRfY29udGV4dF9kb25lKCkKLSsgICAgICogaXMgY2FsbGVkLgotKyAgICAgKi8KLSsg ICAgaWYgKEdfVU5MSUtFTFkgKHByaXYtPmlidXNjb250ZXh0KSkgewotKyAgICAgICAgaWJ1c19p bnB1dF9jb250ZXh0X3NldF9jb250ZW50X3R5cGUgKHByaXYtPmlidXNjb250ZXh0LAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlidXNfcHVycG9zZSwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYnVzX2hpbnRzKTsK LSsgICAgfQotIH0KLSAKLSAKLS0tIAotMi41Mi4wCi0K