svn commit: r253680 - in head: lib/libfetch usr.bin/fetch

看板FB_svn作者時間12年前 (2013/07/27 02:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/3 (看更多)
QXV0aG9yOiBkZXMKRGF0ZTogRnJpIEp1bCAyNiAxNTo1Mzo0MyAyMDEzCk5ldyBSZXZpc2lvbjog MjUzNjgwClVSTDogaHR0cDovL3N2bndlYi5mcmVlYnNkLm9yZy9jaGFuZ2VzZXQvYmFzZS8yNTM2 ODAKCkxvZzoKICBJbXBsZW1lbnQgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uLCBhbmQgbWFueSBv dGhlciBTU0wtcmVsYXRlZAogIGltcm92ZW1lbnRzOyBjb21wbGV0ZSBkZXRhaWxzIGluIHRoZSBQ Ui4KICAKICBQUjoJCWtlcm4vMTc1NTE0CiAgU3VibWl0dGVkIGJ5OglNaWNoYWVsIEdtZWxpbiA8 ZnJlZWJzZEBncmVtLmRlPgogIE1GQyBhZnRlcjoJMSB3ZWVrCgpNb2RpZmllZDoKICBoZWFkL2xp Yi9saWJmZXRjaC9jb21tb24uYwogIGhlYWQvbGliL2xpYmZldGNoL2NvbW1vbi5oCiAgaGVhZC9s aWIvbGliZmV0Y2gvZmV0Y2guMwogIGhlYWQvbGliL2xpYmZldGNoL2h0dHAuYwogIGhlYWQvdXNy LmJpbi9mZXRjaC9mZXRjaC4xCiAgaGVhZC91c3IuYmluL2ZldGNoL2ZldGNoLmMKCk1vZGlmaWVk OiBoZWFkL2xpYi9saWJmZXRjaC9jb21tb24uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGhl YWQvbGliL2xpYmZldGNoL2NvbW1vbi5jCUZyaSBKdWwgMjYgMTQ6NDM6MzggMjAxMwkocjI1MzY3 OSkKKysrIGhlYWQvbGliL2xpYmZldGNoL2NvbW1vbi5jCUZyaSBKdWwgMjYgMTU6NTM6NDMgMjAx MwkocjI1MzY4MCkKQEAgLTEsNSArMSw2IEBACiAvKi0KICAqIENvcHlyaWdodCAoYykgMTk5OC0y MDExIERhZy1FcmxpbmcgU23DuHJncmF2CisgKiBDb3B5cmlnaHQgKGMpIDIwMTMgTWljaGFlbCBH bWVsaW4gPGZyZWVic2RAZ3JlbS5kZT4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv ciB3aXRob3V0CkBAIC00Nyw2ICs0OCwxMCBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAjaW5j bHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAKKyNpZmRlZiBXSVRIX1NTTAor I2luY2x1ZGUgPG9wZW5zc2wveDUwOXYzLmg+CisjZW5kaWYKKwogI2luY2x1ZGUgImZldGNoLmgi CiAjaW5jbHVkZSAiY29tbW9uLmgiCiAKQEAgLTMxNywxNSArMzIyLDQ4OCBAQCBmZXRjaF9jb25u ZWN0KGNvbnN0IGNoYXIgKmhvc3QsIGludCBwb3J0CiAJcmV0dXJuIChjb25uKTsKIH0KIAorI2lm ZGVmIFdJVEhfU1NMCisvKgorICogQ29udmVydCBjaGFyYWN0ZXJzIEEtWiB0byBsb3dlcmNhc2Ug KGludGVudGlvbmFsbHkgYXZvaWQgYW55IGxvY2FsZQorICogc3BlY2lmaWMgY29udmVyc2lvbnMp LgorICovCitzdGF0aWMgY2hhcgorZmV0Y2hfc3NsX3RvbG93ZXIoY2hhciBpbikKK3sKKwlpZiAo aW4gPj0gJ0EnICYmIGluIDw9ICdaJykKKwkJcmV0dXJuIChpbiArIDMyKTsKKwllbHNlCisJCXJl dHVybiAoaW4pOworfQorCisvKgorICogaXNhbHBoYSBpbXBsZW1lbnRhdGlvbiB0aGF0IGludGVu dGlvbmFsbHkgYXZvaWRzIGFueSBsb2NhbGUgc3BlY2lmaWMKKyAqIGNvbnZlcnNpb25zLgorICov CitzdGF0aWMgaW50CitmZXRjaF9zc2xfaXNhbHBoYShjaGFyIGluKQoreworCXJldHVybiAoKGlu ID49ICdBJyAmJiBpbiA8PSAnWicpIHx8IChpbiA+PSAnYScgJiYgaW4gPD0gJ3onKSk7Cit9CisK Ky8qCisgKiBDaGVjayBpZiBwYXNzZWQgaG9zdG5hbWVzIGEgYW5kIGIgYXJlIGVxdWFsLgorICov CitzdGF0aWMgaW50CitmZXRjaF9zc2xfaG5hbWVfZXF1YWwoY29uc3QgY2hhciAqYSwgc2l6ZV90 IGFsZW4sIGNvbnN0IGNoYXIgKmIsCisgICAgc2l6ZV90IGJsZW4pCit7CisJc2l6ZV90IGk7CisK KwlpZiAoYWxlbiAhPSBibGVuKQorCQlyZXR1cm4gKDApOworCWZvciAoaSA9IDA7IGkgPCBhbGVu OyArK2kpIHsKKwkJaWYgKGZldGNoX3NzbF90b2xvd2VyKGFbaV0pICE9IGZldGNoX3NzbF90b2xv d2VyKGJbaV0pKQorCQkJcmV0dXJuICgwKTsKKwl9CisJcmV0dXJuICgxKTsKK30KKworLyoKKyAq IENoZWNrIGlmIGRvbWFpbiBsYWJlbCBpcyB0cmFkaXRpb25hbCwgbWVhbmluZyB0aGF0IG9ubHkg QS1aLCBhLXosIDAtOQorICogYW5kICctJyAoaHlwaGVuKSBhcmUgYWxsb3dlZC4gSHlwaGVucyBo YXZlIHRvIGJlIHN1cnJvdW5kZWQgYnkgYWxwaGEtCisgKiBudW1lcmljIGNoYXJhY3RlcnMuIERv dWJsZSBoeXBoZW5zIChsaWtlIHRoZXkncmUgZm91bmQgaW4gSUROIGEtbGFiZWxzCisgKiAneG4t LScpIGFyZSBub3QgYWxsb3dlZC4gRW1wdHkgbGFiZWxzIGFyZSBpbnZhbGlkLgorICovCitzdGF0 aWMgaW50CitmZXRjaF9zc2xfaXNfdHJhZF9kb21haW5fbGFiZWwoY29uc3QgY2hhciAqbCwgc2l6 ZV90IGxlbiwgaW50IHdjb2spCit7CisJc2l6ZV90IGk7CisKKwlpZiAoIWxlbiB8fCBsWzBdID09 ICctJyB8fCBsW2xlbi0xXSA9PSAnLScpCisJCXJldHVybiAoMCk7CisJZm9yIChpID0gMDsgaSA8 IGxlbjsgKytpKSB7CisJCWlmICghaXNkaWdpdChsW2ldKSAmJgorCQkgICAgIWZldGNoX3NzbF9p c2FscGhhKGxbaV0pICYmCisJCSAgICAhKGxbaV0gPT0gJyonICYmIHdjb2spICYmCisJCSAgICAh KGxbaV0gPT0gJy0nICYmIGxbaSAtIDFdICE9ICctJykpCisJCQlyZXR1cm4gKDApOworCX0KKwly ZXR1cm4gKDEpOworfQorCisvKgorICogQ2hlY2sgaWYgaG9zdCBuYW1lIGNvbnNpc3RzIG9ubHkg b2YgbnVtYmVycy4gVGhpcyBtaWdodCBpbmRpY2F0ZSBhbiBJUAorICogYWRkcmVzcywgd2hpY2gg aXMgbm90IGEgZ29vZCBpZGVhIGZvciBDTiB3aWxkY2FyZCBjb21wYXJpc29uLgorICovCitzdGF0 aWMgaW50CitmZXRjaF9zc2xfaG5hbWVfaXNfb25seV9udW1iZXJzKGNvbnN0IGNoYXIgKmhvc3Ru YW1lLCBzaXplX3QgbGVuKQoreworCXNpemVfdCBpOworCisJZm9yIChpID0gMDsgaSA8IGxlbjsg KytpKSB7CisJCWlmICghKChob3N0bmFtZVtpXSA+PSAnMCcgJiYgaG9zdG5hbWVbaV0gPD0gJzkn KSB8fAorCQkgICAgaG9zdG5hbWVbaV0gPT0gJy4nKSkKKwkJCXJldHVybiAoMCk7CisJfQorCXJl dHVybiAoMSk7Cit9CisKKy8qCisgKiBDaGVjayBpZiB0aGUgaG9zdCBuYW1lIGggcGFzc2VkIG1h dGNoZXMgdGhlIHBhdHRlcm4gcGFzc2VkIGluIG0gd2hpY2gKKyAqIGlzIHVzdWFsbHkgcGFydCBv ZiBzdWJqZWN0QWx0TmFtZSBvciBDTiBvZiBhIGNlcnRpZmljYXRlIHByZXNlbnRlZCB0bworICog dGhlIGNsaWVudC4gVGhpcyBpbmNsdWRlcyB3aWxkY2FyZCBtYXRjaGluZy4gVGhlIGFsZ29yaXRo bSBpcyBiYXNlZCBvbgorICogUkZDNjEyNSwgc2VjdGlvbnMgNi40LjMgYW5kIDcuMiwgd2hpY2gg Y2xhcmlmaWVzIFJGQzI4MTggYW5kIFJGQzMyODAuCisgKi8KK3N0YXRpYyBpbnQKK2ZldGNoX3Nz bF9obmFtZV9tYXRjaChjb25zdCBjaGFyICpoLCBzaXplX3QgaGxlbiwgY29uc3QgY2hhciAqbSwK KyAgICBzaXplX3QgbWxlbikKK3sKKwlpbnQgZGVsdGEsIGhkb3RpZHgsIG1kb3QxaWR4LCB3Y2lk eDsKKwljb25zdCBjaGFyICpoZG90LCAqbWRvdDEsICptZG90MjsKKwljb25zdCBjaGFyICp3Yzsg Lyogd2lsZGNhcmQgKi8KKworCWlmICghKGggJiYgKmggJiYgbSAmJiAqbSkpCisJCXJldHVybiAo MCk7CisJaWYgKCh3YyA9IHN0cm5zdHIobSwgIioiLCBtbGVuKSkgPT0gTlVMTCkKKwkJcmV0dXJu IChmZXRjaF9zc2xfaG5hbWVfZXF1YWwoaCwgaGxlbiwgbSwgbWxlbikpOworCXdjaWR4ID0gd2Mg LSBtOworCS8qIGhvc3RuYW1lIHNob3VsZCBub3QgYmUganVzdCBkb3RzIGFuZCBudW1iZXJzICov CisJaWYgKGZldGNoX3NzbF9obmFtZV9pc19vbmx5X251bWJlcnMoaCwgaGxlbikpCisJCXJldHVy biAoMCk7CisJLyogb25seSBvbmUgd2lsZGNhcmQgYWxsb3dlZCBpbiBwYXR0ZXJuICovCisJaWYg KHN0cm5zdHIod2MgKyAxLCAiKiIsIG1sZW4gLSB3Y2lkeCAtIDEpICE9IE5VTEwpCisJCXJldHVy biAoMCk7CisJLyoKKwkgKiB0aGVyZSBtdXN0IGJlIGF0IGxlYXN0IHR3byBtb3JlIGRvbWFpbiBs YWJlbHMgYW5kCisJICogd2lsZGNhcmQgaGFzIHRvIGJlIGluIHRoZSBsZWZ0bW9zdCBsYWJlbCAo UkZDNjEyNSkKKwkgKi8KKwltZG90MSA9IHN0cm5zdHIobSwgIi4iLCBtbGVuKTsKKwlpZiAobWRv dDEgPT0gTlVMTCB8fCBtZG90MSA8IHdjIHx8IChtbGVuIC0gKG1kb3QxIC0gbSkpIDwgNCkKKwkJ cmV0dXJuICgwKTsKKwltZG90MWlkeCA9IG1kb3QxIC0gbTsKKwltZG90MiA9IHN0cm5zdHIobWRv dDEgKyAxLCAiLiIsIG1sZW4gLSBtZG90MWlkeCAtIDEpOworCWlmIChtZG90MiA9PSBOVUxMIHx8 IChtbGVuIC0gKG1kb3QyIC0gbSkpIDwgMikKKwkJcmV0dXJuICgwKTsKKwkvKiBob3N0bmFtZSBt dXN0IGNvbnRhaW4gYSBkb3QgYW5kIG5vdCBiZSB0aGUgMXN0IGNoYXIgKi8KKwloZG90ID0gc3Ry bnN0cihoLCAiLiIsIGhsZW4pOworCWlmIChoZG90ID09IE5VTEwgfHwgaGRvdCA9PSBoKQorCQly ZXR1cm4gKDApOworCWhkb3RpZHggPSBoZG90IC0gaDsKKwkvKgorCSAqIGhvc3QgcGFydCBvZiBo b3N0bmFtZSBtdXN0IGJlIGF0IGxlYXN0IGFzIGxvbmcgYXMKKwkgKiBwYXR0ZXJuIGl0J3Mgc3Vw cG9zZWQgdG8gbWF0Y2gKKwkgKi8KKwlpZiAoaGRvdGlkeCA8IG1kb3QxaWR4KQorCQlyZXR1cm4g KDApOworCS8qCisJICogZG9uJ3QgYWxsb3cgd2lsZGNhcmRzIGluIG5vbi10cmFkaXRpb25hbCBk b21haW4gbmFtZXMKKwkgKiAoSUROLCBBLWxhYmVsLCBVLWxhYmVsLi4uKQorCSAqLworCWlmICgh ZmV0Y2hfc3NsX2lzX3RyYWRfZG9tYWluX2xhYmVsKGgsIGhkb3RpZHgsIDApIHx8CisJICAgICFm ZXRjaF9zc2xfaXNfdHJhZF9kb21haW5fbGFiZWwobSwgbWRvdDFpZHgsIDEpKQorCQlyZXR1cm4g KDApOworCS8qIG1hdGNoIGRvbWFpbiBwYXJ0IChwYXJ0IGFmdGVyIGZpcnN0IGRvdCkgKi8KKwlp ZiAoIWZldGNoX3NzbF9obmFtZV9lcXVhbChoZG90LCBobGVuIC0gaGRvdGlkeCwgbWRvdDEsCisJ ICAgIG1sZW4gLSBtZG90MWlkeCkpCisJCXJldHVybiAoMCk7CisJLyogbWF0Y2ggcGFydCBsZWZ0 IG9mIHdpbGRjYXJkICovCisJaWYgKCFmZXRjaF9zc2xfaG5hbWVfZXF1YWwoaCwgd2NpZHgsIG0s IHdjaWR4KSkKKwkJcmV0dXJuICgwKTsKKwkvKiBtYXRjaCBwYXJ0IHJpZ2h0IG9mIHdpbGRjYXJk ICovCisJZGVsdGEgPSBtZG90MWlkeCAtIHdjaWR4IC0gMTsKKwlpZiAoIWZldGNoX3NzbF9obmFt ZV9lcXVhbChoZG90IC0gZGVsdGEsIGRlbHRhLAorCSAgICBtZG90MSAtIGRlbHRhLCBkZWx0YSkp CisJCXJldHVybiAoMCk7CisJLyogYWxsIHRlc3RzIHN1Y2NlZGVkLCBpdCdzIGEgbWF0Y2ggKi8K KwlyZXR1cm4gKDEpOworfQorCisvKgorICogR2V0IG51bWVyaWMgaG9zdCBhZGRyZXNzIGluZm8g LSByZXR1cm5zIE5VTEwgaWYgaG9zdCB3YXMgbm90IGFuIElQCisgKiBhZGRyZXNzLiBUaGUgY2Fs bGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkZWFsbG9jYXRpb24gdXNpbmcKKyAqIGZyZWVhZGRyaW5m bygzKS4KKyAqLworc3RhdGljIHN0cnVjdCBhZGRyaW5mbyAqCitmZXRjaF9zc2xfZ2V0X251bWVy aWNfYWRkcmluZm8oY29uc3QgY2hhciAqaG9zdG5hbWUsIHNpemVfdCBsZW4pCit7CisJc3RydWN0 IGFkZHJpbmZvIGhpbnRzLCAqcmVzOworCWNoYXIgKmhvc3Q7CisKKwlob3N0ID0gKGNoYXIgKilt YWxsb2MobGVuICsgMSk7CisJbWVtY3B5KGhvc3QsIGhvc3RuYW1lLCBsZW4pOworCWhvc3RbbGVu XSA9ICdcMCc7CisJbWVtc2V0KCZoaW50cywgMCwgc2l6ZW9mKGhpbnRzKSk7CisJaGludHMuYWlf ZmFtaWx5ID0gUEZfVU5TUEVDOworCWhpbnRzLmFpX3NvY2t0eXBlID0gU09DS19TVFJFQU07CisJ aGludHMuYWlfcHJvdG9jb2wgPSAwOworCWhpbnRzLmFpX2ZsYWdzID0gQUlfTlVNRVJJQ0hPU1Q7 CisJLyogcG9ydCBpcyBub3QgcmVsZXZhbnQgZm9yIHRoaXMgcHVycG9zZSAqLworCWdldGFkZHJp bmZvKGhvc3QsICI0NDMiLCAmaGludHMsICZyZXMpOworCWZyZWUoaG9zdCk7CisJcmV0dXJuIHJl czsKK30KKworLyoKKyAqIENvbXBhcmUgaXAgYWRkcmVzcyBpbiBhZGRyaW5mbyB3aXRoIGFkZHJl c3MgcGFzc2VzLgorICovCitzdGF0aWMgaW50CitmZXRjaF9zc2xfaXBhZGRyX21hdGNoX2Jpbihj b25zdCBzdHJ1Y3QgYWRkcmluZm8gKmxob3N0LCBjb25zdCBjaGFyICpyaG9zdCwKKyAgICBzaXpl X3Qgcmhvc3RsZW4pCit7CisJY29uc3Qgdm9pZCAqbGVmdDsKKworCWlmIChsaG9zdC0+YWlfZmFt aWx5ID09IEFGX0lORVQgJiYgcmhvc3RsZW4gPT0gNCkgeworCQlsZWZ0ID0gKHZvaWQgKikmKChz dHJ1Y3Qgc29ja2FkZHJfaW4qKSh2b2lkICopCisJCSAgICBsaG9zdC0+YWlfYWRkciktPnNpbl9h ZGRyLnNfYWRkcjsKKyNpZmRlZiBJTkVUNgorCX0gZWxzZSBpZiAobGhvc3QtPmFpX2ZhbWlseSA9 PSBBRl9JTkVUNiAmJiByaG9zdGxlbiA9PSAxNikgeworCQlsZWZ0ID0gKHZvaWQgKikmKChzdHJ1 Y3Qgc29ja2FkZHJfaW42ICopKHZvaWQgKikKKwkJICAgIGxob3N0LT5haV9hZGRyKS0+c2luNl9h ZGRyOworI2VuZGlmCisJfSBlbHNlCisJCXJldHVybiAoMCk7CisJcmV0dXJuICghbWVtY21wKGxl ZnQsIChjb25zdCB2b2lkICopcmhvc3QsIHJob3N0bGVuKSA/IDEgOiAwKTsKK30KKworLyoKKyAq IENvbXBhcmUgaXAgYWRkcmVzcyBpbiBhZGRyaW5mbyB3aXRoIGhvc3QgcGFzc2VkLiBJZiBob3N0 IGlzIG5vdCBhbiBJUAorICogYWRkcmVzcywgY29tcGFyaXNvbiB3aWxsIGZhaWwuCisgKi8KK3N0 YXRpYyBpbnQKK2ZldGNoX3NzbF9pcGFkZHJfbWF0Y2goY29uc3Qgc3RydWN0IGFkZHJpbmZvICps YWRkciwgY29uc3QgY2hhciAqciwKKyAgICBzaXplX3QgcmxlbikKK3sKKwlzdHJ1Y3QgYWRkcmlu Zm8gKnJhZGRyOworCWludCByZXQ7CisJY2hhciAqcmlwOworCisJcmV0ID0gMDsKKwlpZiAoKHJh ZGRyID0gZmV0Y2hfc3NsX2dldF9udW1lcmljX2FkZHJpbmZvKHIsIHJsZW4pKSA9PSBOVUxMKQor CQlyZXR1cm4gMDsgLyogbm90IGEgbnVtZXJpYyBob3N0ICovCisKKwlpZiAobGFkZHItPmFpX2Zh bWlseSA9PSByYWRkci0+YWlfZmFtaWx5KSB7CisJCWlmIChsYWRkci0+YWlfZmFtaWx5ID09IEFG X0lORVQpIHsKKwkJCXJpcCA9IChjaGFyICopJigoc3RydWN0IHNvY2thZGRyX2luICopKHZvaWQg KikKKwkJCSAgICByYWRkci0+YWlfYWRkciktPnNpbl9hZGRyLnNfYWRkcjsKKwkJCXJldCA9IGZl dGNoX3NzbF9pcGFkZHJfbWF0Y2hfYmluKGxhZGRyLCByaXAsIDQpOworI2lmZGVmIElORVQ2CisJ CX0gZWxzZSBpZiAobGFkZHItPmFpX2ZhbWlseSA9PSBBRl9JTkVUNikgeworCQkJcmlwID0gKGNo YXIgKikmKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopKHZvaWQgKikKKwkJCSAgICByYWRkci0+YWlf YWRkciktPnNpbjZfYWRkcjsKKwkJCXJldCA9IGZldGNoX3NzbF9pcGFkZHJfbWF0Y2hfYmluKGxh ZGRyLCByaXAsIDE2KTsKKyNlbmRpZgorCQl9CisKKwl9CisJZnJlZWFkZHJpbmZvKHJhZGRyKTsK KwlyZXR1cm4gKHJldCk7Cit9CisKKy8qCisgKiBWZXJpZnkgc2VydmVyIGNlcnRpZmljYXRlIGJ5 IHN1YmplY3RBbHROYW1lLgorICovCitzdGF0aWMgaW50CitmZXRjaF9zc2xfdmVyaWZ5X2FsdG5h bWUoU1RBQ0tfT0YoR0VORVJBTF9OQU1FKSAqYWx0bmFtZXMsCisgICAgY29uc3QgY2hhciAqaG9z dCwgc3RydWN0IGFkZHJpbmZvICppcCkKK3sKKwljb25zdCBHRU5FUkFMX05BTUUgKm5hbWU7CisJ c2l6ZV90IG5zbGVuOworCWludCBpOworCWNvbnN0IGNoYXIgKm5zOworCisJZm9yIChpID0gMDsg aSA8IHNrX0dFTkVSQUxfTkFNRV9udW0oYWx0bmFtZXMpOyArK2kpIHsKKyNpZiBPUEVOU1NMX1ZF UlNJT05fTlVNQkVSIDwgMHgxMDAwMDAwMEwKKwkJLyoKKwkJICogVGhpcyBpcyBhIHdvcmthcm91 bmQsIHNpbmNlIHRoZSBmb2xsb3dpbmcgbGluZSBjYXVzZXMKKwkJICogYWxpZ25tZW50IGlzc3Vl cyBpbiBjbGFuZzoKKwkJICogbmFtZSA9IHNrX0dFTkVSQUxfTkFNRV92YWx1ZShhbHRuYW1lcywg aSk7CisJCSAqIE9wZW5TU0wgZXhwbGljaXRseSB3YXJucyBub3QgdG8gdXNlIHRob3NlIG1hY3Jv cworCQkgKiBkaXJlY3RseSwgYnV0IHRoZXJlIGlzbid0IG11Y2ggY2hvaWNlIChhbmQgdGhlcmUK KwkJICogc2hvdWxkbid0IGJlIGFueSBpbGwgc2lkZSBlZmZlY3RzKQorCQkgKi8KKwkJbmFtZSA9 IChHRU5FUkFMX05BTUUgKilTS01fc2tfdmFsdWUodm9pZCwgYWx0bmFtZXMsIGkpOworI2Vsc2UK KwkJbmFtZSA9IHNrX0dFTkVSQUxfTkFNRV92YWx1ZShhbHRuYW1lcywgaSk7CisjZW5kaWYKKwkJ bnMgPSAoY29uc3QgY2hhciAqKUFTTjFfU1RSSU5HX2RhdGEobmFtZS0+ZC5pYTUpOworCQluc2xl biA9IChzaXplX3QpQVNOMV9TVFJJTkdfbGVuZ3RoKG5hbWUtPmQuaWE1KTsKKworCQlpZiAobmFt ZS0+dHlwZSA9PSBHRU5fRE5TICYmIGlwID09IE5VTEwgJiYKKwkJICAgIGZldGNoX3NzbF9obmFt ZV9tYXRjaChob3N0LCBzdHJsZW4oaG9zdCksIG5zLCBuc2xlbikpCisJCQlyZXR1cm4gKDEpOwor CQllbHNlIGlmIChuYW1lLT50eXBlID09IEdFTl9JUEFERCAmJiBpcCAhPSBOVUxMICYmCisJCSAg ICBmZXRjaF9zc2xfaXBhZGRyX21hdGNoX2JpbihpcCwgbnMsIG5zbGVuKSkKKwkJCXJldHVybiAo MSk7CisJfQorCXJldHVybiAoMCk7Cit9CisKKy8qCisgKiBWZXJpZnkgc2VydmVyIGNlcnRpZmlj YXRlIGJ5IENOLgorICovCitzdGF0aWMgaW50CitmZXRjaF9zc2xfdmVyaWZ5X2NuKFg1MDlfTkFN RSAqc3ViamVjdCwgY29uc3QgY2hhciAqaG9zdCwKKyAgICBzdHJ1Y3QgYWRkcmluZm8gKmlwKQor eworCUFTTjFfU1RSSU5HICpuYW1lZGF0YTsKKwlYNTA5X05BTUVfRU5UUlkgKm5hbWVlbnRyeTsK KwlpbnQgY25sZW4sIGxhc3Rwb3MsIGxvYywgcmV0OworCXVuc2lnbmVkIGNoYXIgKmNuOworCisJ cmV0ID0gMDsKKwlsYXN0cG9zID0gLTE7CisJbG9jID0gLTE7CisJY24gPSBOVUxMOworCS8qIGdl dCBtb3N0IHNwZWNpZmljIENOIChsYXN0IGVudHJ5IGluIGxpc3QpIGFuZCBjb21wYXJlICovCisJ d2hpbGUgKChsYXN0cG9zID0gWDUwOV9OQU1FX2dldF9pbmRleF9ieV9OSUQoc3ViamVjdCwKKwkg ICAgTklEX2NvbW1vbk5hbWUsIGxhc3Rwb3MpKSAhPSAtMSkKKwkJbG9jID0gbGFzdHBvczsKKwor CWlmIChsb2MgPiAtMSkgeworCQluYW1lZW50cnkgPSBYNTA5X05BTUVfZ2V0X2VudHJ5KHN1Ympl Y3QsIGxvYyk7CisJCW5hbWVkYXRhID0gWDUwOV9OQU1FX0VOVFJZX2dldF9kYXRhKG5hbWVlbnRy eSk7CisJCWNubGVuID0gQVNOMV9TVFJJTkdfdG9fVVRGOCgmY24sIG5hbWVkYXRhKTsKKwkJaWYg KGlwID09IE5VTEwgJiYKKwkJICAgIGZldGNoX3NzbF9obmFtZV9tYXRjaChob3N0LCBzdHJsZW4o aG9zdCksIGNuLCBjbmxlbikpCisJCQlyZXQgPSAxOworCQllbHNlIGlmIChpcCAhPSBOVUxMICYm IGZldGNoX3NzbF9pcGFkZHJfbWF0Y2goaXAsIGNuLCBjbmxlbikpCisJCQlyZXQgPSAxOworCQlP UEVOU1NMX2ZyZWUoY24pOworCX0KKwlyZXR1cm4gKHJldCk7Cit9CisKKy8qCisgKiBWZXJpZnkg dGhhdCBzZXJ2ZXIgY2VydGlmaWNhdGUgc3ViamVjdEFsdE5hbWUvQ04gbWF0Y2hlcworICogaG9z dG5hbWUuIEZpcnN0IGNoZWNrLCBpZiB0aGVyZSBhcmUgYWx0ZXJuYXRpdmUgc3ViamVjdCBuYW1l cy4gSWYgeWVzLAorICogdGhvc2UgaGF2ZSB0byBtYXRjaC4gT25seSBpZiB0aG9zZSBkb24ndCBl eGlzdCBpdCBmYWxscyBiYWNrIHRvCisgKiBjaGVja2luZyB0aGUgc3ViamVjdCdzIENOLgorICov CitzdGF0aWMgaW50CitmZXRjaF9zc2xfdmVyaWZ5X2huYW1lKFg1MDkgKmNlcnQsIGNvbnN0IGNo YXIgKmhvc3QpCit7CisJc3RydWN0IGFkZHJpbmZvICppcDsKKwlTVEFDS19PRihHRU5FUkFMX05B TUUpICphbHRuYW1lczsKKwlYNTA5X05BTUUgKnN1YmplY3Q7CisJaW50IHJldDsJCisKKwlyZXQg PSAwOworCWlwID0gZmV0Y2hfc3NsX2dldF9udW1lcmljX2FkZHJpbmZvKGhvc3QsIHN0cmxlbiho b3N0KSk7CisJYWx0bmFtZXMgPSBYNTA5X2dldF9leHRfZDJpKGNlcnQsIE5JRF9zdWJqZWN0X2Fs dF9uYW1lLAorCSAgICBOVUxMLCBOVUxMKTsKKworCWlmIChhbHRuYW1lcyAhPSBOVUxMKSB7CisJ CXJldCA9IGZldGNoX3NzbF92ZXJpZnlfYWx0bmFtZShhbHRuYW1lcywgaG9zdCwgaXApOworCX0g ZWxzZSB7CisJCXN1YmplY3QgPSBYNTA5X2dldF9zdWJqZWN0X25hbWUoY2VydCk7CisJCWlmIChz dWJqZWN0ICE9IE5VTEwpCisJCQlyZXQgPSBmZXRjaF9zc2xfdmVyaWZ5X2NuKHN1YmplY3QsIGhv c3QsIGlwKTsKKwl9CisKKwlpZiAoaXAgIT0gTlVMTCkKKwkJZnJlZWFkZHJpbmZvKGlwKTsKKwlp ZiAoYWx0bmFtZXMgIT0gTlVMTCkKKwkJR0VORVJBTF9OQU1FU19mcmVlKGFsdG5hbWVzKTsKKwly ZXR1cm4gKHJldCk7Cit9CisKKy8qCisgKiBDb25maWd1cmUgdHJhbnNwb3J0IHNlY3VyaXR5IGxh eWVyIGJhc2VkIG9uIGVudmlyb25tZW50LgorICovCitzdGF0aWMgdm9pZAorZmV0Y2hfc3NsX3Nl dHVwX3RyYW5zcG9ydF9sYXllcihTU0xfQ1RYICpjdHgsIGludCB2ZXJib3NlKQoreworCWxvbmcg c3NsX2N0eF9vcHRpb25zOworCisJc3NsX2N0eF9vcHRpb25zID0gU1NMX09QX0FMTCB8IFNTTF9P UF9OT19USUNLRVQ7CisJaWYgKGdldGVudigiU1NMX0FMTE9XX1NTTDIiKSA9PSBOVUxMKQorCQlz c2xfY3R4X29wdGlvbnMgfD0gU1NMX09QX05PX1NTTHYyOworCWlmIChnZXRlbnYoIlNTTF9OT19T U0wzIikgIT0gTlVMTCkKKwkJc3NsX2N0eF9vcHRpb25zIHw9IFNTTF9PUF9OT19TU0x2MzsKKwlp ZiAoZ2V0ZW52KCJTU0xfTk9fVExTMSIpICE9IE5VTEwpCisJCXNzbF9jdHhfb3B0aW9ucyB8PSBT U0xfT1BfTk9fVExTdjE7CisJaWYgKHZlcmJvc2UpCisJCWZldGNoX2luZm8oIlNTTCBvcHRpb25z OiAleCIsIHNzbF9jdHhfb3B0aW9ucyk7CisJU1NMX0NUWF9zZXRfb3B0aW9ucyhjdHgsIHNzbF9j dHhfb3B0aW9ucyk7Cit9CisKKworLyoKKyAqIENvbmZpZ3VyZSBwZWVyIHZlcmlmaWNhdGlvbiBi YXNlZCBvbiBlbnZpcm9ubWVudC4KKyAqLworc3RhdGljIGludAorZmV0Y2hfc3NsX3NldHVwX3Bl ZXJfdmVyaWZpY2F0aW9uKFNTTF9DVFggKmN0eCwgaW50IHZlcmJvc2UpCit7CisJWDUwOV9MT09L VVAgKmNybF9sb29rdXA7CisJWDUwOV9TVE9SRSAqY3JsX3N0b3JlOworCWNvbnN0IGNoYXIgKmNh X2NlcnRfZmlsZSwgKmNhX2NlcnRfcGF0aCwgKmNybF9maWxlOworCisJaWYgKGdldGVudigiU1NM X05PX1ZFUklGWV9QRUVSIikgPT0gTlVMTCkgeworCQljYV9jZXJ0X2ZpbGUgPSBnZXRlbnYoIlNT TF9DQV9DRVJUX0ZJTEUiKSAhPSBOVUxMID8KKwkJICAgIGdldGVudigiU1NMX0NBX0NFUlRfRklM RSIpIDogIi9ldGMvc3NsL2NlcnQucGVtIjsKKwkJY2FfY2VydF9wYXRoID0gZ2V0ZW52KCJTU0xf Q0FfQ0VSVF9QQVRIIik7CisJCWlmICh2ZXJib3NlKSB7CisJCQlmZXRjaF9pbmZvKCJQZWVyIHZl cmlmaWNhdGlvbiBlbmFibGVkIik7CisJCQlpZiAoY2FfY2VydF9maWxlICE9IE5VTEwpCisJCQkJ ZmV0Y2hfaW5mbygiVXNpbmcgQ0EgY2VydCBmaWxlOiAlcyIsCisJCQkJICAgIGNhX2NlcnRfZmls ZSk7CisJCQlpZiAoY2FfY2VydF9wYXRoICE9IE5VTEwpCisJCQkJZmV0Y2hfaW5mbygiVXNpbmcg Q0EgY2VydCBwYXRoOiAlcyIsCisJCQkJICAgIGNhX2NlcnRfcGF0aCk7CisJCX0KKwkJU1NMX0NU WF9zZXRfdmVyaWZ5KGN0eCwgU1NMX1ZFUklGWV9QRUVSLAorCQkgICAgZmV0Y2hfc3NsX2NiX3Zl cmlmeV9jcnQpOworCQlTU0xfQ1RYX2xvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjdHgsIGNhX2NlcnRf ZmlsZSwKKwkJICAgIGNhX2NlcnRfcGF0aCk7CisJCWlmICgoY3JsX2ZpbGUgPSBnZXRlbnYoIlNT TF9DUkxfRklMRSIpKSAhPSBOVUxMKSB7CisJCQlpZiAodmVyYm9zZSkKKwkJCQlmZXRjaF9pbmZv KCJVc2luZyBDUkwgZmlsZTogJXMiLCBjcmxfZmlsZSk7CisJCQljcmxfc3RvcmUgPSBTU0xfQ1RY X2dldF9jZXJ0X3N0b3JlKGN0eCk7CisJCQljcmxfbG9va3VwID0gWDUwOV9TVE9SRV9hZGRfbG9v a3VwKGNybF9zdG9yZSwKKwkJCSAgICBYNTA5X0xPT0tVUF9maWxlKCkpOworCQkJaWYgKGNybF9s b29rdXAgPT0gTlVMTCB8fAorCQkJICAgICFYNTA5X2xvYWRfY3JsX2ZpbGUoY3JsX2xvb2t1cCwg Y3JsX2ZpbGUsCisJCQkJWDUwOV9GSUxFVFlQRV9QRU0pKSB7CisJCQkJZnByaW50ZihzdGRlcnIs CisJCQkJICAgICJDb3VsZCBub3QgbG9hZCBDUkwgZmlsZSAlc1xuIiwKKwkJCQkgICAgY3JsX2Zp bGUpOworCQkJCXJldHVybiAoMCk7CisJCQl9CisJCQlYNTA5X1NUT1JFX3NldF9mbGFncyhjcmxf c3RvcmUsCisJCQkgICAgWDUwOV9WX0ZMQUdfQ1JMX0NIRUNLIHwKKwkJCSAgICBYNTA5X1ZfRkxB R19DUkxfQ0hFQ0tfQUxMKTsKKwkJfQorCX0KKwlyZXR1cm4gKDEpOworfQorCisvKgorICogQ29u ZmlndXJlIGNsaWVudCBjZXJ0aWZpY2F0ZSBiYXNlZCBvbiBlbnZpcm9ubWVudC4KKyAqLworc3Rh dGljIGludAorZmV0Y2hfc3NsX3NldHVwX2NsaWVudF9jZXJ0aWZpY2F0ZShTU0xfQ1RYICpjdHgs IGludCB2ZXJib3NlKQoreworCWNvbnN0IGNoYXIgKmNsaWVudF9jZXJ0X2ZpbGUsICpjbGllbnRf a2V5X2ZpbGU7CisKKwlpZiAoKGNsaWVudF9jZXJ0X2ZpbGUgPSBnZXRlbnYoIlNTTF9DTElFTlRf Q0VSVF9GSUxFIikpICE9IE5VTEwpIHsKKwkJY2xpZW50X2tleV9maWxlID0gZ2V0ZW52KCJTU0xf Q0xJRU5UX0tFWV9GSUxFIikgIT0gTlVMTCA/CisJCSAgICBnZXRlbnYoIlNTTF9DTElFTlRfS0VZ X0ZJTEUiKSA6IGNsaWVudF9jZXJ0X2ZpbGU7CisJCWlmICh2ZXJib3NlKSB7CisJCQlmZXRjaF9p bmZvKCJVc2luZyBjbGllbnQgY2VydCBmaWxlOiAlcyIsCisJCQkgICAgY2xpZW50X2NlcnRfZmls ZSk7CisJCQlmZXRjaF9pbmZvKCJVc2luZyBjbGllbnQga2V5IGZpbGU6ICVzIiwKKwkJCSAgICBj bGllbnRfa2V5X2ZpbGUpOworCQl9CisJCWlmIChTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZV9jaGFp bl9maWxlKGN0eCwKKwkJCWNsaWVudF9jZXJ0X2ZpbGUpICE9IDEpIHsKKwkJCWZwcmludGYoc3Rk ZXJyLAorCQkJICAgICJDb3VsZCBub3QgbG9hZCBjbGllbnQgY2VydGlmaWNhdGUgJXNcbiIsCisJ CQkgICAgY2xpZW50X2NlcnRfZmlsZSk7CisJCQlyZXR1cm4gKDApOworCQl9CisJCWlmIChTU0xf Q1RYX3VzZV9Qcml2YXRlS2V5X2ZpbGUoY3R4LCBjbGllbnRfa2V5X2ZpbGUsCisJCQlTU0xfRklM RVRZUEVfUEVNKSAhPSAxKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwKKwkJCSAgICAiQ291bGQgbm90 IGxvYWQgY2xpZW50IGtleSAlc1xuIiwKKwkJCSAgICBjbGllbnRfa2V5X2ZpbGUpOworCQkJcmV0 dXJuICgwKTsKKwkJfQorCX0KKwlyZXR1cm4gKDEpOworfQorCisvKgorICogQ2FsbGJhY2sgZm9y IFNTTCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24sIHRoaXMgaXMgY2FsbGVkIG9uIHNlcnZlcgor ICogY2VydCB2ZXJpZmljYXRpb24uIEl0IHRha2VzIG5vIGRlY2lzaW9uLCBidXQgaW5mb3JtcyB0 aGUgdXNlciBpbiBjYXNlCisgKiB2ZXJpZmljYXRpb24gZmFpbGVkLgorICovCitpbnQKK2ZldGNo X3NzbF9jYl92ZXJpZnlfY3J0KGludCB2ZXJpZmllZCwgWDUwOV9TVE9SRV9DVFggKmN0eCkKK3sK KwlYNTA5ICpjcnQ7CisJWDUwOV9OQU1FICpuYW1lOworCWNoYXIgKnN0cjsKKworCXN0ciA9IE5V TEw7CisJaWYgKCF2ZXJpZmllZCkgeworCQlpZiAoKGNydCA9IFg1MDlfU1RPUkVfQ1RYX2dldF9j dXJyZW50X2NlcnQoY3R4KSkgIT0gTlVMTCAmJgorCQkgICAgKG5hbWUgPSBYNTA5X2dldF9zdWJq ZWN0X25hbWUoY3J0KSkgIT0gTlVMTCkKKwkJCXN0ciA9IFg1MDlfTkFNRV9vbmVsaW5lKG5hbWUs IDAsIDApOworCQlmcHJpbnRmKHN0ZGVyciwgIkNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBmYWls ZWQgZm9yICVzXG4iLAorCQkgICAgc3RyICE9IE5VTEwgPyBzdHIgOiAibm8gcmVsZXZhbnQgY2Vy dGlmaWNhdGUiKTsKKwkJT1BFTlNTTF9mcmVlKHN0cik7CisJfQorCXJldHVybiAodmVyaWZpZWQp OworfQorCisjZW5kaWYKIAogLyoKICAqIEVuYWJsZSBTU0wgb24gYSBjb25uZWN0aW9uLgogICov CiBpbnQKLWZldGNoX3NzbChjb25uX3QgKmNvbm4sIGludCB2ZXJib3NlKQorZmV0Y2hfc3NsKGNv bm5fdCAqY29ubiwgY29uc3Qgc3RydWN0IHVybCAqVVJMLCBpbnQgdmVyYm9zZSkKIHsKICNpZmRl ZiBXSVRIX1NTTAogCWludCByZXQsIHNzbF9lcnI7CisJWDUwOV9OQU1FICpuYW1lOworCWNoYXIg KnN0cjsKIAogCS8qIEluaXQgdGhlIFNTTCBsaWJyYXJ5IGFuZCBjb250ZXh0ICovCiAJaWYgKCFT U0xfbGlicmFyeV9pbml0KCkpewpAQCAtMzM5LDggKzgxNywxNCBAQCBmZXRjaF9zc2woY29ubl90 ICpjb25uLCBpbnQgdmVyYm9zZSkKIAljb25uLT5zc2xfY3R4ID0gU1NMX0NUWF9uZXcoY29ubi0+ c3NsX21ldGgpOwogCVNTTF9DVFhfc2V0X21vZGUoY29ubi0+c3NsX2N0eCwgU1NMX01PREVfQVVU T19SRVRSWSk7CiAKKwlmZXRjaF9zc2xfc2V0dXBfdHJhbnNwb3J0X2xheWVyKGNvbm4tPnNzbF9j dHgsIHZlcmJvc2UpOworCWlmICghZmV0Y2hfc3NsX3NldHVwX3BlZXJfdmVyaWZpY2F0aW9uKGNv bm4tPnNzbF9jdHgsIHZlcmJvc2UpKQorCQlyZXR1cm4gKC0xKTsKKwlpZiAoIWZldGNoX3NzbF9z ZXR1cF9jbGllbnRfY2VydGlmaWNhdGUoY29ubi0+c3NsX2N0eCwgdmVyYm9zZSkpCisJCXJldHVy biAoLTEpOworCiAJY29ubi0+c3NsID0gU1NMX25ldyhjb25uLT5zc2xfY3R4KTsKLQlpZiAoY29u bi0+c3NsID09IE5VTEwpeworCWlmIChjb25uLT5zc2wgPT0gTlVMTCkgewogCQlmcHJpbnRmKHN0 ZGVyciwgIlNTTCBjb250ZXh0IGNyZWF0aW9uIGZhaWxlZFxuIik7CiAJCXJldHVybiAoLTEpOwog CX0KQEAgLTM1MywyMiArODM3LDM1IEBAIGZldGNoX3NzbChjb25uX3QgKmNvbm4sIGludCB2ZXJi b3NlKQogCQkJcmV0dXJuICgtMSk7CiAJCX0KIAl9CisJY29ubi0+c3NsX2NlcnQgPSBTU0xfZ2V0 X3BlZXJfY2VydGlmaWNhdGUoY29ubi0+c3NsKTsKIAotCWlmICh2ZXJib3NlKSB7Ci0JCVg1MDlf TkFNRSAqbmFtZTsKLQkJY2hhciAqc3RyOworCWlmIChjb25uLT5zc2xfY2VydCA9PSBOVUxMKSB7 CisJCWZwcmludGYoc3RkZXJyLCAiTm8gc2VydmVyIFNTTCBjZXJ0aWZpY2F0ZVxuIik7CisJCXJl dHVybiAoLTEpOworCX0KIAotCQlmcHJpbnRmKHN0ZGVyciwgIlNTTCBjb25uZWN0aW9uIGVzdGFi bGlzaGVkIHVzaW5nICVzXG4iLAorCWlmIChnZXRlbnYoIlNTTF9OT19WRVJJRllfSE9TVE5BTUUi KSA9PSBOVUxMKSB7CisJCWlmICh2ZXJib3NlKQorCQkJZmV0Y2hfaW5mbygiVmVyaWZ5IGhvc3Ru YW1lIik7CisJCWlmICghZmV0Y2hfc3NsX3ZlcmlmeV9obmFtZShjb25uLT5zc2xfY2VydCwgVVJM LT5ob3N0KSkgeworCQkJZnByaW50ZihzdGRlcnIsCisJCQkgICAgIlNTTCBjZXJ0aWZpY2F0ZSBz dWJqZWN0IGRvZXNuJ3QgbWF0Y2ggaG9zdCAlc1xuIiwKKwkJCSAgICBVUkwtPmhvc3QpOworCQkJ cmV0dXJuICgtMSk7CisJCX0KKwl9CisKKwlpZiAodmVyYm9zZSkgeworCQlmZXRjaF9pbmZvKCJT U0wgY29ubmVjdGlvbiBlc3RhYmxpc2hlZCB1c2luZyAlcyIsCiAJCSAgICBTU0xfZ2V0X2NpcGhl cihjb25uLT5zc2wpKTsKLQkJY29ubi0+c3NsX2NlcnQgPSBTU0xfZ2V0X3BlZXJfY2VydGlmaWNh dGUoY29ubi0+c3NsKTsKIAkJbmFtZSA9IFg1MDlfZ2V0X3N1YmplY3RfbmFtZShjb25uLT5zc2xf Y2VydCk7CiAJCXN0ciA9IFg1MDlfTkFNRV9vbmVsaW5lKG5hbWUsIDAsIDApOwotCQlwcmludGYo IkNlcnRpZmljYXRlIHN1YmplY3Q6ICVzXG4iLCBzdHIpOwotCQlmcmVlKHN0cik7CisJCWZldGNo X2luZm8oIkNlcnRpZmljYXRlIHN1YmplY3Q6ICVzIiwgc3RyKTsKKwkJT1BFTlNTTF9mcmVlKHN0 cik7CiAJCW5hbWUgPSBYNTA5X2dldF9pc3N1ZXJfbmFtZShjb25uLT5zc2xfY2VydCk7CiAJCXN0 ciA9IFg1MDlfTkFNRV9vbmVsaW5lKG5hbWUsIDAsIDApOwotCQlwcmludGYoIkNlcnRpZmljYXRl IGlzc3VlcjogJXNcbiIsIHN0cik7Ci0JCWZyZWUoc3RyKTsKKwkJZmV0Y2hfaW5mbygiQ2VydGlm aWNhdGUgaXNzdWVyOiAlcyIsIHN0cik7CisJCU9QRU5TU0xfZnJlZShzdHIpOwogCX0KIAogCXJl dHVybiAoMCk7CkBAIC03MjYsNiArMTIyMywyMiBAQCBmZXRjaF9jbG9zZShjb25uX3QgKmNvbm4p CiAKIAlpZiAoLS1jb25uLT5yZWYgPiAwKQogCQlyZXR1cm4gKDApOworI2lmZGVmIFdJVEhfU1NM CisJaWYgKGNvbm4tPnNzbCkgeworCQlTU0xfc2h1dGRvd24oY29ubi0+c3NsKTsKKwkJU1NMX3Nl dF9jb25uZWN0X3N0YXRlKGNvbm4tPnNzbCk7CisJCVNTTF9mcmVlKGNvbm4tPnNzbCk7CisJCWNv bm4tPnNzbCA9IE5VTEw7CisJfQorCWlmIChjb25uLT5zc2xfY3R4KSB7CisJCVNTTF9DVFhfZnJl ZShjb25uLT5zc2xfY3R4KTsKKwkJY29ubi0+c3NsX2N0eCA9IE5VTEw7CisJfQorCWlmIChjb25u LT5zc2xfY2VydCkgeworCQlYNTA5X2ZyZWUoY29ubi0+c3NsX2NlcnQpOworCQljb25uLT5zc2xf Y2VydCA9IE5VTEw7CisJfQorI2VuZGlmCiAJcmV0ID0gY2xvc2UoY29ubi0+c2QpOwogCWZyZWUo Y29ubi0+Y2FjaGUuYnVmKTsKIAlmcmVlKGNvbm4tPmJ1Zik7CgpNb2RpZmllZDogaGVhZC9saWIv bGliZmV0Y2gvY29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBoZWFkL2xpYi9saWJm ZXRjaC9jb21tb24uaAlGcmkgSnVsIDI2IDE0OjQzOjM4IDIwMTMJKHIyNTM2NzkpCisrKyBoZWFk L2xpYi9saWJmZXRjaC9jb21tb24uaAlGcmkgSnVsIDI2IDE1OjUzOjQzIDIwMTMJKHIyNTM2ODAp CkBAIC04Nyw3ICs4NywxMCBAQCBpbnQJCSBmZXRjaF9iaW5kKGludCwgaW50LCBjb25zdCBjaGFy ICopCiBjb25uX3QJCSpmZXRjaF9jb25uZWN0KGNvbnN0IGNoYXIgKiwgaW50LCBpbnQsIGludCk7 CiBjb25uX3QJCSpmZXRjaF9yZW9wZW4oaW50KTsKIGNvbm5fdAkJKmZldGNoX3JlZihjb25uX3Qg Kik7Ci1pbnQJCSBmZXRjaF9zc2woY29ubl90ICosIGludCk7CisjaWZkZWYgV0lUSF9TU0wKK2lu dAkJIGZldGNoX3NzbF9jYl92ZXJpZnlfY3J0KGludCwgWDUwOV9TVE9SRV9DVFgqKTsKKyNlbmRp ZgoraW50CQkgZmV0Y2hfc3NsKGNvbm5fdCAqLCBjb25zdCBzdHJ1Y3QgdXJsICosIGludCk7CiBz c2l6ZV90CQkgZmV0Y2hfcmVhZChjb25uX3QgKiwgY2hhciAqLCBzaXplX3QpOwogaW50CQkgZmV0 Y2hfZ2V0bG4oY29ubl90ICopOwogc3NpemVfdAkJIGZldGNoX3dyaXRlKGNvbm5fdCAqLCBjb25z dCBjaGFyICosIHNpemVfdCk7CgpNb2RpZmllZDogaGVhZC9saWIvbGliZmV0Y2gvZmV0Y2guMwo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tIGhlYWQvbGliL2xpYmZldGNoL2ZldGNoLjMJRnJpIEp1 bCAyNiAxNDo0MzozOCAyMDEzCShyMjUzNjc5KQorKysgaGVhZC9saWIvbGliZmV0Y2gvZmV0Y2gu MwlGcmkgSnVsIDI2IDE1OjUzOjQzIDIwMTMJKHIyNTM2ODApCkBAIC0xLDUgKzEsNiBAQAogLlwi LQogLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDExIERhZy1FcmxpbmcgU23DuHJncmF2CisuXCIg Q29weXJpZ2h0IChjKSAyMDEzIE1pY2hhZWwgR21lbGluIDxmcmVlYnNkQGdyZW0uZGU+CiAuXCIg QWxsIHJpZ2h0cyByZXNlcnZlZC4KIC5cIgogLlwiIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjUsNyArMjYsNyBA QAogLlwiCiAuXCIgJEZyZWVCU0QkCiAuXCIKLS5EZCBTZXB0ZW1iZXIgMjcsIDIwMTEKKy5EZCBK YW51YXJ5IDI1LCAyMDEzCiAuRHQgRkVUQ0ggMwogLk9zCiAuU2ggTkFNRQpAQCAtMzkyLDYgKzM5 Myw2MCBAQCBtZXRob2QgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHRoZSByCiBsaWJyYXJ5 LAogLkZuIGZldGNoUHV0SFRUUAogaXMgY3VycmVudGx5IHVuaW1wbGVtZW50ZWQuCisuU2ggSFRU UFMgU0NIRU1FCitCYXNlZCBvbiBIVFRQIFNDSEVNRS4KK0J5IGRlZmF1bHQgdGhlIHBlZXIgaXMg dmVyaWZpZWQgdXNpbmcgdGhlIENBIGJ1bmRsZSBsb2NhdGVkIGluCisuUGEgL2V0Yy9zc2wvY2Vy dC5wZW0gLgorVGhlIGZpbGUgbWF5IGNvbnRhaW4gbXVsdGlwbGUgQ0EgY2VydGlmaWNhdGVzLgor QSBjb21tb24gc291cmNlIG9mIGEgY3VycmVudCBDQSBidW5kbGUgaXMKKy5QYSBcJXNlY3VyaXR5 L2NhX3Jvb3RfbnNzIC4KKy5QcAorVGhlIENBIGJ1bmRsZSB1c2VkIGZvciBwZWVyIHZlcmlmaWNh dGlvbiBjYW4gYmUgY2hhbmdlZCBieSBzZXR0aW5nIHRoZQorZW52aXJvbm1lbnQgdmFyaWFibGVz CisuRXYgU1NMX0NBX0NFUlRfRklMRQordG8gcG9pbnQgdG8gYSBjb25jYXRlbmF0ZWQgYnVuZGxl IG9mIHRydXN0ZWQgY2VydGlmaWNhdGVzIGFuZAorLkV2IFNTTF9DQV9DRVJUX1BBVEgKK3RvIHBv aW50IHRvIGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgaGFzaGVzIG9mIHRydXN0ZWQgQ0FzIChzZWUK Ky5YciB2ZXJpZnkgMSApIC4KKy5QcAorQSBjZXJ0aWZpY2F0ZSByZXZvY2F0aW9uIGxpc3QgKENS TCkgY2FuIGJlIHVzZWQgYnkgc2V0dGluZyB0aGUKK2Vudmlyb25tZW50IHZhcmlhYmxlCisuRXYg U1NMX0NSTF9GSUxFCisoc2VlCisuWHIgY3JsIDEgKSAuCisuUHAKK1BlZXIgdmVyaWZpY2F0aW9u IGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQorLkV2 IFNTTF9OT19WRVJJRllfUEVFUiAuCitOb3RlIHRoYXQgdGhpcyBhbHNvIGRpc2FibGVzIENSTCBj aGVja2luZy4KKy5QcAorQnkgZGVmYXVsdCB0aGUgc2VydmljZSBpZGVudGl0eSBpcyB2ZXJpZmll ZCBhY2NvcmRpbmcgdG8gdGhlIHJ1bGVzCitkZXRhaWxlZCBpbiBSRkM2MTI1IChhbHNvIGtub3du IGFzIGhvc3RuYW1lIHZlcmlmaWNhdGlvbikuCitUaGlzIGZlYXR1cmUgY2FuIGJlIGRpc2FibGVk IGJ5IHNldHRpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCisuRXYgU1NMX05PX1ZFUklGWV9I T1NUTkFNRSAuCisuUHAKK0NsaWVudCBjZXJ0aWZpY2F0ZSBiYXNlZCBhdXRoZW50aWNhdGlvbiBp cyBzdXBwb3J0ZWQuCitUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUKKy5FdiBTU0xfQ0xJRU5UX0NF UlRfRklMRQorc2hvdWxkIGJlIHNldCB0byBwb2ludCB0byBhIGZpbGUgY29udGFpbmluZyBrZXkg YW5kIGNsaWVudCBjZXJ0aWZpY2F0ZQordG8gYmUgdXNlZCBpbiBQRU0gZm9ybWF0LiBJbiBjYXNl IHRoZSBrZXkgaXMgc3RvcmVkIGluIGEgc2VwYXJhdGUKK2ZpbGUsIHRoZSBlbnZpcm9ubWVudCB2 YXJpYWJsZQorLkV2IFNTTF9DTElFTlRfS0VZX0ZJTEUKK2NhbiBiZSBzZXQgdG8gcG9pbnQgdG8g dGhlIGtleSBpbiBQRU0gZm9ybWF0LgorSW4gY2FzZSB0aGUga2V5IHVzZXMgYSBwYXNzd29yZCwg dGhlIHVzZXIgd2lsbCBiZSBwcm9tcHRlZCBvbiBzdGFuZGFyZAoraW5wdXQgKHNlZQorLlhyIFBF TSAzICkgLgorLlBwCitCeSBkZWZhdWx0CisuTm0gbGliZmV0Y2gKK2FsbG93cyBTU0x2MyBhbmQg VExTdjEgd2hlbiBuZWdvdGlhdGluZyB0aGUgY29ubmVjdGluZyB3aXRoIHRoZSByZW1vdGUKK3Bl ZXIuCitZb3UgY2FuIGNoYW5nZSB0aGlzIGJlaGF2aW9yIGJ5IHNldHRpbmcgdGhlIGVudmlyb25t ZW50IHZhcmlhYmxlCisuRXYgU1NMX0FMTE9XX1NTTDIKK3RvIGFsbG93IFNTTHYyIChub3QgcmVj b21tZW5kZWQpIGFuZAorLkV2IFNTTF9OT19TU0wzCitvcgorLkV2IFNTTF9OT19UTFMxCit0byBk aXNhYmxlIHRoZSByZXNwZWN0aXZlIG1ldGhvZHMuCiAuU2ggQVVUSEVOVElDQVRJT04KIEFwYXJ0 IGZyb20gc2V0dGluZyB0aGUgYXBwcm9wcmlhdGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFuZAog c3BlY2lmeWluZyB0aGUgdXNlciBuYW1lIGFuZCBwYXNzd29yZCBpbiB0aGUgVVJMIG9yIHRoZQpA QCAtNTc5LDYgKzYzNCwzMSBAQCB3aGljaCBwcm94aWVzIHNob3VsZCBub3QgYmUgdXNlZC4KIFNh bWUgYXMKIC5FdiBOT19QUk9YWSAsCiBmb3IgY29tcGF0aWJpbGl0eS4KKy5JdCBFdiBTU0xfQUxM T1dfU1NMMgorQWxsb3cgU1NMIHZlcnNpb24gMiB3aGVuIG5lZ290aWF0aW5nIHRoZSBjb25uZWN0 aW9uIChub3QgcmVjb21tZW5kZWQpLgorLkl0IEV2IFNTTF9DQV9DRVJUX0ZJTEUKK0NBIGNlcnRp ZmljYXRlIGJ1bmRsZSBjb250YWluaW5nIHRydXN0ZWQgQ0EgY2VydGlmaWNhdGVzLgorRGVmYXVs dCB2YWx1ZToKKy5QYSAvZXRjL3NzbC9jZXJ0LnBlbSAuCisuSXQgRXYgU1NMX0NBX0NFUlRfUEFU SAorUGF0aCBjb250YWluaW5nIHRydXN0ZWQgQ0EgaGFzaGVzLgorLkl0IEV2IFNTTF9DTElFTlRf Q0VSVF9GSUxFCitQRU0gZW5jb2RlZCBjbGllbnQgY2VydGlmaWNhdGUva2V5IHdoaWNoIHdpbGwg YmUgdXNlZCBpbgorY2xpZW50IGNlcnRpZmljYXRlIGF1dGhlbnRpY2F0aW9uLgorLkl0IEV2IFNT TF9DTElFTlRfS0VZX0ZJTEUKK1BFTSBlbmNvZGVkIGNsaWVudCBrZXkgaW4gY2FzZSBrZXkgYW5k IGNsaWVudCBjZXJ0aWZpY2F0ZQorYXJlIHN0b3JlZCBzZXBhcmF0ZWx5LgorLkl0IEV2IFNTTF9D UkxfRklMRQorRmlsZSBjb250YWluaW5nIGNlcnRpZmljYXRlIHJldm9jYXRpb24gbGlzdC4KKy5J dCBFdiBTU0xfTk9fU1NMMworRG9uJ3QgYWxsb3cgU1NMIHZlcnNpb24gMyB3aGVuIG5lZ290aWF0 aW5nIHRoZSBjb25uZWN0aW9uLgorLkl0IEV2IFNTTF9OT19UTFMxCitEb24ndCBhbGxvdyBUTFYg dmVyc2lvbiAxIHdoZW4gbmVnb3RpYXRpbmcgdGhlIGNvbm5lY3Rpb24uCisuSXQgRXYgU1NMX05P X1ZFUklGWV9IT1NUTkFNRQorSWYgc2V0LCBkbyBub3QgdmVyaWZ5IHRoYXQgdGhlIGhvc3RuYW1l IG1hdGNoZXMgdGhlIHN1YmplY3Qgb2YgdGhlCitjZXJ0aWZpY2F0ZSBwcmVzZW50ZWQgYnkgdGhl IHNlcnZlci4KKy5JdCBFdiBTU0xfTk9fVkVSSUZZX1BFRVIKK0lmIHNldCwgZG8gbm90IHZlcmlm eSB0aGUgcGVlciBjZXJ0aWZpY2F0ZSBhZ2FpbnN0IHRydXN0ZWQgQ0FzLgogLkVsCiAuU2ggRVhB TVBMRVMKIFRvIGFjY2VzcyBhIHByb3h5IHNlcnZlciBvbgpAQCAtNjEwLDYgKzY5MCwxOSBAQCBh cyBmb2xsb3dzOgogLkJkIC1saXRlcmFsIC1vZmZzZXQgaW5kZW50CiBOT19QUk9YWT1sb2NhbGhv c3QsMTI3LjAuMC4xCiAuRWQKKy5QcAorQWNjZXNzIEhUVFBTIHdlYnNpdGUgd2l0aG91dCBhbnkg Y2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIHdoYXRzb2V2ZXI6CisuQmQgLWxpdGVyYWwgLW9mZnNl dCBpbmRlbnQKK1NTTF9OT19WRVJJRllfUEVFUj0xCitTU0xfTk9fVkVSSUZZX0hPU1ROQU1FPTEK Ky5FZAorLlBwCitBY2Nlc3MgSFRUUFMgd2Vic2l0ZSB1c2luZyBjbGllbnQgY2VydGlmaWNhdGUg YmFzZWQgYXV0aGVudGljYXRpb24KK2FuZCBhIHByaXZhdGUgQ0E6CisuQmQgLWxpdGVyYWwgLW9m ZnNldCBpbmRlbnQKK1NTTF9DTElFTlRfQ0VSVF9GSUxFPS9wYXRoL3RvL2NsaWVudC5wZW0KK1NT TF9DQV9DRVJUX0ZJTEU9L3BhdGgvdG8vbXljYS5wZW0KKy5FZAogLlNoIFNFRSBBTFNPCiAuWHIg ZmV0Y2ggMSAsCiAuWHIgZnRwaW8gMyAsCkBAIC02NzgsNyArNzcxLDggQEAgd2l0aCBudW1lcm91 cyBzdWdnZXN0aW9ucyBhbmQgY29udHJpYnV0aQogLkFuIEhhamltdSBVbWVtb3RvIEFxIHVtZUBG cmVlQlNELm9yZyAsCiAuQW4gSGVucnkgV2hpbmN1cCBBcSBoZW5yeUB0ZWNoaWVib2QuY29tICwK IC5BbiBKdWtrYSBBLiBVa2tvbmVuIEFxIGphdUBpa2kuZmkgLAotLkFuIEplYW4tRnJhblwoLGNv aXMgRG9ja2VzIEFxIGpmQGRvY2tlcy5vcmcKKy5BbiBKZWFuLUZyYW5cKCxjb2lzIERvY2tlcyBB cSBqZkBkb2NrZXMub3JnICwKKy5BbiBNaWNoYWVsIEdtZWxpbiBBcSBmcmVlYnNkQGdyZW0uZGUK IGFuZCBvdGhlcnMuCiBJdCByZXBsYWNlcyB0aGUgb2xkZXIKIC5ObSBmdHBpbwpAQCAtNjg4LDcg Kzc4Miw5IEBAIGFuZAogLkFuIEpvcmRhbiBLLiBIdWJiYXJkIEFxIGpraEBGcmVlQlNELm9yZyAu CiAuUHAKIFRoaXMgbWFudWFsIHBhZ2Ugd2FzIHdyaXR0ZW4gYnkKLS5BbiBEYWctRXJsaW5nIFNt XCgvb3JncmF2IEFxIGRlc0BGcmVlQlNELm9yZyAuCisuQW4gRGFnLUVybGluZyBTbVwoL29yZ3Jh diBBcSBkZXNARnJlZUJTRC5vcmcKK2FuZAorLkFuIE1pY2hhZWwgR21lbGluIEFxIGZyZWVic2RA Z3JlbS5kZSAuCiAuU2ggQlVHUwogU29tZSBwYXJ0cyBvZiB0aGUgbGlicmFyeSBhcmUgbm90IHll dCBpbXBsZW1lbnRlZC4KIFRoZSBtb3N0IG5vdGFibGUKQEAgLTcxNyw2ICs4MTMsMTAgQEAgaW1w bGVtZW50ZWQsIHN1cGVyZmx1b3VzIGF0IHRoaXMgc2l0ZSIgaQogLkZuIGZldGNoU3RhdEZUUAog ZG9lcyBub3QgY2hlY2sgdGhhdCB0aGUgcmVzdWx0IG9mIGFuIE1EVE0gY29tbWFuZCBpcyBhIHZh bGlkIGRhdGUuCiAuUHAKK0luIGNhc2UgcGFzc3dvcmQgcHJvdGVjdGVkIGtleXMgYXJlIHVzZWQg Zm9yIGNsaWVudCBjZXJ0aWZpY2F0ZSBiYXNlZAorYXV0aGVudGljYXRpb24gdGhlIHVzZXIgaXMg cHJvbXB0ZWQgZm9yIHRoZSBwYXNzd29yZCBvbiBlYWNoIGFuZCBldmVyeQorZmV0Y2ggb3BlcmF0 aW9uLgorLlBwCiBUaGUgbWFuIHBhZ2UgaXMgaW5jb21wbGV0ZSwgcG9vcmx5IHdyaXR0ZW4gYW5k IHByb2R1Y2VzIGJhZGx5CiBmb3JtYXR0ZWQgdGV4dC4KIC5QcAoKTW9kaWZpZWQ6IGhlYWQvbGli L2xpYmZldGNoL2h0dHAuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGhlYWQvbGliL2xpYmZl dGNoL2h0dHAuYwlGcmkgSnVsIDI2IDE0OjQzOjM4IDIwMTMJKHIyNTM2NzkpCisrKyBoZWFkL2xp Yi9saWJmZXRjaC9odHRwLmMJRnJpIEp1bCAyNiAxNTo1Mzo0MyAyMDEzCShyMjUzNjgwKQpAQCAt MTQwOCw3ICsxNDA4LDcgQEAgaHR0cF9jb25uZWN0KHN0cnVjdCB1cmwgKlVSTCwgc3RydWN0IHVy bAogCQlodHRwX2dldF9yZXBseShjb25uKTsKIAl9CiAJaWYgKHN0cmNhc2VjbXAoVVJMLT5zY2hl bWUsIFNDSEVNRV9IVFRQUykgPT0gMCAmJgotCSAgICBmZXRjaF9zc2woY29ubiwgdmVyYm9zZSkg PT0gLTEpIHsKKwkgICAgZmV0Y2hfc3NsKGNvbm4sIFVSTCwgdmVyYm9zZSkgPT0gLTEpIHsKIAkJ ZmV0Y2hfY2xvc2UoY29ubik7CiAJCS8qIGdycnIgKi8KIAkJZXJybm8gPSBFQVVUSDsKCk1vZGlm aWVkOiBoZWFkL3Vzci5iaW4vZmV0Y2gvZmV0Y2guMQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IGhlYWQvdXNyLmJpbi9mZXRjaC9mZXRjaC4xCUZyaSBKdWwgMjYgMTQ6NDM6MzggMjAxMwkocjI1 MzY3OSkKKysrIGhlYWQvdXNyLmJpbi9mZXRjaC9mZXRjaC4xCUZyaSBKdWwgMjYgMTU6NTM6NDMg MjAxMwkocjI1MzY4MCkKQEAgLTM4LDIyICszOCw1MSBAQAogLlNoIFNZTk9QU0lTCiAuTm0KIC5P cCBGbCAxNDZBYWRGbE1tblBwcVJyc1V2CisuT3AgRmwgLWFsbG93LXNzbHYyCiAuT3AgRmwgQiBB ciBieXRlcworLk9wIEZsIC1iaW5kLWFkZHJlc3M9IE5zIEFyIGhvc3QKKy5PcCBGbCAtY2EtY2Vy dD0gTnMgQXIgZmlsZQorLk9wIEZsIC1jYS1wYXRoPSBOcyBBciBkaXIKKy5PcCBGbCAtY2VydD0g TnMgQXIgZmlsZQorLk9wIEZsIC1jcmw9IE5zIEFyIGZpbGUKIC5PcCBGbCBpIEFyIGZpbGUKKy5P cCBGbCAta2V5PSBOcyBBciBmaWxlCiAuT3AgRmwgTiBBciBmaWxlCisuT3AgRmwgLW5vLXBhc3Np dmUKKy5PcCBGbCAtbm8tcHJveHk9IE5zIEFyIGxpc3QKKy5PcCBGbCAtbm8tc3NsdjMKKy5PcCBG bCAtbm8tdGxzdjEKKy5PcCBGbCAtbm8tdmVyaWZ5LWhvc3RuYW1lCisuT3AgRmwgLW5vLXZlcmlm eS1wZWVyCiAuT3AgRmwgbyBBciBmaWxlCisuT3AgRmwgLXJlZmVyZXI9IE5zIEFyIFVSTAogLk9w IEZsIFMgQXIgYnl0ZXMKIC5PcCBGbCBUIEFyIHNlY29uZHMKKy5PcCBGbCAtdXNlci1hZ2VudD0g TnMgQXIgYWdlbnQtc3RyaW5nCiAuT3AgRmwgdyBBciBzZWNvbmRzCiAuQXIgVVJMIC4uLgogLk5t CiAuT3AgRmwgMTQ2QWFkRmxNbW5QcHFScnNVdgogLk9wIEZsIEIgQXIgYnl0ZXMKKy5PcCBGbCAt YmluZC1hZGRyZXNzPSBOcyBBciBob3N0CisuT3AgRmwgLWNhLWNlcnQ9IE5zIEFyIGZpbGUKKy5P cCBGbCAtY2EtcGF0aD0gTnMgQXIgZGlyCisuT3AgRmwgLWNlcnQ9IE5zIEFyIGZpbGUKKy5PcCBG bCAtY3JsPSBOcyBBciBmaWxlCiAuT3AgRmwgaSBBciBmaWxlCisuT3AgRmwgLWtleT0gTnMgQXIg ZmlsZQogLk9wIEZsIE4gQXIgZmlsZQorLk9wIEZsIC1uby1wYXNzaXZlCisuT3AgRmwgLW5vLXBy b3h5PSBOcyBBciBsaXN0CisuT3AgRmwgLW5vLXNzbHYzCisuT3AgRmwgLW5vLXRsc3YxCisuT3Ag RmwgLW5vLXZlcmlmeS1ob3N0bmFtZQorLk9wIEZsIC1uby12ZXJpZnktcGVlcgogLk9wIEZsIG8g QXIgZmlsZQorLk9wIEZsIC1yZWZlcmVyPSBOcyBBciBVUkwKIC5PcCBGbCBTIEFyIGJ5dGVzCiAu T3AgRmwgVCBBciBzZWNvbmRzCisuT3AgRmwgLXVzZXItYWdlbnQ9IE5zIEFyIGFnZW50LXN0cmlu ZwogLk9wIEZsIHcgQXIgc2Vjb25kcwogLkZsIGggQXIgaG9zdCBGbCBmIEFyIGZpbGUgT28gRmwg YyBBciBkaXIgT2MKIC5TaCBERVNDUklQVElPTgpAQCAtNjcsMjMgKzk2LDI2IEBAIGNvbW1hbmQg bGluZS4KIC5QcAogVGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSBhdmFpbGFibGU6CiAuQmwgLXRh ZyAtd2lkdGggRmwKLS5JdCBGbCAxCisuSXQgRmwgMSAsIC1vbmUtZmlsZQogU3RvcCBhbmQgcmV0 dXJuIGV4aXQgY29kZSAwIGF0IHRoZSBmaXJzdCBzdWNjZXNzZnVsbHkgcmV0cmlldmVkIGZpbGUu Ci0uSXQgRmwgNAorLkl0IEZsIDQgLCAtaXB2NC1vbmx5CiBGb3JjZXMKIC5ObQogdG8gdXNlIElQ djQgYWRkcmVzc2VzIG9ubHkuCi0uSXQgRmwgNgorLkl0IEZsIDYgLCAtaXB2Ni1vbmx5CiBGb3Jj ZXMKIC5ObQogdG8gdXNlIElQdjYgYWRkcmVzc2VzIG9ubHkuCi0uSXQgRmwgQQorLkl0IEZsIEEg LCAtbm8tcmVkaXJlY3QKIERvIG5vdCBhdXRvbWF0aWNhbGx5IGZvbGxvdyBgYHRlbXBvcmFyeScn ICgzMDIpIHJlZGlyZWN0cy4KIFNvbWUgYnJva2VuIFdlYiBzaXRlcyB3aWxsIHJldHVybiBhIHJl ZGlyZWN0IGluc3RlYWQgb2YgYSBub3QtZm91bmQKIGVycm9yIHdoZW4gdGhlIHJlcXVlc3RlZCBv YmplY3QgZG9lcyBub3QgZXhpc3QuCi0uSXQgRmwgYQorLkl0IEZsIGEgLCAtcmV0cnkKIEF1dG9t YXRpY2FsbHkgcmV0cnkgdGhlIHRyYW5zZmVyIHVwb24gc29mdCBmYWlsdXJlcy4KLS5JdCBGbCBC IEFyIGJ5dGVzCisuSXQgRmwgLWFsbG93LXNzbHYyCitbU1NMXQorQWxsb3cgU1NMIHZlcnNpb24g MiB3aGVuIG5lZ290aWF0aW5nIHRoZSBjb25uZWN0aW9uLgorLkl0IEZsIEIgQXIgYnl0ZXMgLCBG bCAtYnVmZmVyLXNpemU9IE5zIEFyIGJ5dGVzCiBTcGVjaWZ5IHRoZSByZWFkIGJ1ZmZlciBzaXpl IGluIGJ5dGVzLgogVGhlIGRlZmF1bHQgaXMgNDA5NiBieXRlcy4KIEF0dGVtcHRzIHRvIHNldCBh IGJ1ZmZlciBzaXplIGxvd2VyIHRoYW4gdGhpcyB3aWxsIGJlIHNpbGVudGx5CkBAIC05MiwxNSAr MTI0LDQzIEBAIFRoZSBudW1iZXIgb2YgcmVhZHMgYWN0dWFsbHkgcGVyZm9ybWVkIGkKIHR3byBv ciBoaWdoZXIgKHNlZSB0aGUKIC5GbCB2CiBmbGFnKS4KKy5JdCBGbCAtYmluZC1hZGRyZXNzPSBO cyBBciBob3N0CitTcGVjaWZpZXMgYSBob3N0bmFtZSBvciBJUCBhZGRyZXNzIHRvIHdoaWNoIHNv Y2tldHMgdXNlZCBmb3Igb3V0Z29pbmcKK2Nvbm5lY3Rpb25zIHdpbGwgYmUgYm91bmQuCiAuSXQg RmwgYyBBciBkaXIKIFRoZSBmaWxlIHRvIHJldHJpZXZlIGlzIGluIGRpcmVjdG9yeQogLkFyIGRp cgogb24gdGhlIHJlbW90ZSBob3N0LgogVGhpcyBvcHRpb24gaXMgZGVwcmVjYXRlZCBhbmQgaXMg cHJvdmlkZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKIG9ubHkuCi0uSXQgRmwgZAorLkl0 IEZsIC1jYS1jZXJ0PSBOcyBBciBmaWxlCitbU1NMXQorUGF0aCB0byBjZXJ0aWZpY2F0ZSBidW5k bGUgY29udGFpbmluZyB0cnVzdGVkIENBIGNlcnRpZmljYXRlcy4gCitJZiBub3Qgc3BlY2lmaWVk LAorLlBhIC9ldGMvc3NsL2NlcnQucGVtCitpcyB1c2VkLgorVGhlIGZpbGUgbWF5IGNvbnRhaW4g bXVsdGlwbGUgQ0EgY2VydGlmaWNhdGVzLiBUaGUgcG9ydAorLlBhIHNlY3VyaXR5L2NhX3Jvb3Rf bnNzCitpcyBhIGNvbW1vbiBzb3VyY2Ugb2YgYSBjdXJyZW50IENBIGJ1bmRsZS4KKy5JdCBGbCAt Y2EtcGF0aD0gTnMgQXIgZGlyCitbU1NMXQorVGhlIGRpcmVjdG9yeQorLkFyIGRpcgorY29udGFp bnMgdHJ1c3RlZCBDQSBoYXNoZXMuCisuSXQgRmwgLWNlcnQ9IE5zIEFyIGZpbGUKK1tTU0xdCisu QXIgZmlsZQoraXMgYSBQRU0gZW5jb2RlZCBjbGllbnQgY2VydGlmaWNhdGUva2V5IHdoaWNoIHdp bGwgYmUgdXNlZCBpbgorY2xpZW50IGNlcnRpZmljYXRlIGF1dGhlbnRpY2F0aW9uLgorLkl0IEZs IC1jcmw9IE5zIEFyIGZpbGUKK1tTU0xdCitQb2ludHMgdG8gY2VydGlmaWNhdGUgcmV2b2NhdGlv biBsaXN0CisuQXIgZmlsZSAsCit3aGljaCBoYXMgdG8gYmUgaW4gUEVNIGZvcm1hdCBhbmQgbWF5 IGNvbnRhaW4gcGVlciBjZXJ0aWZpY2F0ZXMgdGhhdCBoYXZlCitiZWVuIHJldm9rZWQuCisuSXQg RmwgZCAsIC1kaXJlY3QKIFVzZSBhIGRpcmVjdCBjb25uZWN0aW9uIGV2ZW4gaWYgYSBwcm94eSBp cyBjb25maWd1cmVkLgotLkl0IEZsIEYKKy5JdCBGbCBGICwgLWZvcmNlLXJlc3RhcnQKIEluIGNv bWJpbmF0aW9uIHdpdGggdGhlCiAuRmwgcgogZmxhZywgZm9yY2VzIGEgcmVzdGFydCBldmVuIGlm IHRoZSBsb2NhbCBhbmQgcmVtb3RlIGZpbGVzIGhhdmUKQEAgLTExOCwxNyArMTc4LDIyIEBAIFRo ZSBmaWxlIHRvIHJldHJpZXZlIGlzIGxvY2F0ZWQgb24gdGhlIGgKIC5BciBob3N0IC4KIFRoaXMg b3B0aW9uIGlzIGRlcHJlY2F0ZWQgYW5kIGlzIHByb3ZpZGVkIGZvciBiYWNrd2FyZCBjb21wYXRp YmlsaXR5CiBvbmx5LgotLkl0IEZsIGkgQXIgZmlsZQorLkl0IEZsIGkgQXIgZmlsZSAsIEZsIC1p Zi1tb2RpZmllZC1zaW5jZT0gTnMgQXIgZmlsZQogSWYtTW9kaWZpZWQtU2luY2UgbW9kZTogdGhl IHJlbW90ZSBmaWxlIHdpbGwgb25seSBiZSByZXRyaWV2ZWQgaWYgaXQKIGlzIG5ld2VyIHRoYW4K IC5BciBmaWxlCiBvbiB0aGUgbG9jYWwgaG9zdC4KIChIVFRQIG9ubHkpCi0uSXQgRmwgbAorLkl0 IEZsIC1rZXk9IE5zIEFyIGZpbGUKK1tTU0xdCisuQXIgZmlsZQoraXMgYSBQRU0gZW5jb2RlZCBj bGllbnQga2V5IHRoYXQgd2lsbCBiZSB1c2VkIGluIGNsaWVudCBjZXJ0aWZpY2F0ZQorYXV0aGVu dGljYXRpb24gaW4gY2FzZSBrZXkgYW5kIGNsaWVudCBjZXJ0aWZpY2F0ZSBhcmUgc3RvcmVkIHNl cGFyYXRlbHkuCisuSXQgRmwgbCAsIC1zeW1saW5rCiBJZiB0aGUgdGFyZ2V0IGlzIGEgZmlsZS1z Y2hlbWUgVVJMLCBtYWtlIGEgc3ltYm9saWMgbGluayB0byB0aGUgdGFyZ2V0CiByYXRoZXIgdGhh biB0cnlpbmcgdG8gY29weSBpdC4KIC5JdCBGbCBNCi0uSXQgRmwgbQorLkl0IEZsIG0gLCAtbWly cm9yCiBNaXJyb3IgbW9kZTogaWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMgbG9jYWxseSBhbmQg aGFzIHRoZSBzYW1lIHNpemUKIGFuZCBtb2RpZmljYXRpb24gdGltZSBhcyB0aGUgcmVtb3RlIGZp bGUsIGl0IHdpbGwgbm90IGJlIGZldGNoZWQuCiBOb3RlIHRoYXQgdGhlCkBAIC0xMzYsNyArMjAx LDcgQEAgTm90ZSB0aGF0IHRoZQogYW5kCiAuRmwgcgogZmxhZ3MgYXJlIG11dHVhbGx5IGV4Y2x1 c2l2ZS4KLS5JdCBGbCBOIEFyIGZpbGUKKy5JdCBGbCBOIEFyIGZpbGUgLCBGbCAtbmV0cmM9IE5z IEFyIGZpbGUKIFVzZQogLkFyIGZpbGUKIGluc3RlYWQgb2YKQEAgLTE0Niw5ICsyMTEsMjggQEAg U2VlCiAuWHIgZnRwIDEKIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBmaWxlIGZvcm1hdC4KIFRo aXMgZmVhdHVyZSBpcyBleHBlcmltZW50YWwuCi0uSXQgRmwgbgorLkl0IEZsIG4gLCAtbm8tbXRp bWUKIERvIG5vdCBwcmVzZXJ2ZSB0aGUgbW9kaWZpY2F0aW9uIHRpbWUgb2YgdGhlIHRyYW5zZmVy cmVkIGZpbGUuCi0uSXQgRmwgbyBBciBmaWxlCisuSXQgRmwgLW5vLXBhc3NpdmUKK0ZvcmNlcyB0 aGUgRlRQIGNvZGUgdG8gdXNlIGFjdGl2ZSBtb2RlLgorLkl0IEZsIC1uby1wcm94eT0gTnMgQXIg bGlzdAorRWl0aGVyIGEgc2luZ2xlIGFzdGVyaXNrLCB3aGljaCBkaXNhYmxlcyB0aGUgdXNlIG9m IHByb3hpZXMKK2FsdG9nZXRoZXIsIG9yIGEgY29tbWEtIG9yIHdoaXRlc3BhY2Utc2VwYXJhdGVk IGxpc3Qgb2YgaG9zdHMgZm9yCit3aGljaCBwcm94aWVzIHNob3VsZCBub3QgYmUgdXNlZC4KKy5J dCBGbCAtbm8tc3NsdjMKK1tTU0xdCitEb24ndCBhbGxvdyBTU0wgdmVyc2lvbiAzIHdoZW4gbmVn b3RpYXRpbmcgdGhlIGNvbm5lY3Rpb24uCisuSXQgRmwgLW5vLXRsc3YxCitbU1NMXQorRG9uJ3Qg YWxsb3cgVExTIHZlcnNpb24gMSB3aGVuIG5lZ290aWF0aW5nIHRoZSBjb25uZWN0aW9uLgorLkl0 IEZsIC1uby12ZXJpZnktaG9zdG5hbWUKK1tTU0xdCitEbyBub3QgdmVyaWZ5IHRoYXQgdGhlIGhv c3RuYW1lIG1hdGNoZXMgdGhlIHN1YmplY3Qgb2YgdGhlCitjZXJ0aWZpY2F0ZSBwcmVzZW50ZWQg YnkgdGhlIHNlcnZlci4KKy5JdCBGbCAtbm8tdmVyaWZ5LXBlZXIKK1tTU0xdCitEbyBub3QgdmVy aWZ5IHRoZSBwZWVyIGNlcnRpZmljYXRlIGFnYWluc3QgdHJ1c3RlZCBDQXMuCisuSXQgRmwgbyBB ciBmaWxlICwgRmwgb3V0cHV0PSBOcyBBciBmaWxlCiBTZXQgdGhlIG91dHB1dCBmaWxlIG5hbWUg dG8KIC5BciBmaWxlIC4KIEJ5IGRlZmF1bHQsIGEgYGBwYXRobmFtZScnIGlzIGV4dHJhY3RlZCBm cm9tIHRoZSBzcGVjaWZpZWQgVVJJLCBhbmQKQEAgLTE2MywzNiArMjQ3LDQ1IEBAIElmIHRoZQog YXJndW1lbnQgaXMgYSBkaXJlY3RvcnksIGZldGNoZWQgZmlsZShzKSB3aWxsIGJlIHBsYWNlZCB3 aXRoaW4gdGhlCiBkaXJlY3RvcnksIHdpdGggbmFtZShzKSBzZWxlY3RlZCBhcyBpbiB0aGUgZGVm YXVsdCBiZWhhdmlvdXIuCiAuSXQgRmwgUAotLkl0IEZsIHAKKy5JdCBGbCBwICwgLXBhc3NpdmUK IFVzZSBwYXNzaXZlIEZUUC4KIFRoZXNlIGZsYWdzIGhhdmUgbm8gZWZmZWN0LCBzaW5jZSBwYXNz aXZlIEZUUCBpcyB0aGUgZGVmYXVsdCwgYnV0IGFyZQogcHJvdmlkZWQgZm9yIGNvbXBhdGliaWxp dHkgd2l0aCBlYXJsaWVyIHZlcnNpb25zIHdoZXJlIGFjdGl2ZSBGVFAgd2FzCiB0aGUgZGVmYXVs dC4KLVRvIGZvcmNlIGFjdGl2ZSBtb2RlLCBzZXQgdGhlCitUbyBmb3JjZSBhY3RpdmUgbW9kZSwg dXNlIHRoZQorLkZsIC1uby1wYXNzaXZlCitmbGFnIG9yIHNldCB0aGUKIC5FdiBGVFBfUEFTU0lW RV9NT0RFCiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0bwogLlFsIE5PIC4KLS5JdCBGbCBxCisuSXQg RmwgLXJlZmVyZXI9IE5zIEFyIFVSTAoKKioqIERJRkYgT1VUUFVUIFRSVU5DQVRFRCBBVCAxMDAw IExJTkVTICoqKgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Xwpzdm4tc3JjLWFsbEBmcmVlYnNkLm9yZyBtYWlsaW5nIGxpc3QKaHR0cDovL2xpc3RzLmZyZWVi c2Qub3JnL21haWxtYW4vbGlzdGluZm8vc3ZuLXNyYy1hbGwKVG8gdW5zdWJzY3JpYmUsIHNlbmQg YW55IG1haWwgdG8gInN2bi1zcmMtYWxsLXVuc3Vic2NyaWJlQGZyZWVic2Qub3JnIg==
文章代碼(AID): #1HyhbVVF (FB_svn)
文章代碼(AID): #1HyhbVVF (FB_svn)