ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbnRmcy50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL250ZnMudHh0CmluZGV4IGY4OWI0NDAuLmNiM2NiOGMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbnRmcy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9udGZzLnR4dApAQCAtMjEsNyArMjEsNyBAQAogPT09PT09PT0KIAogTGludXgtTlRGUyBjb21lcyB3aXRoIGEgbnVtYmVyIG9mIHVzZXItc3BhY2UgcHJvZ3JhbXMga25vd24gYXMgbnRmc3Byb2dzLgotVGhlc2UgaW5jbHVkZSBta250ZnMsIGEgZnVsbC1mZWF0dXJlZCBudGZzIGZpbGUgc3lzdGVtIGZvcm1hdCB1dGlsaXR5LAorVGhlc2UgaW5jbHVkZSBta250ZnMsIGEgZnVsbC1mZWF0dXJlZCBudGZzIGZpbGVzeXN0ZW0gZm9ybWF0IHV0aWxpdHksCiBudGZzdW5kZWxldGUgdXNlZCBmb3IgcmVjb3ZlcmluZyBmaWxlcyB0aGF0IHdlcmUgdW5pbnRlbnRpb25hbGx5IGRlbGV0ZWQKIGZyb20gYW4gTlRGUyB2b2x1bWUgYW5kIG50ZnNyZXNpemUgd2hpY2ggaXMgdXNlZCB0byByZXNpemUgYW4gTlRGUyBwYXJ0aXRpb24uCiBTZWUgdGhlIHdlYiBzaXRlIGZvciBtb3JlIGluZm9ybWF0aW9uLgpAQCAtMTQ5LDcgKzE0OSwxNCBAQAogCQkJbmFtZSwgaWYgaXQgZXhpc3RzLiAgSWYgY2FzZV9zZW5zaXRpdmUsIHlvdSB3aWxsIG5lZWQKIAkJCXRvIHByb3ZpZGUgdGhlIGNvcnJlY3QgY2FzZSBvZiB0aGUgc2hvcnQgZmlsZSBuYW1lLgogCi1lcnJvcnM9b3B0CQlXaGF0IHRvIGRvIHdoZW4gY3JpdGljYWwgZmlsZSBzeXN0ZW0gZXJyb3JzIGFyZSBmb3VuZC4KK2Rpc2FibGVfc3BhcnNlPTxCT09MPglJZiBkaXNhYmxlX3NwYXJzZSBpcyBzcGVjaWZpZWQsIGNyZWF0aW9uIG9mIHNwYXJzZQorCQkJcmVnaW9ucywgaS5lLiBob2xlcywgaW5zaWRlIGZpbGVzIGlzIGRpc2FibGVkIGZvciB0aGUKKwkJCXZvbHVtZSAoZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGlzIG1vdW50IG9ubHkpLiAgQnkKKwkJCWRlZmF1bHQsIGNyZWF0aW9uIG9mIHNwYXJzZSByZWdpb25zIGlzIGVuYWJsZWQsIHdoaWNoCisJCQlpcyBjb25zaXN0ZW50IHdpdGggdGhlIGJlaGF2aW91ciBvZiB0cmFkaXRpb25hbCBVbml4CisJCQlmaWxlc3lzdGVtcy4KKworZXJyb3JzPW9wdAkJV2hhdCB0byBkbyB3aGVuIGNyaXRpY2FsIGZpbGVzeXN0ZW0gZXJyb3JzIGFyZSBmb3VuZC4KIAkJCUZvbGxvd2luZyB2YWx1ZXMgY2FuIGJlIHVzZWQgZm9yICJvcHQiOgogCQkJICBjb250aW51ZTogREVGQVVMVCwgdHJ5IHRvIGNsZWFuLXVwIGFzIG11Y2ggYXMKIAkJCQkgICAgcG9zc2libGUsIGUuZy4gbWFya2luZyBhIGNvcnJ1cHQgaW5vZGUgYXMKZGlmZiAtLWdpdCBhL2ZzL250ZnMvQ2hhbmdlTG9nIGIvZnMvbnRmcy9DaGFuZ2VMb2cKaW5kZXggOGEyNDlkZi4uM2Y3OGZmZiAxMDA2NDQKLS0tIGEvZnMvbnRmcy9DaGFuZ2VMb2cKKysrIGIvZnMvbnRmcy9DaGFuZ2VMb2cKQEAgLTU2LDYgKzU2LDEwIEBACiAJICB0aGlzIG9ubHkgd29ya3MgdW50aWwgdGhlIGRhdGEgYXR0cmlidXRlIGJlY29tZXMgdG9vIGJpZyBmb3IgdGhlIG1mdAogCSAgcmVjb3JkIGFmdGVyIHdoaWNoIHdlIGFib3J0IHRoZSB3cml0ZSByZXR1cm5pbmcgLUVPUE5PVFNVUFAgZnJvbQogCSAgbnRmc19wcmVwYXJlX3dyaXRlKCkuCisJLSBBZGQgZGlzYWJsZV9zcGFyc2UgbW91bnQgb3B0aW9uIHRvZ2V0aGVyIHdpdGggYSBwZXIgdm9sdW1lIHNwYXJzZQorCSAgZW5hYmxlIGJpdCB3aGljaCBpcyBzZXQgYXBwcm9wcmlhdGVseSBhbmQgYSBwZXIgaW5vZGUgc3BhcnNlIGRpc2FibGUKKwkgIGJpdCB3aGljaCBpcyBwcmVzZXQgb24gc29tZSBzeXN0ZW0gZmlsZSBpbm9kZXMgYXMgYXBwcm9wcmlhdGUuCisJLSBFbmZvcmNlIHRoYXQgc3BhcnNlIHN1cHBvcnQgaXMgZGlzYWJsZWQgb24gTlRGUyB2b2x1bWVzIHByZSAzLjAuCiAKIDIuMS4yMiAtIE1hbnkgYnVnIGFuZCByYWNlIGZpeGVzIGFuZCBlcnJvciBoYW5kbGluZyBpbXByb3ZlbWVudHMuCiAKQEAgLTEwNjIsNyArMTA2Niw3IEBACiAJLSBGdXJ0aGVyIHJ1bmxpc3QgbWVyZ2luZyB3b3JrLiAoUmljaGFyZCBSdXNzb24pCiAJLSBCYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBmb3IgZ2NjLTIuOTUuIChSaWNoYXJkIFJ1c3NvbikKIAktIFVwZGF0ZSB0byBrZXJuZWwgMi41LjUtcHJlMSBhbmQgcmVkaWZmIHRoZSBub3cgdGlueSBwYXRjaC4KLQktIENvbnZlcnQgdG8gbmV3IGZpbGUgc3lzdGVtIGRlY2xhcmF0aW9uIHVzaW5nIC0+bnRmc19nZXRfc2IoKSBhbmQKKwktIENvbnZlcnQgdG8gbmV3IGZpbGVzeXN0ZW0gZGVjbGFyYXRpb24gdXNpbmcgLT5udGZzX2dldF9zYigpIGFuZAogCSAgcmVwbGFjaW5nIG50ZnNfcmVhZF9zdXBlcigpIHdpdGggbnRmc19maWxsX3N1cGVyKCkuCiAJLSBTZXQgc19tYXhieXRlcyB0byBNQVhfTEZTX0ZJTEVTSVpFIHRvIGF2b2lkIHBhZ2UgY2FjaGUgcGFnZSBpbmRleAogCSAgb3ZlcmZsb3cgb24gMzItYml0IGFyY2hpdGVjdHVyZXMuCkBAIC0xMzU4LDcgKzEzNjIsNyBAQAogCVRoZSBkcml2ZXIgaXMgbm93IGFjdHVhbGx5IHVzZWZ1bCEgWWV5LiAoLTogSXQgdW5kb3VidGVkbHkgaGFzIGdvdCBidWdzCiAJdGhvdWdoIGFuZCBpdCBkb2Vzbid0IGltcGxlbWVudCBhY2Nlc3NzaW5nIGNvbXByZXNzZWQgZmlsZXMgeWV0LiBBbHNvLAogCWFjY2Vzc2luZyBmaWxlcyB3aXRoIGF0dHJpYnV0ZSBsaXN0IGF0dHJpYnV0ZXMgaXMgbm90IGltcGxlbWVudGVkIHlldAotCWVpdGhlci4gQnV0IGZvciBzbWFsbCBvciBzaW1wbGUgZmlsZSBzeXN0ZW1zIGl0IHNob3VsZCB3b3JrIGFuZCBhbGxvdworCWVpdGhlci4gQnV0IGZvciBzbWFsbCBvciBzaW1wbGUgZmlsZXN5c3RlbXMgaXQgc2hvdWxkIHdvcmsgYW5kIGFsbG93CiAJeW91IHRvIGxpc3QgZGlyZWN0b3JpZXMsIHVzZSBzdGF0IG9uIGRpcmVjdG9yeSBlbnRyaWVzIGFuZCB0aGUgZmlsZQogCXN5c3RlbSwgb3BlbiwgcmVhZCwgbW1hcCBhbmQgbGxzZWVrIGFyb3VuZCBpbiBmaWxlcy4gQSBiaWcgbWlsZSBzdG9uZQogCWhhcyBiZWVuIHJlYWNoZWQhCkBAIC0xMzY2LDcgKzEzNzAsNyBAQAogdG5nLTAuMC4wIC0gSW5pdGlhbCB2ZXJzaW9uIHRhZy4KIAogCUluaXRpYWwgZHJpdmVyIGltcGxlbWVudGF0aW9uLiBUaGUgZHJpdmVyIGNhbiBtb3VudCBhbmQgdW1vdW50IHNpbXBsZQotCU5URlMgZmlsZSBzeXN0ZW1zIChpLmUuIG9uZXMgd2l0aG91dCBhdHRyaWJ1dGUgbGlzdHMgaW4gdGhlIHN5c3RlbQorCU5URlMgZmlsZXN5c3RlbXMgKGkuZS4gb25lcyB3aXRob3V0IGF0dHJpYnV0ZSBsaXN0cyBpbiB0aGUgc3lzdGVtCiAJZmlsZXMpLiBJZiB0aGUgbW91bnQgZmFpbHMgdGhlcmUgbWlnaHQgYmUgcHJvYmxlbXMgaW4gdGhlIGVycm9yIGhhbmRsaW5nCiAJY29kZSBwYXRocywgc28gYmUgd2FybmVkLiBPdGhlcndpc2UgaXQgc2VlbXMgdG8gYmUgbG9hZGluZyB0aGUgc3lzdGVtCiAJZmlsZXMgbmljZWx5IGFuZCB0aGUgbWZ0IHJlY29yZCByZWFkIG1hcHBpbmcvdW5tYXBwaW5nIHNlZW1zIHRvIGJlCmRpZmYgLS1naXQgYS9mcy9udGZzL2Rpci5jIGIvZnMvbnRmcy9kaXIuYwppbmRleCBkMjYxYWM0Li45NWM0NDU3IDEwMDY0NAotLS0gYS9mcy9udGZzL2Rpci5jCisrKyBiL2ZzL250ZnMvZGlyLmMKQEAgLTEsNyArMSw3IEBACiAvKioKICAqIGRpci5jIC0gTlRGUyBrZXJuZWwgZGlyZWN0b3J5IG9wZXJhdGlvbnMuIFBhcnQgb2YgdGhlIExpbnV4LU5URlMgcHJvamVjdC4KICAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwNCBBbnRvbiBBbHRhcGFybWFrb3YKKyAqIENvcHlyaWdodCAoYykgMjAwMS0yMDA1IEFudG9uIEFsdGFwYXJtYWtvdgogICogQ29weXJpZ2h0IChjKSAyMDAyIFJpY2hhcmQgUnVzc29uCiAgKgogICogVGhpcyBwcm9ncmFtL2luY2x1ZGUgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTYxMCw3ICs2MTAsNyBAQAogLy8gVE9ETzogKEFJQSkKIC8vIFRoZSBhbGdvcml0aG0gZW1iZWRkZWQgaW4gdGhpcyBjb2RlIHdpbGwgYmUgcmVxdWlyZWQgZm9yIHRoZSB0aW1lIHdoZW4gd2UKIC8vIHdhbnQgdG8gc3VwcG9ydCBhZGRpbmcgb2YgZW50cmllcyB0byBkaXJlY3Rvcmllcywgd2hlcmUgd2UgcmVxdWlyZSBjb3JyZWN0Ci0vLyBjb2xsYXRpb24gb2YgZmlsZSBuYW1lcyBpbiBvcmRlciBub3QgdG8gY2F1c2UgY29ycnVwdGlvbiBvZiB0aGUgZmlsZSBzeXN0ZW0uCisvLyBjb2xsYXRpb24gb2YgZmlsZSBuYW1lcyBpbiBvcmRlciBub3QgdG8gY2F1c2UgY29ycnVwdGlvbiBvZiB0aGUgZmlsZXN5c3RlbS4KIAogLyoqCiAgKiBudGZzX2xvb2t1cF9pbm9kZV9ieV9uYW1lIC0gZmluZCBhbiBpbm9kZSBpbiBhIGRpcmVjdG9yeSBnaXZlbiBpdHMgbmFtZQpkaWZmIC0tZ2l0IGEvZnMvbnRmcy9pbm9kZS5jIGIvZnMvbnRmcy9pbm9kZS5jCmluZGV4IDZjNjMxZGIuLjM3MmM3ZmMgMTAwNjQ0Ci0tLSBhL2ZzL250ZnMvaW5vZGUuYworKysgYi9mcy9udGZzL2lub2RlLmMKQEAgLTEsNyArMSw3IEBACiAvKioKICAqIGlub2RlLmMgLSBOVEZTIGtlcm5lbCBpbm9kZSBoYW5kbGluZy4gUGFydCBvZiB0aGUgTGludXgtTlRGUyBwcm9qZWN0LgogICoKLSAqIENvcHlyaWdodCAoYykgMjAwMS0yMDA0IEFudG9uIEFsdGFwYXJtYWtvdgorICogQ29weXJpZ2h0IChjKSAyMDAxLTIwMDUgQW50b24gQWx0YXBhcm1ha292CiAgKgogICogVGhpcyBwcm9ncmFtL2luY2x1ZGUgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZApAQCAtMTczMSw2ICsxNzMxLDcgQEAKIAkvKiBTZXR1cCB0aGUgZGF0YSBhdHRyaWJ1dGUuIEl0IGlzIHNwZWNpYWwgYXMgaXQgaXMgbXN0IHByb3RlY3RlZC4gKi8KIAlOSW5vU2V0Tm9uUmVzaWRlbnQobmkpOwogCU5Jbm9TZXRNc3RQcm90ZWN0ZWQobmkpOworCU5Jbm9TZXRTcGFyc2VEaXNhYmxlZChuaSk7CiAJbmktPnR5cGUgPSBBVF9EQVRBOwogCW5pLT5uYW1lID0gTlVMTDsKIAluaS0+bmFtZV9sZW4gPSAwOwpAQCAtMjI3OSw2ICsyMjgwLDggQEAKIAkJc2VxX3ByaW50ZihzZiwgIixjYXNlX3NlbnNpdGl2ZSIpOwogCWlmIChOVm9sU2hvd1N5c3RlbUZpbGVzKHZvbCkpCiAJCXNlcV9wcmludGYoc2YsICIsc2hvd19zeXNfZmlsZXMiKTsKKwlpZiAoIU5Wb2xTcGFyc2VFbmFibGVkKHZvbCkpCisJCXNlcV9wcmludGYoc2YsICIsZGlzYWJsZV9zcGFyc2UiKTsKIAlmb3IgKGkgPSAwOyBvbl9lcnJvcnNfYXJyW2ldLnZhbDsgaSsrKSB7CiAJCWlmIChvbl9lcnJvcnNfYXJyW2ldLnZhbCAmIHZvbC0+b25fZXJyb3JzKQogCQkJc2VxX3ByaW50ZihzZiwgIixlcnJvcnM9JXMiLCBvbl9lcnJvcnNfYXJyW2ldLnN0cik7CmRpZmYgLS1naXQgYS9mcy9udGZzL2lub2RlLmggYi9mcy9udGZzL2lub2RlLmgKaW5kZXggNTZiMmQ2ZS4uNmViOTk3NyAxMDA2NDQKLS0tIGEvZnMvbnRmcy9pbm9kZS5oCisrKyBiL2ZzL250ZnMvaW5vZGUuaApAQCAtMiw3ICsyLDcgQEAKICAqIGlub2RlLmggLSBEZWZpbmVzIGZvciBpbm9kZSBzdHJ1Y3R1cmVzIE5URlMgTGludXgga2VybmVsIGRyaXZlci4gUGFydCBvZgogICoJICAgICB0aGUgTGludXgtTlRGUyBwcm9qZWN0LgogICoKLSAqIENvcHlyaWdodCAoYykgMjAwMS0yMDA0IEFudG9uIEFsdGFwYXJtYWtvdgorICogQ29weXJpZ2h0IChjKSAyMDAxLTIwMDUgQW50b24gQWx0YXBhcm1ha292CiAgKiBDb3B5cmlnaHQgKGMpIDIwMDIgUmljaGFyZCBSdXNzb24KICAqCiAgKiBUaGlzIHByb2dyYW0vaW5jbHVkZSBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMTY2LDYgKzE2Niw3IEBACiAJTklfU3BhcnNlLAkJLyogMTogVW5uYW1lZCBkYXRhIGF0dHIgaXMgc3BhcnNlIChmKS4KIAkJCQkgICAxOiBDcmVhdGUgc3BhcnNlIGZpbGVzIGJ5IGRlZmF1bHQgKGQpLgogCQkJCSAgIDE6IEF0dHJpYnV0ZSBpcyBzcGFyc2UgKGEpLiAqLworCU5JX1NwYXJzZURpc2FibGVkLAkvKiAxOiBNYXkgbm90IGNyZWF0ZSBzcGFyc2UgcmVnaW9ucy4gKi8KIAlOSV9UcnVuY2F0ZUZhaWxlZCwJLyogMTogTGFzdCBudGZzX3RydW5jYXRlKCkgY2FsbCBmYWlsZWQuICovCiB9IG50ZnNfaW5vZGVfc3RhdGVfYml0czsKIApAQCAtMjE4LDYgKzIxOSw3IEBACiBOSU5PX0ZOUyhDb21wcmVzc2VkKQogTklOT19GTlMoRW5jcnlwdGVkKQogTklOT19GTlMoU3BhcnNlKQorTklOT19GTlMoU3BhcnNlRGlzYWJsZWQpCiBOSU5PX0ZOUyhUcnVuY2F0ZUZhaWxlZCkKIAogLyoKZGlmZiAtLWdpdCBhL2ZzL250ZnMvbGF5b3V0LmggYi9mcy9udGZzL2xheW91dC5oCmluZGV4IDQ3YjMzODkuLjdjYjg4MDYgMTAwNjQ0Ci0tLSBhL2ZzL250ZnMvbGF5b3V0LmgKKysrIGIvZnMvbnRmcy9sYXlvdXQuaApAQCAtMiw3ICsyLDcgQEAKICAqIGxheW91dC5oIC0gQWxsIE5URlMgYXNzb2NpYXRlZCBvbi1kaXNrIHN0cnVjdHVyZXMuIFBhcnQgb2YgdGhlIExpbnV4LU5URlMKICAqCSAgICAgIHByb2plY3QuCiAgKgotICogQ29weXJpZ2h0IChjKSAyMDAxLTIwMDQgQW50b24gQWx0YXBhcm1ha292CisgKiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwNSBBbnRvbiBBbHRhcGFybWFrb3YKICAqIENvcHlyaWdodCAoYykgMjAwMiBSaWNoYXJkIFJ1c3NvbgogICoKICAqIFRoaXMgcHJvZ3JhbS9pbmNsdWRlIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC04MzQsNyArODM0LDcgQEAKIAkvKiBOb3RlLCB0aGlzIGlzIGEgY29weSBvZiB0aGUgY29ycmVzcG9uZGluZyBiaXQgZnJvbSB0aGUgbWZ0IHJlY29yZCwKIAkgICB0ZWxsaW5nIHVzIHdoZXRoZXIgdGhpcyBmaWxlIGhhcyBhIHZpZXcgaW5kZXggcHJlc2VudCAoZWcuIG9iamVjdCBpZAogCSAgIGluZGV4LCBxdW90YSBpbmRleCwgb25lIG9mIHRoZSBzZWN1cml0eSBpbmRleGVzIG9yIHRoZSBlbmNyeXB0aW5nCi0JICAgZmlsZSBzeXN0ZW0gcmVsYXRlZCBpbmRleGVzKS4gKi8KKwkgICBmaWxlc3lzdGVtIHJlbGF0ZWQgaW5kZXhlcykuICovCiB9OwogCiB0eXBlZGVmIGxlMzIgRklMRV9BVFRSX0ZMQUdTOwpkaWZmIC0tZ2l0IGEvZnMvbnRmcy9zdXBlci5jIGIvZnMvbnRmcy9zdXBlci5jCmluZGV4IDBhZDBjNTEuLmI2NzZjZjYgMTAwNjQ0Ci0tLSBhL2ZzL250ZnMvc3VwZXIuYworKysgYi9mcy9udGZzL3N1cGVyLmMKQEAgLTEsNyArMSw3IEBACiAvKgogICogc3VwZXIuYyAtIE5URlMga2VybmVsIHN1cGVyIGJsb2NrIGhhbmRsaW5nLiBQYXJ0IG9mIHRoZSBMaW51eC1OVEZTIHByb2plY3QuCiAgKgotICogQ29weXJpZ2h0IChjKSAyMDAxLTIwMDQgQW50b24gQWx0YXBhcm1ha292CisgKiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwNSBBbnRvbiBBbHRhcGFybWFrb3YKICAqIENvcHlyaWdodCAoYykgMjAwMSwyMDAyIFJpY2hhcmQgUnVzc29uCiAgKgogICogVGhpcyBwcm9ncmFtL2luY2x1ZGUgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlICJtYWxsb2MuaCIKICNpbmNsdWRlICJudGZzLmgiCiAKLS8qIE51bWJlciBvZiBtb3VudGVkIGZpbGUgc3lzdGVtcyB3aGljaCBoYXZlIGNvbXByZXNzaW9uIGVuYWJsZWQuICovCisvKiBOdW1iZXIgb2YgbW91bnRlZCBmaWxlc3lzdGVtcyB3aGljaCBoYXZlIGNvbXByZXNzaW9uIGVuYWJsZWQuICovCiBzdGF0aWMgdW5zaWduZWQgbG9uZyBudGZzX25yX2NvbXByZXNzaW9uX3VzZXJzOwogCiAvKiBBIGdsb2JhbCBkZWZhdWx0IHVwY2FzZSB0YWJsZSBhbmQgYSBjb3JyZXNwb25kaW5nIHJlZmVyZW5jZSBjb3VudC4gKi8KQEAgLTEwMiw3ICsxMDIsNyBAQAogCWdpZF90IGdpZCA9IChnaWRfdCktMTsKIAltb2RlX3QgZm1hc2sgPSAobW9kZV90KS0xLCBkbWFzayA9IChtb2RlX3QpLTE7CiAJaW50IG1mdF96b25lX211bHRpcGxpZXIgPSAtMSwgb25fZXJyb3JzID0gLTE7Ci0JaW50IHNob3dfc3lzX2ZpbGVzID0gLTEsIGNhc2Vfc2Vuc2l0aXZlID0gLTE7CisJaW50IHNob3dfc3lzX2ZpbGVzID0gLTEsIGNhc2Vfc2Vuc2l0aXZlID0gLTEsIGRpc2FibGVfc3BhcnNlID0gLTE7CiAJc3RydWN0IG5sc190YWJsZSAqbmxzX21hcCA9IE5VTEwsICpvbGRfbmxzOwogCiAJLyogSSBhbSBsYXp5Li4uICgtOCAqLwpAQCAtMTYyLDYgKzE2Miw3IEBACiAJCWVsc2UgTlRGU19HRVRPUFRfV0lUSF9ERUZBVUxUKCJzbG9wcHkiLCBzbG9wcHksIFRSVUUpCiAJCWVsc2UgTlRGU19HRVRPUFRfQk9PTCgic2hvd19zeXNfZmlsZXMiLCBzaG93X3N5c19maWxlcykKIAkJZWxzZSBOVEZTX0dFVE9QVF9CT09MKCJjYXNlX3NlbnNpdGl2ZSIsIGNhc2Vfc2Vuc2l0aXZlKQorCQllbHNlIE5URlNfR0VUT1BUX0JPT0woImRpc2FibGVfc3BhcnNlIiwgZGlzYWJsZV9zcGFyc2UpCiAJCWVsc2UgTlRGU19HRVRPUFRfT1BUSU9OU19BUlJBWSgiZXJyb3JzIiwgb25fZXJyb3JzLAogCQkJCW9uX2Vycm9yc19hcnIpCiAJCWVsc2UgaWYgKCFzdHJjbXAocCwgInBvc2l4IikgfHwgIXN0cmNtcChwLCAic2hvd19pbm9kZXMiKSkKQEAgLTI5MSw2ICsyOTIsMjEgQEAKIAkJZWxzZQogCQkJTlZvbENsZWFyQ2FzZVNlbnNpdGl2ZSh2b2wpOwogCX0KKwlpZiAoZGlzYWJsZV9zcGFyc2UgIT0gLTEpIHsKKwkJaWYgKGRpc2FibGVfc3BhcnNlKQorCQkJTlZvbENsZWFyU3BhcnNlRW5hYmxlZCh2b2wpOworCQllbHNlIHsKKwkJCWlmICghTlZvbFNwYXJzZUVuYWJsZWQodm9sKSAmJgorCQkJCQl2b2wtPm1ham9yX3ZlciAmJiB2b2wtPm1ham9yX3ZlciA8IDMpCisJCQkJbnRmc193YXJuaW5nKHZvbC0+c2IsICJOb3QgZW5hYmxpbmcgc3BhcnNlICIKKwkJCQkJCSJzdXBwb3J0IGR1ZSB0byBOVEZTIHZvbHVtZSAiCisJCQkJCQkidmVyc2lvbiAlaS4laSAobmVlZCBhdCBsZWFzdCAiCisJCQkJCQkidmVyc2lvbiAzLjApLiIsIHZvbC0+bWFqb3JfdmVyLAorCQkJCQkJdm9sLT5taW5vcl92ZXIpOworCQkJZWxzZQorCQkJCU5Wb2xTZXRTcGFyc2VFbmFibGVkKHZvbCk7CisJCX0KKwl9CiAJcmV0dXJuIFRSVUU7CiBuZWVkc19hcmc6CiAJbnRmc19lcnJvcih2b2wtPnNiLCAiVGhlICVzIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudC4iLCBwKTsKQEAgLTk2Nyw2ICs5ODMsNyBAQAogCXRtcF9uaSA9IE5URlNfSSh0bXBfaW5vKTsKIAkvKiBUaGUgJE1GVE1pcnIsIGxpa2UgdGhlICRNRlQgaXMgbXVsdGkgc2VjdG9yIHRyYW5zZmVyIHByb3RlY3RlZC4gKi8KIAlOSW5vU2V0TXN0UHJvdGVjdGVkKHRtcF9uaSk7CisJTklub1NldFNwYXJzZURpc2FibGVkKHRtcF9uaSk7CiAJLyoKIAkgKiBTZXQgdXAgb3VyIGxpdHRsZSBjaGVhdCBhbGxvd2luZyB1cyB0byByZXVzZSB0aGUgYXN5bmMgcmVhZCBpbwogCSAqIGNvbXBsZXRpb24gaGFuZGxlciBmb3IgZGlyZWN0b3JpZXMuCkBAIC0xMTIyLDYgKzExMzksNyBAQAogCQkvKiBudGZzX2NoZWNrX2xvZ2ZpbGUoKSB3aWxsIGhhdmUgZGlzcGxheWVkIGVycm9yIG91dHB1dC4gKi8KIAkJcmV0dXJuIEZBTFNFOwogCX0KKwlOSW5vU2V0U3BhcnNlRGlzYWJsZWQoTlRGU19JKHRtcF9pbm8pKTsKIAl2b2wtPmxvZ2ZpbGVfaW5vID0gdG1wX2lubzsKIAludGZzX2RlYnVnKCJEb25lLiIpOwogCXJldHVybiBUUlVFOwpAQCAtMTIyMCw2ICsxMjM4LDcgQEAKIAkJCWlwdXQoaW5vKTsKIAkJZ290byBmYWlsZWQ7CiAJfQorCU5Jbm9TZXRTcGFyc2VEaXNhYmxlZChOVEZTX0koaW5vKSk7CiAJLyogVGhlIHNpemUgb2YgRklMRV9BdHRyRGVmIG11c3QgYmUgYWJvdmUgMCBhbmQgZml0IGluc2lkZSAzMSBiaXRzLiAqLwogCWlfc2l6ZSA9IGlfc2l6ZV9yZWFkKGlubyk7CiAJaWYgKGlfc2l6ZSA8PSAwIHx8IGlfc2l6ZSA+IDB4N2ZmZmZmZmYpCkBAIC0xNDM5LDYgKzE0NTgsNyBAQAogCQkJaXB1dCh2b2wtPmxjbmJtcF9pbm8pOwogCQlnb3RvIGJpdG1hcF9mYWlsZWQ7CiAJfQorCU5Jbm9TZXRTcGFyc2VEaXNhYmxlZChOVEZTX0kodm9sLT5sY25ibXBfaW5vKSk7CiAJaWYgKCh2b2wtPm5yX2NsdXN0ZXJzICsgNykgPj4gMyA+IGlfc2l6ZV9yZWFkKHZvbC0+bGNuYm1wX2lubykpIHsKIAkJaXB1dCh2b2wtPmxjbmJtcF9pbm8pOwogYml0bWFwX2ZhaWxlZDoKQEAgLTE0OTAsNiArMTUxMCwxMiBAQAogCXVubWFwX21mdF9yZWNvcmQoTlRGU19JKHZvbC0+dm9sX2lubykpOwogCXByaW50ayhLRVJOX0lORk8gIk5URlMgdm9sdW1lIHZlcnNpb24gJWkuJWkuXG4iLCB2b2wtPm1ham9yX3ZlciwKIAkJCXZvbC0+bWlub3JfdmVyKTsKKwlpZiAodm9sLT5tYWpvcl92ZXIgPCAzICYmIE5Wb2xTcGFyc2VFbmFibGVkKHZvbCkpIHsKKwkJbnRmc193YXJuaW5nKHZvbC0+c2IsICJEaXNhYmxpbmcgc3BhcnNlIHN1cHBvcnQgZHVlIHRvIE5URlMgIgorCQkJCSJ2b2x1bWUgdmVyc2lvbiAlaS4laSAobmVlZCBhdCBsZWFzdCB2ZXJzaW9uICIKKwkJCQkiMy4wKS4iLCB2b2wtPm1ham9yX3Zlciwgdm9sLT5taW5vcl92ZXIpOworCQlOVm9sQ2xlYXJTcGFyc2VFbmFibGVkKHZvbCk7CisJfQogI2lmZGVmIE5URlNfUlcKIAkvKiBNYWtlIHN1cmUgdGhhdCBubyB1bnN1cHBvcnRlZCB2b2x1bWUgZmxhZ3MgYXJlIHNldC4gKi8KIAlpZiAodm9sLT52b2xfZmxhZ3MgJiBWT0xVTUVfTVVTVF9NT1VOVF9ST19NQVNLKSB7CkBAIC0yMDMzLDcgKzIwNTksNyBAQAogLyoqCiAgKiBfX2dldF9ucl9mcmVlX21mdF9yZWNvcmRzIC0gcmV0dXJuIHRoZSBudW1iZXIgb2YgZnJlZSBpbm9kZXMgb24gYSB2b2x1bWUKICAqIEB2b2w6CW50ZnMgdm9sdW1lIGZvciB3aGljaCB0byBvYnRhaW4gZnJlZSBpbm9kZSBjb3VudAotICogQG5yX2ZyZWU6CW51bWJlciBvZiBtZnQgcmVjb3JkcyBpbiBmaWxlIHN5c3RlbQorICogQG5yX2ZyZWU6CW51bWJlciBvZiBtZnQgcmVjb3JkcyBpbiBmaWxlc3lzdGVtCiAgKiBAbWF4X2luZGV4OgltYXhpbXVtIG51bWJlciBvZiBwYWdlcyBjb250YWluaW5nIHNldCBiaXRzCiAgKgogICogQ2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgZnJlZSBtZnQgcmVjb3JkcyAoaW5vZGVzKSBvbiB0aGUgbW91bnRlZCBOVEZTCkBAIC0yMTM4LDEzICsyMTY0LDEzIEBACiAJLyogT3B0aW1hbCB0cmFuc2ZlciBibG9jayBzaXplLiAqLwogCXNmcy0+Zl9ic2l6ZSAgPSBQQUdFX0NBQ0hFX1NJWkU7CiAJLyoKLQkgKiBUb3RhbCBkYXRhIGJsb2NrcyBpbiBmaWxlIHN5c3RlbSBpbiB1bml0cyBvZiBmX2JzaXplIGFuZCBzaW5jZQorCSAqIFRvdGFsIGRhdGEgYmxvY2tzIGluIGZpbGVzeXN0ZW0gaW4gdW5pdHMgb2YgZl9ic2l6ZSBhbmQgc2luY2UKIAkgKiBpbm9kZXMgYXJlIGFsc28gc3RvcmVkIGluIGRhdGEgYmxvY3MgKCRNRlQgaXMgYSBmaWxlKSB0aGlzIGlzIGp1c3QKIAkgKiB0aGUgdG90YWwgY2x1c3RlcnMuCiAJICovCiAJc2ZzLT5mX2Jsb2NrcyA9IHZvbC0+bnJfY2x1c3RlcnMgPDwgdm9sLT5jbHVzdGVyX3NpemVfYml0cyA+PgogCQkJCVBBR0VfQ0FDSEVfU0hJRlQ7Ci0JLyogRnJlZSBkYXRhIGJsb2NrcyBpbiBmaWxlIHN5c3RlbSBpbiB1bml0cyBvZiBmX2JzaXplLiAqLworCS8qIEZyZWUgZGF0YSBibG9ja3MgaW4gZmlsZXN5c3RlbSBpbiB1bml0cyBvZiBmX2JzaXplLiAqLwogCXNpemUJICAgICAgPSBnZXRfbnJfZnJlZV9jbHVzdGVycyh2b2wpIDw8IHZvbC0+Y2x1c3Rlcl9zaXplX2JpdHMgPj4KIAkJCQlQQUdFX0NBQ0hFX1NISUZUOwogCWlmIChzaXplIDwgMExMKQpAQCAtMjE2Myw3ICsyMTg5LDcgQEAKIAltYXhfaW5kZXggPSAoKCgobWZ0X25pLT5pbml0aWFsaXplZF9zaXplID4+IHZvbC0+bWZ0X3JlY29yZF9zaXplX2JpdHMpCiAJCQkrIDcpID4+IDMpICsgUEFHRV9DQUNIRV9TSVpFIC0gMSkgPj4gUEFHRV9DQUNIRV9TSElGVDsKIAlyZWFkX3VubG9ja19pcnFyZXN0b3JlKCZtZnRfbmktPnNpemVfbG9jaywgZmxhZ3MpOwotCS8qIE51bWJlciBvZiBpbm9kZXMgaW4gZmlsZSBzeXN0ZW0gKGF0IHRoaXMgcG9pbnQgaW4gdGltZSkuICovCisJLyogTnVtYmVyIG9mIGlub2RlcyBpbiBmaWxlc3lzdGVtIChhdCB0aGlzIHBvaW50IGluIHRpbWUpLiAqLwogCXNmcy0+Zl9maWxlcyA9IHNpemU7CiAJLyogRnJlZSBpbm9kZXMgaW4gZnMgKGJhc2VkIG9uIGN1cnJlbnQgdG90YWwgY291bnQpLiAqLwogCXNmcy0+Zl9mZnJlZSA9IF9fZ2V0X25yX2ZyZWVfbWZ0X3JlY29yZHModm9sLCBzaXplLCBtYXhfaW5kZXgpOwpAQCAtMjE3Miw4ICsyMTk4LDggQEAKIAkgKiBGaWxlIHN5c3RlbSBpZC4gVGhpcyBpcyBleHRyZW1lbHkgKm5peCBmbGF2b3VyIGRlcGVuZGVudCBhbmQgZXZlbgogCSAqIHdpdGhpbiBMaW51eCBpdHNlbGYgYWxsIGZzIGRvIHRoZWlyIG93biB0aGluZy4gSSBpbnRlcnByZXQgdGhpcyB0bwogCSAqIG1lYW4gYSB1bmlxdWUgaWQgYXNzb2NpYXRlZCB3aXRoIHRoZSBtb3VudGVkIGZzIGFuZCBub3QgdGhlIGlkCi0JICogYXNzb2NpYXRlZCB3aXRoIHRoZSBmaWxlIHN5c3RlbSBkcml2ZXIsIHRoZSBsYXR0ZXIgaXMgYWxyZWFkeSBnaXZlbgotCSAqIGJ5IHRoZSBmaWxlIHN5c3RlbSB0eXBlIGluIHNmcy0+Zl90eXBlLiBUaHVzIHdlIHVzZSB0aGUgNjQtYml0CisJICogYXNzb2NpYXRlZCB3aXRoIHRoZSBmaWxlc3lzdGVtIGRyaXZlciwgdGhlIGxhdHRlciBpcyBhbHJlYWR5IGdpdmVuCisJICogYnkgdGhlIGZpbGVzeXN0ZW0gdHlwZSBpbiBzZnMtPmZfdHlwZS4gVGh1cyB3ZSB1c2UgdGhlIDY0LWJpdAogCSAqIHZvbHVtZSBzZXJpYWwgbnVtYmVyIHNwbGl0dGluZyBpdCBpbnRvIHR3byAzMi1iaXQgcGFydHMuIFdlIGVudGVyCiAJICogdGhlIGxlYXN0IHNpZ25pZmljYW50IDMyLWJpdHMgaW4gZl9mc2lkWzBdIGFuZCB0aGUgbW9zdCBzaWduaWZpY2FudAogCSAqIDMyLWJpdHMgaW4gZl9mc2lkWzFdLgpAQCAtMjI1OSwxOCArMjI4NSwxOCBAQAogfTsKIAogLyoqCi0gKiBudGZzX2ZpbGxfc3VwZXIgLSBtb3VudCBhbiBudGZzIGZpbGVzIHN5c3RlbQotICogQHNiOgkJc3VwZXIgYmxvY2sgb2YgbnRmcyBmaWxlIHN5c3RlbSB0byBtb3VudAorICogbnRmc19maWxsX3N1cGVyIC0gbW91bnQgYW4gbnRmcyBmaWxlc3lzdGVtCisgKiBAc2I6CQlzdXBlciBibG9jayBvZiBudGZzIGZpbGVzeXN0ZW0gdG8gbW91bnQKICAqIEBvcHQ6CXN0cmluZyBjb250YWluaW5nIHRoZSBtb3VudCBvcHRpb25zCiAgKiBAc2lsZW50OglzaWxlbmNlIGVycm9yIG91dHB1dAogICoKICAqIG50ZnNfZmlsbF9zdXBlcigpIGlzIGNhbGxlZCBieSB0aGUgVkZTIHRvIG1vdW50IHRoZSBkZXZpY2UgZGVzY3JpYmVkIGJ5IEBzYgotICogd2l0aCB0aGUgbW91bnQgb3Rpb25zIGluIEBkYXRhIHdpdGggdGhlIE5URlMgZmlsZSBzeXN0ZW0uCisgKiB3aXRoIHRoZSBtb3VudCBvdGlvbnMgaW4gQGRhdGEgd2l0aCB0aGUgTlRGUyBmaWxlc3lzdGVtLgogICoKICAqIElmIEBzaWxlbnQgaXMgdHJ1ZSwgcmVtYWluIHNpbGVudCBldmVuIGlmIGVycm9ycyBhcmUgZGV0ZWN0ZWQuIFRoaXMgaXMgdXNlZAotICogZHVyaW5nIGJvb3R1cCwgd2hlbiB0aGUga2VybmVsIHRyaWVzIHRvIG1vdW50IHRoZSByb290IGZpbGUgc3lzdGVtIHdpdGggYWxsCi0gKiByZWdpc3RlcmVkIGZpbGUgc3lzdGVtcyBvbmUgYWZ0ZXIgdGhlIG90aGVyIHVudGlsIG9uZSBzdWNjZWVkcy4gVGhpcyBpbXBsaWVzCi0gKiB0aGF0IGFsbCBmaWxlIHN5c3RlbXMgZXhjZXB0IHRoZSBjb3JyZWN0IG9uZSB3aWxsIHF1aXRlIGNvcnJlY3RseSBhbmQKKyAqIGR1cmluZyBib290dXAsIHdoZW4gdGhlIGtlcm5lbCB0cmllcyB0byBtb3VudCB0aGUgcm9vdCBmaWxlc3lzdGVtIHdpdGggYWxsCisgKiByZWdpc3RlcmVkIGZpbGVzeXN0ZW1zIG9uZSBhZnRlciB0aGUgb3RoZXIgdW50aWwgb25lIHN1Y2NlZWRzLiBUaGlzIGltcGxpZXMKKyAqIHRoYXQgYWxsIGZpbGVzeXN0ZW1zIGV4Y2VwdCB0aGUgY29ycmVjdCBvbmUgd2lsbCBxdWl0ZSBjb3JyZWN0bHkgYW5kCiAgKiBleHBlY3RlZGx5IHJldHVybiBhbiBlcnJvciwgYnV0IG5vYm9keSB3YW50cyB0byBzZWUgZXJyb3IgbWVzc2FnZXMgd2hlbiBpbgogICogZmFjdCB0aGlzIGlzIHdoYXQgaXMgc3VwcG9zZWQgdG8gaGFwcGVuLgogICoKQEAgLTIzMzAsNiArMjM1Niw5IEBACiAKIAl1bmxvY2tfa2VybmVsKCk7CiAKKwkvKiBCeSBkZWZhdWx0LCBlbmFibGUgc3BhcnNlIHN1cHBvcnQuICovCisJTlZvbFNldFNwYXJzZUVuYWJsZWQodm9sKTsKKwogCS8qIEltcG9ydGFudCB0byBnZXQgdGhlIG1vdW50IG9wdGlvbnMgZGVhbHQgd2l0aCBub3cuICovCiAJaWYgKCFwYXJzZV9vcHRpb25zKHZvbCwgKGNoYXIqKW9wdCkpCiAJCWdvdG8gZXJyX291dF9ub3c7CkBAIC0yNzExLDcgKzI3NDAsNyBAQAogCQludGZzX2RlYnVnKCJOVEZTIGRyaXZlciByZWdpc3RlcmVkIHN1Y2Nlc3NmdWxseS4iKTsKIAkJcmV0dXJuIDA7IC8qIFN1Y2Nlc3MhICovCiAJfQotCXByaW50ayhLRVJOX0NSSVQgIk5URlM6IEZhaWxlZCB0byByZWdpc3RlciBOVEZTIGZpbGUgc3lzdGVtIGRyaXZlciFcbiIpOworCXByaW50ayhLRVJOX0NSSVQgIk5URlM6IEZhaWxlZCB0byByZWdpc3RlciBOVEZTIGZpbGVzeXN0ZW0gZHJpdmVyIVxuIik7CiAKIHN5c2N0bF9lcnJfb3V0OgogCWttZW1fY2FjaGVfZGVzdHJveShudGZzX2JpZ19pbm9kZV9jYWNoZSk7CkBAIC0yNzI1LDcgKzI3NTQsNyBAQAogCWttZW1fY2FjaGVfZGVzdHJveShudGZzX2luZGV4X2N0eF9jYWNoZSk7CiBpY3R4X2Vycl9vdXQ6CiAJaWYgKCFlcnIpIHsKLQkJcHJpbnRrKEtFUk5fQ1JJVCAiTlRGUzogQWJvcnRpbmcgTlRGUyBmaWxlIHN5c3RlbSBkcml2ZXIgIgorCQlwcmludGsoS0VSTl9DUklUICJOVEZTOiBBYm9ydGluZyBOVEZTIGZpbGVzeXN0ZW0gZHJpdmVyICIKIAkJCQkicmVnaXN0cmF0aW9uLi4uXG4iKTsKIAkJZXJyID0gLUVOT01FTTsKIAl9CkBAIC0yNzY1LDcgKzI3OTQsNyBAQAogfQogCiBNT0RVTEVfQVVUSE9SKCJBbnRvbiBBbHRhcGFybWFrb3YgPGFpYTIxQGNhbnRhYi5uZXQ+Iik7Ci1NT0RVTEVfREVTQ1JJUFRJT04oIk5URlMgMS4yLzMueCBkcml2ZXIgLSBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwNCBBbnRvbiBBbHRhcGFybWFrb3YiKTsKK01PRFVMRV9ERVNDUklQVElPTigiTlRGUyAxLjIvMy54IGRyaXZlciAtIENvcHlyaWdodCAoYykgMjAwMS0yMDA1IEFudG9uIEFsdGFwYXJtYWtvdiIpOwogTU9EVUxFX1ZFUlNJT04oTlRGU19WRVJTSU9OKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKICNpZmRlZiBERUJVRwpkaWZmIC0tZ2l0IGEvZnMvbnRmcy9zeXNjdGwuYyBiL2ZzL250ZnMvc3lzY3RsLmMKaW5kZXggNzUwNjdlNC4uMWMyMzEzOCAxMDA2NDQKLS0tIGEvZnMvbnRmcy9zeXNjdGwuYworKysgYi9mcy9udGZzL3N5c2N0bC5jCkBAIC0zLDcgKzMsNyBAQAogICoJICAgICAgdGhlIExpbnV4LU5URlMgcHJvamVjdC4gQWRhcHRlZCBmcm9tIHRoZSBvbGQgTlRGUyBkcml2ZXIsCiAgKgkgICAgICBDb3B5cmlnaHQgKEMpIDE5OTcgTWFydGluIHZvbiBM9ndpcywgUulnaXMgRHVjaGVzbmUKICAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNCBBbnRvbiBBbHRhcGFybWFrb3YKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IEFudG9uIEFsdGFwYXJtYWtvdgogICoKICAqIFRoaXMgcHJvZ3JhbS9pbmNsdWRlIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKQEAgLTY3LDcgKzY3LDcgQEAKIAkJCXJldHVybiAtRU5PTUVNOwogI2lmZGVmIENPTkZJR19QUk9DX0ZTCiAJCS8qCi0JCSAqIElmIHRoZSBwcm9jIGZpbGUgc3lzdGVtIGlzIGluIHVzZSBhbmQgd2UgYXJlIGEgbW9kdWxlLCBuZWVkCisJCSAqIElmIHRoZSBwcm9jIGZpbGVzeXN0ZW0gaXMgaW4gdXNlIGFuZCB3ZSBhcmUgYSBtb2R1bGUsIG5lZWQKIAkJICogdG8gc2V0IHRoZSBvd25lciBvZiBvdXIgcHJvYyBlbnRyeSB0byBvdXIgbW9kdWxlLiBJbiB0aGUKIAkJICogbm9uLW1vZHVsYXIgY2FzZSwgVEhJU19NT0RVTEUgaXMgTlVMTCwgc28gdGhpcyBpcyBvay4KIAkJICovCmRpZmYgLS1naXQgYS9mcy9udGZzL3ZvbHVtZS5oIGIvZnMvbnRmcy92b2x1bWUuaAppbmRleCA0Yjk3ZmE4Li42MmJlNzNhIDEwMDY0NAotLS0gYS9mcy9udGZzL3ZvbHVtZS5oCisrKyBiL2ZzL250ZnMvdm9sdW1lLmgKQEAgLTIsNyArMiw3IEBACiAgKiB2b2x1bWUuaCAtIERlZmluZXMgZm9yIHZvbHVtZSBzdHJ1Y3R1cmVzIGluIE5URlMgTGludXgga2VybmVsIGRyaXZlci4gUGFydAogICoJICAgICAgb2YgdGhlIExpbnV4LU5URlMgcHJvamVjdC4KICAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwNCBBbnRvbiBBbHRhcGFybWFrb3YKKyAqIENvcHlyaWdodCAoYykgMjAwMS0yMDA1IEFudG9uIEFsdGFwYXJtYWtvdgogICogQ29weXJpZ2h0IChjKSAyMDAyIFJpY2hhcmQgUnVzc29uCiAgKgogICogVGhpcyBwcm9ncmFtL2luY2x1ZGUgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTU0LDcgKzU0LDcgQEAKIAltb2RlX3QgZG1hc2s7CQkJLyogVGhlIG1hc2sgZm9yIGRpcmVjdG9yeQogCQkJCQkgICBwZXJtaXNzaW9ucy4gKi8KIAl1OCBtZnRfem9uZV9tdWx0aXBsaWVyOwkJLyogSW5pdGlhbCBtZnQgem9uZSBtdWx0aXBsaWVyLiAqLwotCXU4IG9uX2Vycm9yczsJCQkvKiBXaGF0IHRvIGRvIG9uIGZpbGUgc3lzdGVtIGVycm9ycy4gKi8KKwl1OCBvbl9lcnJvcnM7CQkJLyogV2hhdCB0byBkbyBvbiBmaWxlc3lzdGVtIGVycm9ycy4gKi8KIAkvKiBOVEZTIGJvb3RzZWN0b3IgcHJvdmlkZWQgaW5mb3JtYXRpb24uICovCiAJdTE2IHNlY3Rvcl9zaXplOwkJLyogaW4gYnl0ZXMgKi8KIAl1OCBzZWN0b3Jfc2l6ZV9iaXRzOwkJLyogbG9nMihzZWN0b3Jfc2l6ZSkgKi8KQEAgLTE0MSw2ICsxNDEsNyBAQAogCQkJCSAgICAgIGZpbGUgbmFtZXMgaW4gV0lOMzIgbmFtZXNwYWNlLiAqLwogCU5WX0xvZ0ZpbGVFbXB0eSwJLyogMTogJExvZ0ZpbGUgam91cm5hbCBpcyBlbXB0eS4gKi8KIAlOVl9RdW90YU91dE9mRGF0ZSwJLyogMTogJFF1b3RhIGlzIG91dCBvZiBkYXRlLiAqLworCU5WX1NwYXJzZUVuYWJsZWQsCS8qIDE6IE1heSBjcmVhdGUgc3BhcnNlIGZpbGVzLiAqLwogfSBudGZzX3ZvbHVtZV9mbGFnczsKIAogLyoKQEAgLTE2Nyw1ICsxNjgsNiBAQAogTlZPTF9GTlMoQ2FzZVNlbnNpdGl2ZSkKIE5WT0xfRk5TKExvZ0ZpbGVFbXB0eSkKIE5WT0xfRk5TKFF1b3RhT3V0T2ZEYXRlKQorTlZPTF9GTlMoU3BhcnNlRW5hYmxlZCkKIAogI2VuZGlmIC8qIF9MSU5VWF9OVEZTX1ZPTFVNRV9IICovCg==